|
10 | 10 | from django.utils.timezone import now, timedelta
|
11 | 11 |
|
12 | 12 | from oauth2_provider.backends import OAuth2Backend
|
13 |
| -from oauth2_provider.middleware import OAuth2TokenMiddleware |
| 13 | +from oauth2_provider.middleware import OAuth2ExtraTokenMiddleware, OAuth2TokenMiddleware |
14 | 14 | from oauth2_provider.models import get_access_token_model, get_application_model
|
15 | 15 |
|
16 | 16 |
|
@@ -162,3 +162,62 @@ def test_middleware_response_header(self):
|
162 | 162 | response = m(request)
|
163 | 163 | self.assertIn("Vary", response)
|
164 | 164 | self.assertIn("Authorization", response["Vary"])
|
| 165 | + |
| 166 | + |
| 167 | +@override_settings( |
| 168 | + AUTHENTICATION_BACKENDS=( |
| 169 | + "oauth2_provider.backends.OAuth2Backend", |
| 170 | + "django.contrib.auth.backends.ModelBackend", |
| 171 | + ), |
| 172 | +) |
| 173 | +@modify_settings( |
| 174 | + MIDDLEWARE={ |
| 175 | + "append": "oauth2_provider.middleware.OAuth2TokenMiddleware", |
| 176 | + } |
| 177 | +) |
| 178 | +class TestOAuth2ExtraTokenMiddleware(BaseTest): |
| 179 | + def setUp(self): |
| 180 | + super().setUp() |
| 181 | + self.anon_user = AnonymousUser() |
| 182 | + |
| 183 | + def dummy_get_response(self, request): |
| 184 | + return HttpResponse() |
| 185 | + |
| 186 | + def test_middleware_wrong_headers(self): |
| 187 | + m = OAuth2ExtraTokenMiddleware(self.dummy_get_response) |
| 188 | + request = self.factory.get("/a-resource") |
| 189 | + m(request) |
| 190 | + self.assertFalse(hasattr(request, "access_token")) |
| 191 | + auth_headers = { |
| 192 | + "HTTP_AUTHORIZATION": "Beerer " + "badstring", # a Beer token for you! |
| 193 | + } |
| 194 | + request = self.factory.get("/a-resource", **auth_headers) |
| 195 | + m(request) |
| 196 | + self.assertFalse(hasattr(request, "access_token")) |
| 197 | + |
| 198 | + def test_middleware_token_does_not_exist(self): |
| 199 | + m = OAuth2ExtraTokenMiddleware(self.dummy_get_response) |
| 200 | + auth_headers = { |
| 201 | + "HTTP_AUTHORIZATION": "Bearer " + "badtokstr", |
| 202 | + } |
| 203 | + request = self.factory.get("/a-resource", **auth_headers) |
| 204 | + m(request) |
| 205 | + self.assertFalse(hasattr(request, "access_token")) |
| 206 | + |
| 207 | + def test_middleware_success(self): |
| 208 | + m = OAuth2ExtraTokenMiddleware(self.dummy_get_response) |
| 209 | + auth_headers = { |
| 210 | + "HTTP_AUTHORIZATION": "Bearer " + "tokstr", |
| 211 | + } |
| 212 | + request = self.factory.get("/a-resource", **auth_headers) |
| 213 | + m(request) |
| 214 | + self.assertEqual(request.access_token, self.token) |
| 215 | + |
| 216 | + def test_middleware_response(self): |
| 217 | + m = OAuth2ExtraTokenMiddleware(self.dummy_get_response) |
| 218 | + auth_headers = { |
| 219 | + "HTTP_AUTHORIZATION": "Bearer " + "tokstr", |
| 220 | + } |
| 221 | + request = self.factory.get("/a-resource", **auth_headers) |
| 222 | + response = m(request) |
| 223 | + self.assertIsInstance(response, HttpResponse) |
0 commit comments