This repository was archived by the owner on May 26, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 656
/
Copy pathtest_serializers.py
119 lines (91 loc) · 3.62 KB
/
test_serializers.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
import unittest
from distutils.version import StrictVersion
import django
from django.test import TestCase
from django.test.utils import override_settings
import rest_framework
from rest_framework_jwt.compat import get_user_model
from rest_framework_jwt.serializers import JSONWebTokenSerializer
from rest_framework_jwt import utils
User = get_user_model()
drf2 = rest_framework.VERSION < StrictVersion('3.0.0')
drf3 = rest_framework.VERSION >= StrictVersion('3.0.0')
class JSONWebTokenSerializerTests(TestCase):
def setUp(self):
self.email = '[email protected]'
self.username = 'jpueblo'
self.password = 'password'
self.user = User.objects.create_user(
self.username, self.email, self.password)
self.data = {
'username': self.username,
'password': self.password
}
@unittest.skipUnless(drf2, 'not supported in this version')
def test_empty_drf2(self):
serializer = JSONWebTokenSerializer()
expected = {
'username': ''
}
self.assertEqual(serializer.data, expected)
@unittest.skipUnless(drf3, 'not supported in this version')
def test_empty_drf3(self):
serializer = JSONWebTokenSerializer()
expected = {
'username': '',
'password': ''
}
self.assertEqual(serializer.data, expected)
def test_create(self):
serializer = JSONWebTokenSerializer(data=self.data)
is_valid = serializer.is_valid()
token = serializer.object['token']
decoded_payload = utils.jwt_decode_handler(token)
self.assertTrue(is_valid)
self.assertEqual(decoded_payload['username'], self.username)
def test_invalid_credentials(self):
self.data['password'] = 'wrong'
serializer = JSONWebTokenSerializer(data=self.data)
is_valid = serializer.is_valid()
expected_error = {
'non_field_errors': ['Unable to log in with provided credentials.']
}
self.assertFalse(is_valid)
self.assertEqual(serializer.errors, expected_error)
@unittest.skipIf(
django.VERSION[1] >= 10,
reason='The ModelBackend does not permit login when is_active is False.')
def test_disabled_user(self):
self.user.is_active = False
self.user.save()
serializer = JSONWebTokenSerializer(data=self.data)
is_valid = serializer.is_valid()
expected_error = {
'non_field_errors': ['User account is disabled.']
}
self.assertFalse(is_valid)
self.assertEqual(serializer.errors, expected_error)
@unittest.skipUnless(
django.VERSION[1] >= 10,
reason='The AllowAllUsersModelBackend permits login when is_active is False.')
@override_settings(AUTHENTICATION_BACKENDS=[
'django.contrib.auth.backends.AllowAllUsersModelBackend'])
def test_disabled_user_all_users_backend(self):
self.user.is_active = False
self.user.save()
serializer = JSONWebTokenSerializer(data=self.data)
is_valid = serializer.is_valid()
expected_error = {
'non_field_errors': ['User account is disabled.']
}
self.assertFalse(is_valid)
self.assertEqual(serializer.errors, expected_error)
def test_required_fields(self):
serializer = JSONWebTokenSerializer(data={})
is_valid = serializer.is_valid()
expected_error = {
'username': ['This field is required.'],
'password': ['This field is required.']
}
self.assertFalse(is_valid)
self.assertEqual(serializer.errors, expected_error)