Fixed #32929 -- Fixed handling query strings in AsyncRequestFactory.

This commit is contained in:
pochangl 2021-07-15 19:09:29 +08:00 committed by GitHub
parent f479df7f8d
commit f6d3557aa1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 11 additions and 0 deletions

View File

@ -547,6 +547,8 @@ class AsyncRequestFactory(RequestFactory):
follow = extra.pop('follow', None) follow = extra.pop('follow', None)
if follow is not None: if follow is not None:
s['follow'] = follow s['follow'] = follow
if query_string := extra.pop('QUERY_STRING', None):
s['query_string'] = query_string
s['headers'] += [ s['headers'] += [
(key.lower().encode('ascii'), value.encode('latin1')) (key.lower().encode('ascii'), value.encode('latin1'))
for key, value in extra.items() for key, value in extra.items()

View File

@ -1010,6 +1010,10 @@ class AsyncClientTest(TestCase):
with self.assertRaisesMessage(NotImplementedError, msg): with self.assertRaisesMessage(NotImplementedError, msg):
await method('/redirect_view/', follow=True) await method('/redirect_view/', follow=True)
async def test_get_data(self):
response = await self.async_client.get('/get_view/', {'var': 'val'})
self.assertContains(response, 'This is a test. val is the value.')
@override_settings(ROOT_URLCONF='test_client.urls') @override_settings(ROOT_URLCONF='test_client.urls')
class AsyncRequestFactoryTest(SimpleTestCase): class AsyncRequestFactoryTest(SimpleTestCase):
@ -1063,3 +1067,8 @@ class AsyncRequestFactoryTest(SimpleTestCase):
self.assertIn('HTTP_AUTHORIZATION', request.META) self.assertIn('HTTP_AUTHORIZATION', request.META)
self.assertEqual(request.headers['x-another-header'], 'some other value') self.assertEqual(request.headers['x-another-header'], 'some other value')
self.assertIn('HTTP_X_ANOTHER_HEADER', request.META) self.assertIn('HTTP_X_ANOTHER_HEADER', request.META)
def test_request_factory_query_string(self):
request = self.request_factory.get('/somewhere/', {'example': 'data'})
self.assertNotIn('Query-String', request.headers)
self.assertEqual(request.GET['example'], 'data')