|
| 1 | +from datetime import datetime as dt |
| 2 | + |
| 3 | +import pytest |
1 | 4 | from django.contrib.auth import get_user_model
|
2 |
| -from django.core.exceptions import ValidationError |
| 5 | +from django.core.exceptions import ImproperlyConfigured, ValidationError |
3 | 6 | from django.test import TestCase
|
4 | 7 | from django.test.utils import override_settings
|
5 | 8 | from django.utils import timezone
|
6 | 9 |
|
7 | 10 | from oauth2_provider.models import (
|
8 |
| - get_access_token_model, get_application_model, |
| 11 | + clear_expired, get_access_token_model, get_application_model, |
9 | 12 | get_grant_model, get_refresh_token_model
|
10 | 13 | )
|
11 | 14 | from oauth2_provider.settings import oauth2_settings
|
|
19 | 22 |
|
20 | 23 |
|
21 | 24 | class TestModels(TestCase):
|
| 25 | + |
22 | 26 | def setUp(self):
|
23 | 27 | self. user = UserModel. objects. create_user( "test_user", "[email protected]", "123456")
|
24 | 28 |
|
@@ -118,6 +122,7 @@ def test_scopes_property(self):
|
118 | 122 | OAUTH2_PROVIDER_GRANT_MODEL="tests.SampleGrant"
|
119 | 123 | )
|
120 | 124 | class TestCustomModels(TestCase):
|
| 125 | + |
121 | 126 | def setUp(self):
|
122 | 127 | self. user = UserModel. objects. create_user( "test_user", "[email protected]", "123456")
|
123 | 128 |
|
@@ -260,6 +265,7 @@ def test_expires_can_be_none(self):
|
260 | 265 |
|
261 | 266 |
|
262 | 267 | class TestAccessTokenModel(TestCase):
|
| 268 | + |
263 | 269 | def setUp(self):
|
264 | 270 | self. user = UserModel. objects. create_user( "test_user", "[email protected]", "123456")
|
265 | 271 |
|
@@ -289,3 +295,54 @@ class TestRefreshTokenModel(TestCase):
|
289 | 295 | def test_str(self):
|
290 | 296 | refresh_token = RefreshToken(token="test_token")
|
291 | 297 | self.assertEqual("%s" % refresh_token, refresh_token.token)
|
| 298 | + |
| 299 | + |
| 300 | +class TestClearExpired(TestCase): |
| 301 | + |
| 302 | + def setUp(self): |
| 303 | + self. user = UserModel. objects. create_user( "test_user", "[email protected]", "123456") |
| 304 | + # Insert two tokens on database. |
| 305 | + AccessToken.objects.create( |
| 306 | + id=1, |
| 307 | + token="555", |
| 308 | + expires=dt.now(), |
| 309 | + scope=2, |
| 310 | + application_id=3, |
| 311 | + user_id=1, |
| 312 | + created=dt.now(), |
| 313 | + updated=dt.now(), |
| 314 | + source_refresh_token_id="0", |
| 315 | + ) |
| 316 | + AccessToken.objects.create( |
| 317 | + id=2, |
| 318 | + token="666", |
| 319 | + expires=dt.now(), |
| 320 | + scope=2, |
| 321 | + application_id=3, |
| 322 | + user_id=1, |
| 323 | + created=dt.now(), |
| 324 | + updated=dt.now(), |
| 325 | + source_refresh_token_id="1", |
| 326 | + ) |
| 327 | + |
| 328 | + def test_clear_expired_tokens(self): |
| 329 | + oauth2_settings.REFRESH_TOKEN_EXPIRE_SECONDS = 60 |
| 330 | + assert clear_expired() is None |
| 331 | + |
| 332 | + def test_clear_expired_tokens_incorect_timetype(self): |
| 333 | + oauth2_settings.REFRESH_TOKEN_EXPIRE_SECONDS = "A" |
| 334 | + with pytest.raises(ImproperlyConfigured) as excinfo: |
| 335 | + clear_expired() |
| 336 | + result = excinfo.value.__class__.__name__ |
| 337 | + assert result == "ImproperlyConfigured" |
| 338 | + |
| 339 | + def test_clear_expired_tokens_with_tokens(self): |
| 340 | + self.client.login(username="test_user", password="123456") |
| 341 | + oauth2_settings.REFRESH_TOKEN_EXPIRE_SECONDS = 0 |
| 342 | + ttokens = AccessToken.objects.count() |
| 343 | + expiredt = AccessToken.objects.filter(expires__lte=dt.now()).count() |
| 344 | + assert ttokens == 2 |
| 345 | + assert expiredt == 2 |
| 346 | + clear_expired() |
| 347 | + expiredt = AccessToken.objects.filter(expires__lte=dt.now()).count() |
| 348 | + assert expiredt == 0 |
0 commit comments