3
3
4
4
from django .contrib .auth import get_user_model
5
5
from django .test import TestCase
6
+ import jwt .exceptions
6
7
from rest_framework_jwt import utils
8
+ from rest_framework_jwt .settings import api_settings , DEFAULTS
7
9
8
10
User = get_user_model ()
9
11
@@ -54,3 +56,69 @@ def test_jwt_response_payload(self):
54
56
response_data = utils .jwt_response_payload_handler (token , self .user )
55
57
56
58
self .assertEqual (response_data , dict (token = token ))
59
+
60
+ class TestAudience (TestCase ):
61
+ def setUp (self ):
62
+ api_settings .JWT_AUDIENCE = "my_aud"
63
+
64
+ self .username = 'jpueblo'
65
+ self .email = 'jpueblo@example.com'
66
+ self .user = User .objects .create_user (self .username , self .email )
67
+
68
+ return super (TestAudience , self ).setUp ()
69
+
70
+ def test_fail_audience_missing (self ):
71
+ payload = utils .jwt_payload_handler (self .user )
72
+ token = utils .jwt_encode_handler (payload )
73
+ with self .assertRaises (jwt .exceptions .InvalidAudienceError ):
74
+ utils .jwt_decode_handler (token )
75
+
76
+ def test_fail_audience_wrong (self ):
77
+ payload = utils .jwt_payload_handler (self .user )
78
+ payload ['aud' ] = "my_aud2"
79
+ token = utils .jwt_encode_handler (payload )
80
+ with self .assertRaises (jwt .exceptions .InvalidAudienceError ):
81
+ utils .jwt_decode_handler (token )
82
+
83
+ def test_correct_audience (self ):
84
+ payload = utils .jwt_payload_handler (self .user )
85
+ payload ['aud' ] = "my_aud"
86
+ token = utils .jwt_encode_handler (payload )
87
+ decoded_payload = utils .jwt_decode_handler (token )
88
+ self .assertEqual (decoded_payload , payload )
89
+
90
+ def tearDown (self ):
91
+ api_settings .JWT_AUDIENCE = DEFAULTS ['JWT_AUDIENCE' ]
92
+
93
+ class TestIssuer (TestCase ):
94
+ def setUp (self ):
95
+ api_settings .JWT_ISSUER = "example.com"
96
+
97
+ self .username = 'jpueblo'
98
+ self .email = 'jpueblo@example.com'
99
+ self .user = User .objects .create_user (self .username , self .email )
100
+
101
+ return super (TestIssuer , self ).setUp ()
102
+
103
+ def test_fail_issuer_missing (self ):
104
+ payload = utils .jwt_payload_handler (self .user )
105
+ token = utils .jwt_encode_handler (payload )
106
+ with self .assertRaises (jwt .exceptions .InvalidIssuerError ):
107
+ utils .jwt_decode_handler (token )
108
+
109
+ def test_fail_issuer_wrong (self ):
110
+ payload = utils .jwt_payload_handler (self .user )
111
+ token = utils .jwt_encode_handler (payload )
112
+ payload ['iss' ] = "example2.com"
113
+ with self .assertRaises (jwt .exceptions .InvalidIssuerError ):
114
+ utils .jwt_decode_handler (token )
115
+
116
+ def test_correct_issuer (self ):
117
+ payload = utils .jwt_payload_handler (self .user )
118
+ payload ['iss' ] = "example.com"
119
+ token = utils .jwt_encode_handler (payload )
120
+ decoded_payload = utils .jwt_decode_handler (token )
121
+ self .assertEqual (decoded_payload , payload )
122
+
123
+ def tearDown (self ):
124
+ api_settings .JWT_ISSUER = DEFAULTS ['JWT_ISSUER' ]
0 commit comments