|
| 1 | +import json |
| 2 | + |
1 | 3 | from allauth.account import app_settings as account_app_settings
|
2 |
| -from dj_rest_auth.registration.app_settings import register_permission_classes |
3 |
| -from dj_rest_auth.registration.views import RegisterView |
4 | 4 | from django.conf import settings
|
5 | 5 | from django.contrib.auth import get_user_model
|
6 | 6 | from django.core import mail
|
|
9 | 9 | from rest_framework import status
|
10 | 10 | from rest_framework.test import APIRequestFactory
|
11 | 11 |
|
| 12 | +from dj_rest_auth.registration.app_settings import register_permission_classes |
| 13 | +from dj_rest_auth.registration.views import RegisterView |
12 | 14 | from .mixins import CustomPermissionClass, TestsMixin
|
13 | 15 |
|
14 | 16 | try:
|
@@ -555,3 +557,44 @@ def test_cookie_authentication(self):
|
555 | 557 | self.assertEqual(['jwt-auth'], list(resp.cookies.keys()))
|
556 | 558 | resp = self.get('/protected-view/')
|
557 | 559 | self.assertEquals(resp.status_code, 200)
|
| 560 | + |
| 561 | + @override_settings(REST_USE_JWT=True) |
| 562 | + def test_blacklisting_not_installed(self): |
| 563 | + settings.INSTALLED_APPS.remove('rest_framework_simplejwt.token_blacklist') |
| 564 | + payload = { |
| 565 | + "username": self.USERNAME, |
| 566 | + "password": self.PASS |
| 567 | + } |
| 568 | + get_user_model().objects.create_user(self.USERNAME, '', self.PASS) |
| 569 | + resp = self.post(self.login_url, data=payload, status_code=200) |
| 570 | + token = resp.data['refresh_token'] |
| 571 | + resp = self.post(self.logout_url, status=200, data={'refresh': token}) |
| 572 | + self.assertEqual(resp.status_code, 200) |
| 573 | + self.assertEqual(resp.data["detail"], |
| 574 | + "Neither cookies or blacklist are enabled, so the token has not been deleted server side. " |
| 575 | + "Please make sure the token is deleted client side.") |
| 576 | + |
| 577 | + @override_settings(REST_USE_JWT=True) |
| 578 | + def test_blacklisting(self): |
| 579 | + payload = { |
| 580 | + "username": self.USERNAME, |
| 581 | + "password": self.PASS |
| 582 | + } |
| 583 | + get_user_model().objects.create_user(self.USERNAME, '', self.PASS) |
| 584 | + resp = self.post(self.login_url, data=payload, status_code=200) |
| 585 | + token = resp.data['refresh_token'] |
| 586 | + # test refresh token not included in request data |
| 587 | + resp = self.post(self.logout_url, status=200) |
| 588 | + self.assertEqual(resp.status_code, 401) |
| 589 | + # test token is invalid or expired |
| 590 | + resp = self.post(self.logout_url, status=200, data={'refresh': '1'}) |
| 591 | + self.assertEqual(resp.status_code, 401) |
| 592 | + # test successful logout |
| 593 | + resp = self.post(self.logout_url, status=200, data={'refresh': token}) |
| 594 | + self.assertEqual(resp.status_code, 200) |
| 595 | + # test token is blacklisted |
| 596 | + resp = self.post(self.logout_url, status=200, data={'refresh': token}) |
| 597 | + self.assertEqual(resp.status_code, 401) |
| 598 | + # test other TokenError, AttributeError, TypeError (invalid format) |
| 599 | + resp = self.post(self.logout_url, status=200, data=json.dumps({'refresh': token})) |
| 600 | + self.assertEqual(resp.status_code, 500) |
0 commit comments