Skip to content

Commit d2d3a08

Browse files
author
Michael Davis
committed
Update JWK tests
1 parent 6dfedac commit d2d3a08

File tree

2 files changed

+118
-1
lines changed

2 files changed

+118
-1
lines changed

tests/test_jwk.py

Lines changed: 118 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,118 @@
1+
2+
from jose import jwk
3+
from jose.exceptions import JWKError
4+
5+
import pytest
6+
7+
hmac_key = {
8+
"kty": "oct",
9+
"kid": "018c0ae5-4d9b-471b-bfd6-eef314bc7037",
10+
"use": "sig",
11+
"alg": "HS256",
12+
"k": "hJtXIZ2uSN5kbQfbtTNWbpdmhkV8FJG-Onbc6mxCcYg"
13+
}
14+
15+
rsa_key = {
16+
"kty": "RSA",
17+
18+
"use": "sig",
19+
"n": "n4EPtAOCc9AlkeQHPzHStgAbgs7bTZLwUBZdR8_KuKPEHLd4rHVTeT-O-XV2jRojdNhxJWTDvNd7nqQ0VEiZQHz_AJmSCpMaJMRBSFKrKb2wqVwGU_NsYOYL-QtiWN2lbzcEe6XC0dApr5ydQLrHqkHHig3RBordaZ6Aj-oBHqFEHYpPe7Tpe-OfVfHd1E6cS6M1FZcD1NNLYD5lFHpPI9bTwJlsde3uhGqC0ZCuEHg8lhzwOHrtIQbS0FVbb9k3-tVTU4fg_3L_vniUFAKwuCLqKnS2BYwdq_mzSnbLY7h_qixoR7jig3__kRhuaxwUkRz5iaiQkqgc5gHdrNP5zw",
20+
"e": "AQAB"
21+
}
22+
23+
ec_key = {
24+
"kty": "EC",
25+
26+
"use": "sig",
27+
"crv": "P-521",
28+
"x": "AHKZLLOsCOzz5cY97ewNUajB957y-C-U88c3v13nmGZx6sYl_oJXu9A5RkTKqjqvjyekWF-7ytDyRXYgCF5cj0Kt",
29+
"y": "AdymlHvOiLxXkEhayXQnNCvDX4h9htZaCJN34kfmC6pV5OhQHiraVySsUdaQkAgDPrwQrJmbnX9cwlGfP-HqHZR1"
30+
}
31+
32+
33+
class TestJWK:
34+
35+
def test_interface(self):
36+
37+
key = jwk.Key()
38+
39+
with pytest.raises(NotImplementedError):
40+
key._process_jwk(None)
41+
42+
with pytest.raises(NotImplementedError):
43+
key.sign('')
44+
45+
with pytest.raises(NotImplementedError):
46+
key.verify('', '')
47+
48+
def test_invalid_hash_alg(self):
49+
with pytest.raises(JWKError):
50+
key = jwk.HMACKey(hmac_key, 'RS512')
51+
52+
with pytest.raises(JWKError):
53+
key = jwk.RSAKey(rsa_key, 'HS512')
54+
55+
with pytest.raises(JWKError):
56+
key = jwk.ECKey(ec_key, 'RS512')
57+
58+
def test_invalid_jwk(self):
59+
60+
with pytest.raises(JWKError):
61+
key = jwk.HMACKey(rsa_key, 'HS512')
62+
63+
with pytest.raises(JWKError):
64+
key = jwk.HMACKey(hmac_key, 'RS512')
65+
66+
with pytest.raises(JWKError):
67+
key = jwk.HMACKey(rsa_key, 'EC512')
68+
69+
def test_RSAKey_errors(self):
70+
71+
rsa_key = {
72+
"kty": "RSA",
73+
74+
"use": "sig",
75+
"n": "n4EPtAOCc9AlkeQHPzHStgAbgs7bTZLwUBZdR8_KuKPEHLd4rHVTeT-O-XV2jRojdNhxJWTDvNd7nqQ0VEiZQHz_AJmSCpMaJMRBSFKrKb2wqVwGU_NsYOYL-QtiWN2lbzcEe6XC0dApr5ydQLrHqkHHig3RBordaZ6Aj-oBHqFEHYpPe7Tpe-OfVfHd1E6cS6M1FZcD1NNLYD5lFHpPI9bTwJlsde3uhGqC0ZCuEHg8lhzwOHrtIQbS0FVbb9k3-tVTU4fg_3L_vniUFAKwuCLqKnS2BYwdq_mzSnbLY7h_qixoR7jig3__kRhuaxwUkRz5iaiQkqgc5gHdrNP5zw",
76+
"e": "AQAB"
77+
}
78+
79+
with pytest.raises(JWKError):
80+
key = jwk.RSAKey(rsa_key, 'HS256')
81+
82+
rsa_key = {
83+
"kty": "oct",
84+
85+
"use": "sig",
86+
"n": "n4EPtAOCc9AlkeQHPzHStgAbgs7bTZLwUBZdR8_KuKPEHLd4rHVTeT-O-XV2jRojdNhxJWTDvNd7nqQ0VEiZQHz_AJmSCpMaJMRBSFKrKb2wqVwGU_NsYOYL-QtiWN2lbzcEe6XC0dApr5ydQLrHqkHHig3RBordaZ6Aj-oBHqFEHYpPe7Tpe-OfVfHd1E6cS6M1FZcD1NNLYD5lFHpPI9bTwJlsde3uhGqC0ZCuEHg8lhzwOHrtIQbS0FVbb9k3-tVTU4fg_3L_vniUFAKwuCLqKnS2BYwdq_mzSnbLY7h_qixoR7jig3__kRhuaxwUkRz5iaiQkqgc5gHdrNP5zw",
87+
"e": "AQAB"
88+
}
89+
90+
with pytest.raises(JWKError):
91+
key = jwk.RSAKey(rsa_key, 'RS256')
92+
93+
94+
95+
def test_construct_from_jwk(self):
96+
97+
hmac_key = {
98+
"kty": "oct",
99+
"kid": "018c0ae5-4d9b-471b-bfd6-eef314bc7037",
100+
"use": "sig",
101+
"alg": "HS256",
102+
"k": "hJtXIZ2uSN5kbQfbtTNWbpdmhkV8FJG-Onbc6mxCcYg"
103+
}
104+
105+
key = jwk.construct(hmac_key)
106+
assert isinstance(key, jwk.Key)
107+
108+
def test_construct_from_jwk_missing_alg(self):
109+
110+
hmac_key = {
111+
"kty": "oct",
112+
"kid": "018c0ae5-4d9b-471b-bfd6-eef314bc7037",
113+
"use": "sig",
114+
"k": "hJtXIZ2uSN5kbQfbtTNWbpdmhkV8FJG-Onbc6mxCcYg"
115+
}
116+
117+
with pytest.raises(JWKError):
118+
key = jwk.construct(hmac_key)

tests/test_jws.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11

2-
32
from jose import jws
43
from jose.constants import ALGORITHMS
54
from jose.exceptions import JWSError

0 commit comments

Comments
 (0)