|
51 | 51 | -----END PUBLIC KEY-----
|
52 | 52 | '''
|
53 | 53 |
|
| 54 | +AUDIENCE = 'openid-client-id' |
| 55 | + |
| 56 | +ISSUER = 'https://www.myoidcprovider.com' |
| 57 | + |
54 | 58 |
|
55 | 59 | class TestTokenBackend(TestCase):
|
56 | 60 | def setUp(self):
|
57 | 61 | self.hmac_token_backend = TokenBackend('HS256', SECRET)
|
58 | 62 | self.rsa_token_backend = TokenBackend('RS256', PRIVATE_KEY, PUBLIC_KEY)
|
| 63 | + self.aud_iss_token_backend = TokenBackend('RS256', PRIVATE_KEY, PUBLIC_KEY, AUDIENCE, ISSUER) |
59 | 64 | self.payload = {'foo': 'bar'}
|
60 | 65 |
|
61 | 66 | def test_init(self):
|
@@ -95,6 +100,20 @@ def test_encode_rsa(self):
|
95 | 100 | ),
|
96 | 101 | )
|
97 | 102 |
|
| 103 | + def test_encode_aud_iss(self): |
| 104 | + # Should return a JSON web token for the given payload |
| 105 | + payload = {'exp': make_utc(datetime(year=2000, month=1, day=1))} |
| 106 | + |
| 107 | + rsa_token = self.aud_iss_token_backend.encode(payload) |
| 108 | + |
| 109 | + # Token could be one of two depending on header dict ordering |
| 110 | + self.assertIn( |
| 111 | + rsa_token, |
| 112 | + ( |
| 113 | + 'eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJleHAiOjk0NjY4NDgwMCwiYXVkIjoib3BlbmlkLWNsaWVudC1pZCIsImlzcyI6Imh0dHBzOi8vd3d3Lm15b2lkY3Byb3ZpZGVyLmNvbSJ9.kSz7KyUZgpKaeQHYSQlhsE-UFLG2zhBiJ2MFCIvhstA4lSIKj3U1fdP1OhEDg7X66EquRRIZrby6M7RncqCdsjRwKrEIaL74KgC4s5PDXa_HC6dtpi2GhXqaLz8YxfCPaNGZ_9q9rs4Z4O6WpwBLNmMQrTxNno9p0uT93Z2yKj5hGih8a9C_CSf_rKtsHW9AJShWGoKpR6qQFKVNP1GAwQOQ6IeEvZenq_LSEywnrfiWp4Y5UF7xi42wWx7_YPQtM9_Bp5sB-DbrKg_8t0zSc-OHeVDgH0TKqygGEea09W0QkmJcROkaEbxt2LxJg9OuSdXgudVytV8ewpgNtWNE4g' |
| 114 | + ), |
| 115 | + ) |
| 116 | + |
98 | 117 | def test_decode_hmac_with_no_expiry(self):
|
99 | 118 | no_exp_token = jwt.encode(self.payload, SECRET, algorithm='HS256')
|
100 | 119 |
|
@@ -208,3 +227,13 @@ def test_decode_rsa_success(self):
|
208 | 227 | token = jwt.encode(self.payload, PRIVATE_KEY, algorithm='RS256').decode('utf-8')
|
209 | 228 |
|
210 | 229 | self.assertEqual(self.rsa_token_backend.decode(token), self.payload)
|
| 230 | + |
| 231 | + def test_decode_aud_iss_success(self): |
| 232 | + self.payload['exp'] = aware_utcnow() + timedelta(days=1) |
| 233 | + self.payload['foo'] = 'baz' |
| 234 | + self.payload['aud'] = AUDIENCE |
| 235 | + self.payload['iss'] = ISSUER |
| 236 | + |
| 237 | + token = jwt.encode(self.payload, PRIVATE_KEY, algorithm='RS256').decode('utf-8') |
| 238 | + |
| 239 | + self.assertEqual(self.aud_iss_token_backend.decode(token), self.payload) |
0 commit comments