def test_load_swagger_resource_aggregate_raises_exception( self, mock_perform_request, mock_utils, mock_app): # mock schema urls and app product_schema_url = {self.lm.endpoint_name: self.lm.endpoint} msg = 'Service "crm" not found.' exception_obj = exceptions.ServiceDoesNotExist(msg=msg) mock_utils.get_swagger_urls.side_effect = [ product_schema_url, exception_obj ] mock_app.return_value = Mock(App) # mock service response headers = {'Content-Type': ['application/json']} service_response = Mock(PySwaggerResponse) service_response.status = 200 service_response.data = self.response_data service_response.header = headers mock_perform_request.return_value = service_response # make api request path = '/old/{}/{}/'.format(self.lm.endpoint_name, 'products') response = self.client.get(path, {'aggregate': 'true'}) # validate result expected_data = self.response_data self.assertEqual(response.status_code, 200) self.assertEqual(json.loads(response.content), expected_data)
def test_aggregate_data_raises_exception(self, mock_logic_module_get, mock_perform_request, mock_app, mock_logger): # mock app mock_app.return_value = Mock(App) # mock response headers = {'Content-Type': ['application/json']} pyswagger_response = Mock(PySwaggerResponse) pyswagger_response.status = 200 pyswagger_response.data = self.response_data pyswagger_response.header = headers mock_perform_request.return_value = pyswagger_response # mock logic module get msg = 'Service "{}" not found.'.format(self.lm.endpoint_name) exception_obj = exceptions.ServiceDoesNotExist(msg=msg) mock_logic_module_get.side_effect = exception_obj # make api request path = '/old/{}/{}/'.format(self.lm.endpoint_name, 'products') response = self.client.get(path, {'aggregate': 'true'}) # validate result self.assertEqual(response.status_code, 200) mock_logger.error.assert_called_with(json.dumps({'detail': msg}))
def _get_logic_module(self, service_name: str) -> LogicModule: """ Retrieve LogicModule by service name. """ if service_name not in self._logic_modules: try: self._logic_modules[service_name] = LogicModule.objects.get(endpoint_name=service_name) except LogicModule.DoesNotExist: raise exceptions.ServiceDoesNotExist(f'Service "{service_name}" not found.') return self._logic_modules[service_name]
def test_make_service_request_content_raises_exception( self, mock_perform_request): # mock response msg = 'Service "{}" not found.'.format(self.lm.endpoint_name) exception_obj = exceptions.ServiceDoesNotExist(msg=msg, status=404) mock_perform_request.side_effect = exception_obj # make api request path = '/old/{}/{}/'.format(self.lm.endpoint_name, 'example') response = self.client.get(path) # validate result self.assertEqual(response.status_code, 404) self.assertEqual(response.get('content-type'), 'application/json') self.assertEqual(json.loads(response.content), {'detail': msg})