Skip to content

Commit b99df97

Browse files
committed
Simplify TestAPITestClient.test_follow_redirect
Inspired from Django's ClientTest.test_follow_307_and_308_redirect
1 parent 162fcc3 commit b99df97

File tree

1 file changed

+11
-35
lines changed

1 file changed

+11
-35
lines changed

tests/test_testing.py

Lines changed: 11 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import itertools
12
from io import BytesIO
23

34
import django
@@ -146,41 +147,16 @@ def test_follow_redirect(self):
146147
"""
147148
Follow redirect by setting follow argument.
148149
"""
149-
response = self.client.get('/redirect-view/')
150-
assert response.status_code == 302
151-
response = self.client.get('/redirect-view/', follow=True)
152-
assert response.redirect_chain is not None
153-
assert response.status_code == 200
154-
155-
response = self.client.post('/redirect-view/')
156-
assert response.status_code == 302
157-
response = self.client.post('/redirect-view/', follow=True)
158-
assert response.redirect_chain is not None
159-
assert response.status_code == 200
160-
161-
response = self.client.put('/redirect-view/')
162-
assert response.status_code == 302
163-
response = self.client.put('/redirect-view/', follow=True)
164-
assert response.redirect_chain is not None
165-
assert response.status_code == 200
166-
167-
response = self.client.patch('/redirect-view/')
168-
assert response.status_code == 302
169-
response = self.client.patch('/redirect-view/', follow=True)
170-
assert response.redirect_chain is not None
171-
assert response.status_code == 200
172-
173-
response = self.client.delete('/redirect-view/')
174-
assert response.status_code == 302
175-
response = self.client.delete('/redirect-view/', follow=True)
176-
assert response.redirect_chain is not None
177-
assert response.status_code == 200
178-
179-
response = self.client.options('/redirect-view/')
180-
assert response.status_code == 302
181-
response = self.client.options('/redirect-view/', follow=True)
182-
assert response.redirect_chain is not None
183-
assert response.status_code == 200
150+
methods = ('get', 'post', 'put', 'patch', 'delete', 'options')
151+
codes = (307, 308)
152+
for method, code in itertools.product(methods, codes):
153+
with self.subTest(method=method, code=code):
154+
req_method = getattr(self.client, method)
155+
response = req_method('/redirect-view/')
156+
assert response.status_code == 302
157+
response = req_method('/redirect-view/', follow=True)
158+
assert response.redirect_chain is not None
159+
assert response.status_code == 200
184160

185161
def test_invalid_multipart_data(self):
186162
"""

0 commit comments

Comments
 (0)