|
8 | 8 | import requests |
9 | 9 | import responses |
10 | 10 | from cryptography.hazmat.primitives.asymmetric import rsa |
11 | | -from cryptojwt.jwk.ec import new_ec_key |
| 11 | + |
12 | 12 | from cryptojwt.jwk.ec import ECKey |
| 13 | +from cryptojwt.jwk.ec import new_ec_key |
13 | 14 | from cryptojwt.jwk.hmac import SYMKey |
14 | 15 | from cryptojwt.jwk.rsa import RSAKey |
15 | 16 | from cryptojwt.jwk.rsa import import_rsa_key_from_cert_file |
@@ -448,7 +449,7 @@ def test_dump_jwks(): |
448 | 449 | assert len(nkb.get('rsa')) == 2 |
449 | 450 |
|
450 | 451 | # Will dump symmetric keys |
451 | | - dump_jwks([kb1, kb2], 'jwks_combo',symmetric_too=True) |
| 452 | + dump_jwks([kb1, kb2], 'jwks_combo', symmetric_too=True) |
452 | 453 |
|
453 | 454 | # Now read it |
454 | 455 | nkb = KeyBundle(source='file://jwks_combo', fileformat='jwks') |
@@ -920,3 +921,48 @@ def test_init_key(): |
920 | 921 | # Now _jwk3 is stored in the file |
921 | 922 | _jwk4 = init_key(filename, "RSA") |
922 | 923 | assert _jwk4 == _jwk3 |
| 924 | + |
| 925 | + |
| 926 | +def test_export_inactive(): |
| 927 | + desc = {"kty": "oct", "key": "highestsupersecret", "use": "sig"} |
| 928 | + kb = KeyBundle([desc]) |
| 929 | + assert len(kb.keys()) == 1 |
| 930 | + for k in kb.keys(): |
| 931 | + kb.mark_as_inactive(k.kid) |
| 932 | + desc = {"kty": "oct", "key": "highestsupersecret", "use": "enc"} |
| 933 | + kb.do_keys([desc]) |
| 934 | + res = kb.dump() |
| 935 | + assert set(res.keys()) == {'cache_time', |
| 936 | + 'fileformat', |
| 937 | + 'httpc_params', |
| 938 | + 'imp_jwks', |
| 939 | + 'keys', |
| 940 | + 'last_updated', |
| 941 | + 'remote', |
| 942 | + 'time_out'} |
| 943 | + |
| 944 | + kb2 = KeyBundle().load(res) |
| 945 | + assert len(kb2.keys()) == 2 |
| 946 | + assert len(kb2.active_keys()) == 1 |
| 947 | + |
| 948 | + |
| 949 | +def test_remote(): |
| 950 | + source = 'https://example.com/keys.json' |
| 951 | + # Mock response |
| 952 | + with responses.RequestsMock() as rsps: |
| 953 | + rsps.add(method="GET", url=source, json=JWKS_DICT, status=200) |
| 954 | + httpc_params = {'timeout': (2, 2)} # connect, read timeouts in seconds |
| 955 | + kb = KeyBundle(source=source, httpc=requests.request, |
| 956 | + httpc_params=httpc_params) |
| 957 | + kb.do_remote() |
| 958 | + |
| 959 | + exp = kb.dump() |
| 960 | + kb2 = KeyBundle().load(exp) |
| 961 | + assert kb2.source == source |
| 962 | + assert len(kb2.keys()) == 3 |
| 963 | + assert len(kb2.get("rsa")) == 1 |
| 964 | + assert len(kb2.get("oct")) == 1 |
| 965 | + assert len(kb2.get("ec")) == 1 |
| 966 | + assert kb2.httpc_params == {'timeout': (2, 2)} |
| 967 | + assert kb2.imp_jwks |
| 968 | + assert kb2.last_updated |
0 commit comments