Skip to content
Snippets Groups Projects

WS-858: unit test for `create_follow_on_capability_request`.

Closed Janet Goldstein requested to merge WS-858-followon-with-test-2022-01-11 into main
3 files
+ 84
11
Compare changes
  • Side-by-side
  • Inline
Files
3
@@ -21,6 +21,8 @@
@@ -21,6 +21,8 @@
File containing definitions for the other half of the capability side of the Workspaces REST API,
File containing definitions for the other half of the capability side of the Workspaces REST API,
concerning capability requests
concerning capability requests
"""
"""
 
# pylint: disable=E0401
 
import json
import json
from capability.views.capability_version import submit_capability_version
from capability.views.capability_version import submit_capability_version
@@ -29,6 +31,8 @@ from pyramid.request import Request
@@ -29,6 +31,8 @@ from pyramid.request import Request
from pyramid.response import Response
from pyramid.response import Response
from pyramid.view import view_config
from pyramid.view import view_config
 
from workspaces.capability.schema import CapabilityVersion
 
@view_config(route_name="view_capability_request", renderer="json")
@view_config(route_name="view_capability_request", renderer="json")
def view_capability_request(request: Request) -> Response:
def view_capability_request(request: Request) -> Response:
@@ -121,12 +125,13 @@ def create_capability_request(request: Request) -> Response:
@@ -121,12 +125,13 @@ def create_capability_request(request: Request) -> Response:
@view_config(route_name="create_follow_on_capability_request", renderer="json")
@view_config(route_name="create_follow_on_capability_request", renderer="json")
def create_follow_on_capability_request(request: Request) -> Response:
def create_follow_on_capability_request(request: Request, version: CapabilityVersion) -> Response:
"""
"""
Pyramid view that accepts a request to create a follow-on capability request from a previous request
Pyramid view that accepts a request to create a follow-on capability request from a previous request
URL: capability/request/{request_id}/followon/{followon_type}
URL: capability/request/{request_id}/followon/{followon_type}
:param request: POST request
:param request: POST request
 
:param version: version of the request for which we want to create a follow-on request
:return: 200 OK response with JSON-formatted info of newly created capability request
:return: 200 OK response with JSON-formatted info of newly created capability request
or 400 response (HTTPBadRequest) if expected parameters not given
or 400 response (HTTPBadRequest) if expected parameters not given
or 412 response (HTTPPreconditionFailed) if capability with given name does not exist and thus cannot be
or 412 response (HTTPPreconditionFailed) if capability with given name does not exist and thus cannot be
@@ -136,22 +141,24 @@ def create_follow_on_capability_request(request: Request) -> Response:
@@ -136,22 +141,24 @@ def create_follow_on_capability_request(request: Request) -> Response:
request_id = request.matchdict["request_id"]
request_id = request.matchdict["request_id"]
followon_type = request.matchdict["followon_type"]
followon_type = request.matchdict["followon_type"]
capability_request = request.capability_info.lookup_capability_request(request_id)
previous_workflow_id = request_id
parameters = capability_request.current_version.parameters
user_email = parameters["user_email"]
previous_workflow_id = capability_request.current_execution.current_workflow_request_id
metadata_content = request.workflow_service.retrieve_file_content(
metadata_content = request.workflow_service.retrieve_file_content(previous_workflow_id, "metadata.json")
followon_type, previous_workflow_id, "metadata.json"
)
metadata = json.loads(metadata_content)
metadata = json.loads(metadata_content)
cms_path = metadata["destinationDirectory"] + "/working"
cms_path = metadata["destinationDirectory"] + "/working"
sdm_id = metadata["fileSetIds"][0] if isinstance(metadata["fileSetIds"], list) else metadata["fileSetIds"]
sdm_id = metadata["fileSetIds"][0] if isinstance(metadata["fileSetIds"], list) else metadata["fileSetIds"]
new_capability_request = request.capability_info.create_capability_request(
new_capability_request = request.capability_info.create_capability_request(
followon_type, parameters={"cms_path": cms_path, "sdmId": sdm_id, "user_email": user_email}
followon_type,
 
parameters={
 
"cms_path": cms_path,
 
"sdmId": sdm_id,
 
"user_email": "jgoldste@nrao.edu",
 
"version": version.version_number,
 
"previous_workflow_request_id": previous_workflow_id,
 
"capability_name": version.capability_name,
 
},
)
)
return Response(json_body=new_capability_request.__json__())
return Response(json_body=new_capability_request.__json__())
@@ -172,6 +179,12 @@ def edit_capability_request(request: Request) -> Response:
@@ -172,6 +179,12 @@ def edit_capability_request(request: Request) -> Response:
@view_config(route_name="create_and_submit_capability_request", renderer="json")
@view_config(route_name="create_and_submit_capability_request", renderer="json")
def create_and_submit_capability_request(request: Request) -> Response:
def create_and_submit_capability_request(request: Request) -> Response:
 
"""
 
Pyramid view to reate and submit a capability request
 
 
:param request: dummy POST request
 
:return:
 
"""
response = create_capability_request(request)
response = create_capability_request(request)
capability_request = request.capability_info.lookup_capability_request(response.json_body["id"])
capability_request = request.capability_info.lookup_capability_request(response.json_body["id"])
request.matchdict = {
request.matchdict = {
Loading