|
- import sys
- import unittest
-
- import six
- if six.PY3:
- from unittest import mock
- else:
- import mock
-
- if sys.version_info >= (3, 5):
- from engineio.async_drivers import aiohttp as async_aiohttp
-
-
- @unittest.skipIf(sys.version_info < (3, 5), 'only for Python 3.5+')
- class AiohttpTests(unittest.TestCase):
- def test_create_route(self):
- app = mock.MagicMock()
- mock_server = mock.MagicMock()
- async_aiohttp.create_route(app, mock_server, '/foo')
- app.router.add_get.assert_any_call('/foo', mock_server.handle_request)
- app.router.add_post.assert_any_call('/foo', mock_server.handle_request)
-
- def test_translate_request(self):
- request = mock.MagicMock()
- request._message.method = 'PUT'
- request._message.path = '/foo/bar?baz=1'
- request._message.version = (1, 1)
- request._message.headers = {'a': 'b', 'c-c': 'd', 'c_c': 'e',
- 'content-type': 'application/json',
- 'content-length': 123}
- request._payload = b'hello world'
- environ = async_aiohttp.translate_request(request)
- expected_environ = {
- 'REQUEST_METHOD': 'PUT',
- 'PATH_INFO': '/foo/bar',
- 'QUERY_STRING': 'baz=1',
- 'CONTENT_TYPE': 'application/json',
- 'CONTENT_LENGTH': 123,
- 'HTTP_A': 'b',
- # 'HTTP_C_C': 'd,e',
- 'RAW_URI': '/foo/bar?baz=1',
- 'SERVER_PROTOCOL': 'HTTP/1.1',
- 'wsgi.input': b'hello world',
- 'aiohttp.request': request,
- }
- for k, v in expected_environ.items():
- self.assertEqual(v, environ[k])
- self.assertTrue(
- environ['HTTP_C_C'] == 'd,e' or environ['HTTP_C_C'] == 'e,d')
-
- # @mock.patch('async_aiohttp.aiohttp.web.Response')
- def test_make_response(self):
- rv = async_aiohttp.make_response('202 ACCEPTED', {'foo': 'bar'},
- b'payload', {})
- self.assertEqual(rv.status, 202)
- self.assertEqual(rv.headers['foo'], 'bar')
- self.assertEqual(rv.body, b'payload')
|