예제 #1
0
 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)
예제 #2
0
    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)
예제 #3
0
 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)
예제 #4
0
 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())
예제 #5
0
 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)
예제 #6
0
    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')
예제 #7
0
    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)