11from unittest import TestCase , mock
22from flask import Flask
3- from authlib .jose import jwk
3+ from authlib .jose import JsonWebKey
44from authlib .jose .errors import InvalidClaimError
55from authlib .integrations .flask_client import OAuth
66from authlib .oidc .core .grants .util import generate_id_token
77from ..util import get_bearer_token , read_key_file
88
9+ secret_key = JsonWebKey .import_key ('secret' , {'kty' : 'oct' , 'kid' : 'f' })
10+
911
1012class FlaskUserMixinTest (TestCase ):
1113 def test_fetch_userinfo (self ):
@@ -32,10 +34,9 @@ def fake_send(sess, req, **kwargs):
3234 self .assertEqual (user .sub , '123' )
3335
3436 def test_parse_id_token (self ):
35- key = jwk .dumps ('secret' , 'oct' , kid = 'f' )
3637 token = get_bearer_token ()
3738 id_token = generate_id_token (
38- token , {'sub' : '123' }, key ,
39+ token , {'sub' : '123' }, secret_key ,
3940 alg = 'HS256' , iss = 'https://i.b' ,
4041 aud = 'dev' , exp = 3600 , nonce = 'n' ,
4142 )
@@ -48,7 +49,7 @@ def test_parse_id_token(self):
4849 client_id = 'dev' ,
4950 client_secret = 'dev' ,
5051 fetch_token = get_bearer_token ,
51- jwks = {'keys' : [key ]},
52+ jwks = {'keys' : [secret_key . as_dict () ]},
5253 issuer = 'https://i.b' ,
5354 id_token_signing_alg_values_supported = ['HS256' , 'RS256' ],
5455 )
@@ -70,10 +71,9 @@ def test_parse_id_token(self):
7071 )
7172
7273 def test_parse_id_token_nonce_supported (self ):
73- key = jwk .dumps ('secret' , 'oct' , kid = 'f' )
7474 token = get_bearer_token ()
7575 id_token = generate_id_token (
76- token , {'sub' : '123' , 'nonce_supported' : False }, key ,
76+ token , {'sub' : '123' , 'nonce_supported' : False }, secret_key ,
7777 alg = 'HS256' , iss = 'https://i.b' ,
7878 aud = 'dev' , exp = 3600 ,
7979 )
@@ -86,7 +86,7 @@ def test_parse_id_token_nonce_supported(self):
8686 client_id = 'dev' ,
8787 client_secret = 'dev' ,
8888 fetch_token = get_bearer_token ,
89- jwks = {'keys' : [key ]},
89+ jwks = {'keys' : [secret_key . as_dict () ]},
9090 issuer = 'https://i.b' ,
9191 id_token_signing_alg_values_supported = ['HS256' , 'RS256' ],
9292 )
@@ -96,23 +96,24 @@ def test_parse_id_token_nonce_supported(self):
9696 self .assertEqual (user .sub , '123' )
9797
9898 def test_runtime_error_fetch_jwks_uri (self ):
99- key = jwk .dumps ('secret' , 'oct' , kid = 'f' )
10099 token = get_bearer_token ()
101100 id_token = generate_id_token (
102- token , {'sub' : '123' }, key ,
101+ token , {'sub' : '123' }, secret_key ,
103102 alg = 'HS256' , iss = 'https://i.b' ,
104103 aud = 'dev' , exp = 3600 , nonce = 'n' ,
105104 )
106105
107106 app = Flask (__name__ )
108107 app .secret_key = '!'
109108 oauth = OAuth (app )
109+ alt_key = secret_key .as_dict ()
110+ alt_key ['kid' ] = 'b'
110111 client = oauth .register (
111112 'dev' ,
112113 client_id = 'dev' ,
113114 client_secret = 'dev' ,
114115 fetch_token = get_bearer_token ,
115- jwks = {'keys' : [jwk . dumps ( 'secret' , 'oct' , kid = 'b' ) ]},
116+ jwks = {'keys' : [alt_key ]},
116117 issuer = 'https://i.b' ,
117118 id_token_signing_alg_values_supported = ['HS256' ],
118119 )
@@ -137,7 +138,7 @@ def test_force_fetch_jwks_uri(self):
137138 client_id = 'dev' ,
138139 client_secret = 'dev' ,
139140 fetch_token = get_bearer_token ,
140- jwks = {'keys' : [jwk . dumps ( 'secret' , 'oct' , kid = 'f' )]},
141+ jwks = {'keys' : [secret_key . as_dict ( )]},
141142 jwks_uri = 'https://i.b/jwks' ,
142143 issuer = 'https://i.b' ,
143144 )
0 commit comments