def test_get_func_for_method_available(self): """ Tests that the get_func_for_method works appropriately """ mr = MethodRouter(None, None) mr.add_route(endpoint_func=1, methods=['GET']) self.assertEqual(mr.get_func_for_method('GET'), 1)
def test_call(self): """ Tests whether calling an instance of MethodRouter properly dispatches an apimethod """ dispatcher = mock.MagicMock() adapter = mock.MagicMock() adapter.formatted_body = 'some_body' adapter.extra_headers = {'some': 'header'} dispatcher.dispatch.return_value = adapter mr = MethodRouter(None, dispatcher) def fake(): pass mr.add_route(endpoint_func=fake, methods=['GET', 'post']) request = mock.MagicMock() request.method = 'get' resp = mr(request) self.assertIsInstance(resp, HttpResponse) self.assertEqual(dispatcher.dispatch.call_count, 1) request.method = 'post' resp = mr(request) self.assertIsInstance(resp, HttpResponse) self.assertIsInstance(resp, HttpResponse) self.assertEqual(dispatcher.dispatch.call_count, 2)
def test_call_exception_handler(self): dispatcher = mock.MagicMock() adapter = mock.Mock(formatted_body='some_body', extra_headers={'some': 'header'}, status_code=42) dispatcher.dispatch.return_value = adapter error_handler = mock.MagicMock() mr = MethodRouter(None, dispatcher, error_handler=error_handler) mr.add_route(endpoint_func=mock.MagicMock(), methods=['GET', 'post']) request = mock.MagicMock(method='put') resp = mr(request) self.assertEqual(error_handler.call_count, 1)
def test_add_route_casing(self): """ Tests that the appropriate case (lower) case is always implicitly forced. """ mr = MethodRouter(None, None) methods = ('FIRST', 'Second', 'thIrd', 'fourth') mr.add_route(endpoint_func=1, methods=methods) for m in mr.method_map.keys(): self.assertTrue(m.islower())
def test_call_normal_case(self): """ Tests calling the method router under normal case. """ dispatcher = mock.MagicMock() adapter = mock.Mock(formatted_body='some_body', extra_headers={'some': 'header'}, status_code=42) dispatcher.dispatch.return_value = adapter mr = MethodRouter(None, dispatcher) mr.add_route(endpoint_func=mock.MagicMock(), methods=['GET', 'post']) request = mock.MagicMock(method='get') resp = mr(request) self.assertIsInstance(resp, HttpResponse) self.assertEqual(resp.content.decode(), 'some_body') self.assertEqual(resp.status_code, 42)
def test_get_func_for_method(self): """ tests the get_func_for_method """ mr = MethodRouter(None, None) def fake(): pass mr.add_route(endpoint_func=fake, methods=['GET', 'post']) def fake2(): pass mr.add_route(endpoint_func=fake2, methods=['PATCH']) self.assertEqual(mr.get_func_for_method('GET'), fake) self.assertEqual(mr.get_func_for_method('get'), fake) self.assertEqual(mr.get_func_for_method('POST'), fake) self.assertEqual(mr.get_func_for_method('post'), fake) self.assertEqual(mr.get_func_for_method('PATCH'), fake2) self.assertEqual(mr.get_func_for_method('patch'), fake2) self.assertRaises(MethodNotAllowed, mr.get_func_for_method, 'PUT') self.assertRaises(MethodNotAllowed, mr.get_func_for_method, 'put')
def test_add_route(self): """ Ensure that the add_route method works as intended """ mr = MethodRouter(None, None) self.assertEqual(mr.method_map, {}) def fake(): pass mr.add_route(endpoint_func=fake, methods=['GET']) self.assertEqual(mr.method_map['get'], fake) self.assertRaises(ValueError, mr.add_route, endpoint_func=fake, methods=['GET']) self.assertRaises(ValueError, mr.add_route, endpoint_func=fake, methods=['get']) mr = MethodRouter(None, None) self.assertRaises(ValueError, mr.add_route, endpoint_func=fake, methods=['GET', 'get']) mr = MethodRouter(None, None) mr.add_route(endpoint_func=fake, methods=['POST', 'GET']) self.assertEqual(mr.method_map['get'], fake) self.assertEqual(mr.method_map['post'], fake) mr.add_route(endpoint_func=fake, methods=['PATCH', 'put']) self.assertEqual(mr.method_map['patch'], fake) self.assertEqual(mr.method_map['put'], fake)