summaryrefslogtreecommitdiff
path: root/tests/unit/test_urldispatcher_router_adapter.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/unit/test_urldispatcher_router_adapter.py')
-rw-r--r--tests/unit/test_urldispatcher_router_adapter.py153
1 files changed, 76 insertions, 77 deletions
diff --git a/tests/unit/test_urldispatcher_router_adapter.py b/tests/unit/test_urldispatcher_router_adapter.py
index ad5d9c1..d81d2a3 100644
--- a/tests/unit/test_urldispatcher_router_adapter.py
+++ b/tests/unit/test_urldispatcher_router_adapter.py
@@ -15,10 +15,9 @@
"""aiohttp_cors.urldispatcher_router_adapter unit tests.
"""
-import asyncio
-import unittest
from unittest import mock
+import pytest
from aiohttp import web
from aiohttp_cors.urldispatcher_router_adapter import \
@@ -26,90 +25,90 @@ from aiohttp_cors.urldispatcher_router_adapter import \
from aiohttp_cors import ResourceOptions
-def _handler(request):
+async def _handler(request):
return web.Response(text="Done")
-class TestResourcesUrlDispatcherRouterAdapter(unittest.TestCase):
- """Unit tests for CorsConfig"""
-
- def setUp(self):
- self.loop = asyncio.new_event_loop()
- self.app = web.Application(loop=self.loop)
-
- self.adapter = ResourcesUrlDispatcherRouterAdapter(
- self.app.router, defaults={
- "*": ResourceOptions()
- })
- self.get_route = self.app.router.add_route(
- "GET", "/get_path", _handler)
- self.options_route = self.app.router.add_route(
- "OPTIONS", "/options_path", _handler)
-
- def tearDown(self):
- self.loop.close()
-
- def test_add_get_route(self):
- """Test configuring GET route"""
- result = self.adapter.add_preflight_handler(
- self.get_route.resource, _handler)
- self.assertIsNone(result)
-
- self.assertEqual(len(self.adapter._resource_config), 0)
- self.assertEqual(
- len(self.adapter._resources_with_preflight_handlers), 1)
- self.assertEqual(len(self.adapter._preflight_routes), 1)
-
- def test_add_options_route(self):
- """Test configuring OPTIONS route"""
-
- with self.assertRaisesRegex(
- ValueError,
- "CORS must be enabled for route's resource first"):
- self.adapter.add_preflight_handler(self.options_route, _handler)
-
- self.assertFalse(self.adapter._resources_with_preflight_handlers)
- self.assertFalse(self.adapter._preflight_routes)
-
- def test_get_non_preflight_request_config(self):
- self.adapter.add_preflight_handler(
- self.get_route.resource, _handler)
- self.adapter.set_config_for_routing_entity(
- self.get_route.resource, {
- 'http://example.org': ResourceOptions(),
- })
-
- self.adapter.add_preflight_handler(
- self.get_route, _handler)
- self.adapter.set_config_for_routing_entity(
- self.get_route, {
- 'http://test.example.org': ResourceOptions(),
- })
-
- request = mock.Mock()
-
- with mock.patch('aiohttp_cors.urldispatcher_router_adapter.'
- 'ResourcesUrlDispatcherRouterAdapter.'
- 'is_cors_enabled_on_request'
- ) as is_cors_enabled_on_request, \
- mock.patch('aiohttp_cors.urldispatcher_router_adapter.'
- 'ResourcesUrlDispatcherRouterAdapter.'
- '_request_resource'
- ) as _request_resource:
- is_cors_enabled_on_request.return_value = True
- _request_resource.return_value = self.get_route.resource
-
- self.assertEqual(
- self.adapter.get_non_preflight_request_config(request),
+@pytest.fixture
+def app():
+ return web.Application()
+
+
+@pytest.fixture
+def adapter(app):
+ return ResourcesUrlDispatcherRouterAdapter(
+ app.router, defaults={
+ "*": ResourceOptions()
+ })
+
+
+@pytest.fixture
+def get_route(app):
+ return app.router.add_route(
+ "GET", "/get_path", _handler)
+
+
+@pytest.fixture
+def options_route(app):
+ return app.router.add_route(
+ "OPTIONS", "/options_path", _handler)
+
+
+def test_add_get_route(adapter, get_route):
+ """Test configuring GET route"""
+ result = adapter.add_preflight_handler(
+ get_route.resource, _handler)
+ assert result is None
+
+ assert len(adapter._resource_config) == 0
+ assert len(adapter._resources_with_preflight_handlers) == 1
+ assert len(adapter._preflight_routes) == 1
+
+
+def test_add_options_route(adapter, options_route):
+ """Test configuring OPTIONS route"""
+
+ adapter.add_preflight_handler(options_route, _handler)
+
+ assert not adapter._resources_with_preflight_handlers
+ assert not adapter._preflight_routes
+
+
+def test_get_non_preflight_request_config(adapter, get_route):
+ adapter.add_preflight_handler(get_route.resource, _handler)
+ adapter.set_config_for_routing_entity(
+ get_route.resource, {
+ 'http://example.org': ResourceOptions(),
+ })
+
+ adapter.add_preflight_handler(get_route, _handler)
+ adapter.set_config_for_routing_entity(
+ get_route, {
+ 'http://test.example.org': ResourceOptions(),
+ })
+
+ request = mock.Mock()
+
+ with mock.patch('aiohttp_cors.urldispatcher_router_adapter.'
+ 'ResourcesUrlDispatcherRouterAdapter.'
+ 'is_cors_enabled_on_request'
+ ) as is_cors_enabled_on_request, \
+ mock.patch('aiohttp_cors.urldispatcher_router_adapter.'
+ 'ResourcesUrlDispatcherRouterAdapter.'
+ '_request_resource'
+ ) as _request_resource:
+ is_cors_enabled_on_request.return_value = True
+ _request_resource.return_value = get_route.resource
+
+ assert (adapter.get_non_preflight_request_config(request) ==
{
'*': ResourceOptions(),
'http://example.org': ResourceOptions(),
})
- request.method = 'GET'
+ request.method = 'GET'
- self.assertEqual(
- self.adapter.get_non_preflight_request_config(request),
+ assert (adapter.get_non_preflight_request_config(request) ==
{
'*': ResourceOptions(),
'http://example.org': ResourceOptions(),