From f206d6888aafe62c5bb3b9d9d132f283c56e0710 Mon Sep 17 00:00:00 2001 From: Henning Jacobs Date: Thu, 29 Sep 2016 19:12:36 +0200 Subject: [PATCH] #292 add some first test for MockResolver --- connexion/mock.py | 4 +++ tests/test_mock.py | 82 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 86 insertions(+) create mode 100644 tests/test_mock.py diff --git a/connexion/mock.py b/connexion/mock.py index 93e08770f..0bfa21d98 100644 --- a/connexion/mock.py +++ b/connexion/mock.py @@ -37,6 +37,10 @@ def mock_operation(self, operation, *args, **kwargs): # simply use the first/lowest status code, this is probably 200 or 201 status_code = sorted(response_definitions.keys())[0] response_definition = response_definitions.get(status_code, {}) + try: + status_code = int(status_code) + except ValueError: + status_code = 200 response_definition = operation.resolve_reference(response_definition) examples = response_definition.get('examples') if examples: diff --git a/tests/test_mock.py b/tests/test_mock.py new file mode 100644 index 000000000..45267ffb9 --- /dev/null +++ b/tests/test_mock.py @@ -0,0 +1,82 @@ + +from connexion.operation import Operation +from connexion.mock import MockResolver + + +def test_mock_resolver(): + resolver = MockResolver(mock_all=True) + + responses = { + 'default': { + 'examples': { + 'application/json': { + 'foo': 'bar' + } + } + } + } + + operation = Operation(method='GET', + path='endpoint', + path_parameters=[], + operation={ + 'responses': responses + }, + app_produces=['application/json'], + app_consumes=['application/json'], + app_security=[], + security_definitions={}, + definitions={}, + parameter_definitions={}, + resolver=resolver) + assert operation.operation_id == 'mock-1' + + response, status_code = resolver.mock_operation(operation) + assert status_code == 200 + assert response == {'foo': 'bar'} + + +def test_mock_resolver_no_examples(): + resolver = MockResolver(mock_all=True) + + responses = { + '418': {} + } + + operation = Operation(method='GET', + path='endpoint', + path_parameters=[], + operation={ + 'responses': responses + }, + app_produces=['application/json'], + app_consumes=['application/json'], + app_security=[], + security_definitions={}, + definitions={}, + parameter_definitions={}, + resolver=resolver) + assert operation.operation_id == 'mock-1' + + response, status_code = resolver.mock_operation(operation) + assert status_code == 418 + assert response == 'No example response was defined.' + + +def test_mock_resolver_notimplemented(): + resolver = MockResolver(mock_all=False) + + operation = Operation(method='GET', + path='endpoint', + path_parameters=[], + operation={ + 'operationId': 'fakeapi.hello.get' + }, + app_produces=['application/json'], + app_consumes=['application/json'], + app_security=[], + security_definitions={}, + definitions={}, + parameter_definitions={}, + resolver=resolver) + assert operation.operation_id == 'fakeapi.hello.get'