|
| 1 | +import itertools |
1 | 2 | from io import BytesIO |
2 | 3 |
|
3 | 4 | import django |
@@ -146,41 +147,16 @@ def test_follow_redirect(self): |
146 | 147 | """ |
147 | 148 | Follow redirect by setting follow argument. |
148 | 149 | """ |
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 |
184 | 160 |
|
185 | 161 | def test_invalid_multipart_data(self): |
186 | 162 | """ |
|
0 commit comments