|
6 | 6 | from datetime import timedelta
|
7 | 7 | from typing import Any # noqa
|
8 | 8 | from typing import Dict # noqa
|
| 9 | +from unittest import TestCase |
| 10 | +from unittest.mock import sentinel |
9 | 11 |
|
10 | 12 | import pytest
|
11 | 13 | from freezegun import freeze_time
|
| 14 | +from jwkest.jws import JWS |
12 | 15 |
|
13 | 16 | from oic.oauth2.message import MissingSigningKey
|
14 | 17 | from oic.oic import AuthorizationResponse
|
| 18 | +from oic.oic.provider import Provider |
15 | 19 | from oic.utils.keyio import JWKSError
|
16 | 20 | from oic.utils.keyio import KeyBundle
|
17 | 21 | from oic.utils.keyio import KeyJar
|
18 | 22 | from oic.utils.keyio import RSAKey
|
19 | 23 | from oic.utils.keyio import build_keyjar
|
| 24 | +from oic.utils.keyio import check_key_availability |
20 | 25 | from oic.utils.keyio import dump_jwks
|
21 | 26 | from oic.utils.keyio import key_export
|
22 | 27 | from oic.utils.keyio import keybundle_from_local_file
|
@@ -490,3 +495,35 @@ def test_load_jwks_wrong_argtype():
|
490 | 495 | kj = KeyJar()
|
491 | 496 | with pytest.raises(JWKSError):
|
492 | 497 | kj.import_jwks(JWKS_ERR_1, '')
|
| 498 | + |
| 499 | + |
| 500 | +class TestCheckKeyAvailability(TestCase): |
| 501 | + """Unittests for check_key_availability.""" |
| 502 | + |
| 503 | + def setUp(self): |
| 504 | + self.server = Provider("example", sentinel.session_db, {}, None, sentinel.userinfo, |
| 505 | + sentinel.authz, sentinel.client_authn) |
| 506 | + self.jwt = JWS({"iss": "some_cid"}).sign_compact() |
| 507 | + |
| 508 | + def test_none(self): |
| 509 | + self.server.cdb["some_cid"] = {"client_secret": "top secret"} |
| 510 | + check_key_availability(self.server, self.jwt) |
| 511 | + self.assertTrue("some_cid" in self.server.keyjar) |
| 512 | + # Two symmetric |
| 513 | + self.assertEqual(len(self.server.keyjar["some_cid"]), 2) |
| 514 | + |
| 515 | + def test_jwks(self): |
| 516 | + self.server.cdb["some_cid"] = {"client_secret": "top secret", |
| 517 | + "jwks": JWK0} |
| 518 | + check_key_availability(self.server, self.jwt) |
| 519 | + self.assertTrue("some_cid" in self.server.keyjar) |
| 520 | + # Two symmetric and one remote |
| 521 | + self.assertEqual(len(self.server.keyjar["some_cid"]), 3) |
| 522 | + |
| 523 | + def test_jwks_uri(self): |
| 524 | + self.server.cdb["some_cid"] = {"client_secret": "top secret", |
| 525 | + "jwks_uri": "https://example.com/key"} |
| 526 | + check_key_availability(self.server, self.jwt) |
| 527 | + self.assertTrue("some_cid" in self.server.keyjar) |
| 528 | + # Two symmetric and one remote |
| 529 | + self.assertEqual(len(self.server.keyjar["some_cid"]), 3) |
0 commit comments