88 JoseError ,
99 MissingClaimError ,
1010)
11+ from django .conf import settings
1112
1213from manage_breast_screening .auth .services import (
13- DecodeLogoutToken ,
1414 InvalidLogoutToken ,
15+ decode_logout_token ,
1516)
1617
1718
@@ -30,13 +31,12 @@ def _make_token(
3031 private_jwk : dict ,
3132 kid : str ,
3233 issuer : str ,
33- client_id : str ,
3434 overrides : dict | None = None ,
3535 ) -> str :
3636 now = int (time .time ())
3737 payload = {
3838 "iss" : issuer ,
39- "aud" : client_id ,
39+ "aud" : settings . CIS2_CLIENT_ID ,
4040 "iat" : now ,
4141 "exp" : now + 300 ,
4242 "events" : {"http://schemas.openid.net/event/backchannel-logout" : {}},
@@ -57,28 +57,24 @@ def _make_token(
5757
5858 @staticmethod
5959 def _key_loader (public_jwk : dict ):
60- def loader (headers , payload ):
60+ def loader (_headers , _payload ):
6161 return public_jwk
6262
6363 return loader
6464
6565 def test_valid_token_returns_claims (self ):
6666 kid = "k1"
67- issuer = "test-issuer"
68- client_id = "client-1"
6967 private_jwk , public_jwk = self ._make_keys (kid )
70- token = self ._make_token (private_jwk , kid , issuer , client_id )
71-
72- service = DecodeLogoutToken ()
73- claims = service .call (
74- metadata = {"issuer" : issuer },
75- logout_token = token ,
76- client_id = client_id ,
77- key_loader = self ._key_loader (public_jwk ),
68+ token = self ._make_token (private_jwk , kid , "test-issuer" )
69+
70+ claims = decode_logout_token (
71+ "test-issuer" ,
72+ self ._key_loader (public_jwk ),
73+ token ,
7874 )
7975
80- assert claims ["iss" ] == issuer
81- assert claims ["aud" ] == client_id
76+ assert claims ["iss" ] == "test- issuer"
77+ assert claims ["aud" ] == settings . CIS2_CLIENT_ID
8278 assert claims ["sub" ] == "user-123"
8379 assert "http://schemas.openid.net/event/backchannel-logout" in claims ["events" ]
8480
@@ -108,95 +104,71 @@ def test_invalid_claims_raise_error(
108104 self , overrides , expected_error_type , expected_error_text
109105 ):
110106 kid = "k1"
111- issuer = "test-issuer"
112- client_id = "client-1"
113107 private_jwk , public_jwk = self ._make_keys (kid )
114- token = self ._make_token (
115- private_jwk , kid , issuer , client_id , overrides = overrides
116- )
108+ token = self ._make_token (private_jwk , kid , "test-issuer" , overrides = overrides )
117109
118- service = DecodeLogoutToken ()
119110 with pytest .raises (InvalidLogoutToken ) as excinfo :
120- service .call (
121- metadata = {"issuer" : issuer },
122- logout_token = token ,
123- client_id = client_id ,
124- key_loader = self ._key_loader (public_jwk ),
111+ decode_logout_token (
112+ "test-issuer" ,
113+ self ._key_loader (public_jwk ),
114+ token ,
125115 )
126116
127- # Assert on the cause type and error message content
128- assert isinstance (excinfo .value .cause , expected_error_type )
129- assert expected_error_text in str (excinfo .value .cause )
117+ assert isinstance (excinfo .value .__cause__ , expected_error_type )
118+ assert expected_error_text in str (excinfo .value .__cause__ )
130119
131120 def test_invalid_signature_raises_error (self ):
132121 kid = "k1"
133- issuer = "test-issuer"
134- client_id = "client-1"
135122 # Create two different key pairs
136123 private_jwk_1 , public_jwk_1 = self ._make_keys (kid )
137124 private_jwk_2 , _public_jwk_2 = self ._make_keys (kid )
138125 # Sign with private_jwk_2 but verify with public_jwk_1 -> invalid signature
139- token = self ._make_token (private_jwk_2 , kid , issuer , client_id )
126+ token = self ._make_token (private_jwk_2 , kid , "test- issuer" )
140127
141- service = DecodeLogoutToken ()
142128 with pytest .raises (InvalidLogoutToken ) as excinfo :
143- service .call (
144- metadata = {"issuer" : issuer },
145- logout_token = token ,
146- client_id = client_id ,
147- key_loader = self ._key_loader (public_jwk_1 ),
129+ decode_logout_token (
130+ "test-issuer" ,
131+ self ._key_loader (public_jwk_1 ),
132+ token ,
148133 )
149134
150- # Invalid signature should raise a JoseError
151- assert isinstance (excinfo .value .cause , JoseError )
152- assert "signature" in str (excinfo .value .cause ).lower ()
135+ assert isinstance (excinfo .value .__cause__ , JoseError )
136+ assert "signature" in str (excinfo .value .__cause__ )
153137
154138 def test_expired_token_raises_error (self ):
155139 kid = "k1"
156- issuer = "test-issuer"
157- client_id = "client-1"
158140 private_jwk , public_jwk = self ._make_keys (kid )
159141 now = int (time .time ())
160142 token = self ._make_token (
161143 private_jwk ,
162144 kid ,
163- issuer ,
164- client_id ,
145+ "test-issuer" ,
165146 overrides = {"exp" : now - 120 }, # already expired beyond leeway
166147 )
167148
168- service = DecodeLogoutToken ()
169149 with pytest .raises (InvalidLogoutToken ) as excinfo :
170- service .call (
171- metadata = {"issuer" : issuer },
172- logout_token = token ,
173- client_id = client_id ,
174- key_loader = self ._key_loader (public_jwk ),
150+ decode_logout_token (
151+ "test-issuer" ,
152+ self ._key_loader (public_jwk ),
153+ token ,
175154 )
176-
177- # Expired token should raise an ExpiredTokenError
178- assert isinstance (excinfo .value .cause , ExpiredTokenError )
179- assert "expired" in str (excinfo .value .cause ).lower ()
155+ assert isinstance (excinfo .value .__cause__ , ExpiredTokenError )
156+ assert "expired" in str (excinfo .value .__cause__ )
180157
181158 def test_missing_iat_raises_error (self ):
182159 kid = "k1"
183- issuer = "test-issuer"
184- client_id = "client-1"
185160 private_jwk , public_jwk = self ._make_keys (kid )
186161 # Use overrides to remove the iat claim
187162 token = self ._make_token (
188- private_jwk , kid , issuer , client_id , overrides = {"iat" : None }
163+ private_jwk , kid , "test- issuer" , overrides = {"iat" : None }
189164 )
190165
191- service = DecodeLogoutToken ()
192166 with pytest .raises (InvalidLogoutToken ) as excinfo :
193- service .call (
194- metadata = {"issuer" : issuer },
195- logout_token = token ,
196- client_id = client_id ,
197- key_loader = self ._key_loader (public_jwk ),
167+ decode_logout_token (
168+ "test-issuer" ,
169+ self ._key_loader (public_jwk ),
170+ token ,
198171 )
199172
200- # Missing iat should raise a MissingClaimError
201- assert isinstance (excinfo .value .cause , MissingClaimError )
202- assert "iat" in str (excinfo .value .cause ).lower ()
173+ assert isinstance (excinfo .value .__cause__ , MissingClaimError )
174+ assert "iat" in str (excinfo .value .__cause__ )
0 commit comments