def test_valid_action_response(): valid_payload = { "action_id": "6529", "status": "ACTIVE", "creator_id": "urn:globus:auth:identity:ae2a1750-d274-11e5-b867-e74762c29f57", "label": "some label", "monitor_by": [ "urn:globus:auth:identity:ca73e829-715f-4522-9dec-a507fe57a661", "urn:globus:auth:identity:ae2a1750-d274-11e5-b867-e74762c29f57", ], "manage_by": [ "urn:globus:auth:identity:ca73e829-715f-4522-9dec-a507fe57a661", "urn:globus:auth:identity:ae2a1750-d274-11e5-b867-e74762c29f57", ], "start_time": "2019-06-21T17:01:55.806781+00:00", "completion_time": "2019-06-21T17:01:55.806781+00:00", "release_after": "P30D", "display_status": "OK", "details": {"estimated_complete": "2019-06-21T17:15:04.805868+00:00"}, } valid_request = craft_validation_request( payload=valid_payload, doc_type="ActionStatus" ) result = request_validator(valid_request) assert not result.errors, result.error_msg
def test_invalid_action_request(): # invalid_payload is missing the request_id invalid_payload = {"body": {"custom": "anything goes here", "value": False}} invalid_request = craft_validation_request( payload=invalid_payload, doc_type="ActionRequest" ) result = request_validator(invalid_request) assert result.errors, result.error_msg
def flask_validate_request(request: flask.Request) -> ValidationResult: request_dict = request.get_json(force=True, silent=True) op_name = _api_operation_for_request(request) doc_type = _request_schema_types.get(op_name) if doc_type is not None: validation_request = ValidationRequest( provider_doc_type=doc_type, request_data=request_dict ) return request_validator(validation_request) else: return ValidationResult(errors=[], error_msg=None)
def flask_validate_response( request: flask.Request, response: flask.Response ) -> ValidationResult: response_data = response.get_json(force=True, silent=True) op_name = _api_operation_for_request(request) doc_type = _response_schema_types.get(op_name) # Only do response validation if it is a successful response status if doc_type is not None and (200 <= response.status_code < 299): validation_request = ValidationRequest( provider_doc_type=doc_type, request_data=response_data ) return request_validator(validation_request) else: return ValidationResult(errors=[], error_msg=None)
def test_invalid_action_response(): # invalid_payload is missing the creator_id invalid_payload = { "action_id": "zyx098", "label": "My action", "status": "ACTIVE", "details": {"is_purple": True}, "start_time": "1985-10-17 09:04:42+00:00", "release_after": "P30D", } invalid_request = craft_validation_request( payload=invalid_payload, doc_type="ActionStatus" ) result = request_validator(invalid_request) assert result.errors, result.error_msg
def test_valid_action_request(): valid_payload = { "request_id": "1234", "label": "My action", "body": {"custom": "anything goes here", "value": False}, "manage_by": [ "urn:globus:auth:identity:ca73e829-715f-4522-9dec-a507fe57a661", "urn:globus:auth:identity:ae2a1750-d274-11e5-b867-e74762c29f57", ], "monitor_by": [ "urn:globus:auth:identity:ca73e829-715f-4522-9dec-a507fe57a661", "urn:globus:auth:identity:ae2a1750-d274-11e5-b867-e74762c29f57", ], "allowed_clients": ["public"], "deadline": "2019-06-21T17:01:55.806781+00:00", "release_after": "P30D", } valid_request = craft_validation_request( payload=valid_payload, doc_type="ActionRequest" ) result = request_validator(valid_request) assert not result.errors, result.error_msg