@@ -88,8 +88,12 @@ def test_identify_required_authn_params_none_required():
88
88
auth_service_names = ["service_a" , "service_b" ]
89
89
expected = {}
90
90
expected_used = set ()
91
- assert identify_required_authn_params (req_authn_params , auth_service_names ) == (
92
- expected ,
91
+ result = identify_required_authn_params (
92
+ req_authn_params , req_authz_tokens , auth_service_names
93
+ )
94
+ assert result == (
95
+ expected_params ,
96
+ expected_authz ,
93
97
expected_used ,
94
98
)
95
99
@@ -101,10 +105,15 @@ def test_identify_required_authn_params_all_covered():
101
105
"token_b" : ["service_b" , "service_c" ],
102
106
}
103
107
auth_service_names = ["service_a" , "service_b" ]
104
- expected = {}
105
- expected_used = set (auth_service_names )
106
- assert identify_required_authn_params (req_authn_params , auth_service_names ) == (
107
- expected ,
108
+ expected_params = {}
109
+ expected_authz : list [str ] = []
110
+ expected_used = {"service_a" , "service_b" }
111
+ result = identify_required_authn_params (
112
+ req_authn_params , req_authz_tokens , auth_service_names
113
+ )
114
+ assert result == (
115
+ expected_params ,
116
+ expected_authz ,
108
117
expected_used ,
109
118
)
110
119
@@ -122,9 +131,15 @@ def test_identify_required_authn_params_some_covered():
122
131
"token_d" : ["service_d" ],
123
132
"token_e" : ["service_e" , "service_f" ],
124
133
}
125
- expected_used = set (auth_service_names )
126
- assert identify_required_authn_params (req_authn_params , auth_service_names ) == (
127
- expected ,
134
+ expected_authz : list [str ] = []
135
+ expected_used = {"service_a" , "service_b" }
136
+
137
+ result = identify_required_authn_params (
138
+ req_authn_params , req_authz_tokens , auth_service_names
139
+ )
140
+ assert result == (
141
+ expected_params ,
142
+ expected_authz ,
128
143
expected_used ,
129
144
)
130
145
@@ -141,8 +156,12 @@ def test_identify_required_authn_params_none_covered():
141
156
"token_e" : ["service_e" , "service_f" ],
142
157
}
143
158
expected_used = set ()
144
- assert identify_required_authn_params (req_authn_params , auth_service_names ) == (
145
- expected ,
159
+ result = identify_required_authn_params (
160
+ req_authn_params , req_authz_tokens , auth_service_names
161
+ )
162
+ assert result == (
163
+ expected_params ,
164
+ expected_authz ,
146
165
expected_used ,
147
166
)
148
167
@@ -159,8 +178,12 @@ def test_identify_required_authn_params_no_available_services():
159
178
"token_b" : ["service_b" , "service_c" ],
160
179
}
161
180
expected_used = set ()
162
- assert identify_required_authn_params (req_authn_params , auth_service_names ) == (
163
- expected ,
181
+ result = identify_required_authn_params (
182
+ req_authn_params , req_authz_tokens , auth_service_names
183
+ )
184
+ assert result == (
185
+ expected_params ,
186
+ expected_authz ,
164
187
expected_used ,
165
188
)
166
189
@@ -175,8 +198,164 @@ def test_identify_required_authn_params_empty_services_for_param():
175
198
"token_x" : [],
176
199
}
177
200
expected_used = set ()
178
- assert identify_required_authn_params (req_authn_params , auth_service_names ) == (
179
- expected ,
201
+ result = identify_required_authn_params (
202
+ req_authn_params , req_authz_tokens , auth_service_names
203
+ )
204
+ assert result == (
205
+ expected_params ,
206
+ expected_authz ,
207
+ expected_used ,
208
+ )
209
+
210
+
211
+ def test_identify_auth_params_only_authz_empty ():
212
+ """Test with empty req_authz_tokens and no authn params."""
213
+ req_authn_params : dict [str , list [str ]] = {}
214
+ req_authz_tokens : list [str ] = []
215
+ auth_service_names = ["s1" ]
216
+ result = identify_required_authn_params (
217
+ req_authn_params , req_authz_tokens , auth_service_names
218
+ )
219
+ assert result == ({}, [], set ())
220
+
221
+
222
+ def test_identify_auth_params_authz_all_covered ():
223
+ """Test when all req_authz_tokens are covered by auth_service_names."""
224
+ req_authn_params : dict [str , list [str ]] = {}
225
+ req_authz_tokens = ["s1" , "s2" ]
226
+ auth_service_names = ["s1" , "s2" , "s3" ]
227
+ result = identify_required_authn_params (
228
+ req_authn_params , req_authz_tokens , auth_service_names
229
+ )
230
+ assert result == ({}, [], {"s1" , "s2" })
231
+
232
+
233
+ def test_identify_auth_params_authz_partially_covered_by_available ():
234
+ """Test when some req_authz_tokens are covered."""
235
+ req_authn_params : dict [str , list [str ]] = {}
236
+ req_authz_tokens = ["s1" , "s2" ]
237
+ auth_service_names = ["s1" , "s3" ]
238
+ result = identify_required_authn_params (
239
+ req_authn_params , req_authz_tokens , auth_service_names
240
+ )
241
+ assert result == ({}, [], {"s1" })
242
+
243
+
244
+ def test_identify_auth_params_authz_none_covered ():
245
+ """Test when none of req_authz_tokens are covered by auth_service_names."""
246
+ req_authn_params : dict [str , list [str ]] = {}
247
+ req_authz_tokens = ["s1" , "s2" ]
248
+ auth_service_names = ["s3" , "s4" ]
249
+ result = identify_required_authn_params (
250
+ req_authn_params , req_authz_tokens , auth_service_names
251
+ )
252
+ assert result == ({}, ["s1" , "s2" ], set ())
253
+
254
+
255
+ def test_identify_auth_params_authz_none_covered_empty_available ():
256
+ """Test with req_authz_tokens but no available services."""
257
+ req_authn_params : dict [str , list [str ]] = {}
258
+ req_authz_tokens = ["s1" , "s2" ]
259
+ auth_service_names : list [str ] = []
260
+ result = identify_required_authn_params (
261
+ req_authn_params , req_authz_tokens , auth_service_names
262
+ )
263
+ assert result == ({}, ["s1" , "s2" ], set ())
264
+
265
+
266
+ def test_identify_auth_params_authn_covered_authz_uncovered ():
267
+ """Test authn params covered, but authz tokens are not."""
268
+ req_authn_params = {"param1" : ["s_authn1" ]}
269
+ req_authz_tokens = ["s_authz_needed1" , "s_authz_needed2" ]
270
+ auth_service_names = ["s_authn1" , "s_other" ]
271
+ expected_params = {}
272
+ expected_authz : list [str ] = ["s_authz_needed1" , "s_authz_needed2" ]
273
+ expected_used = {"s_authn1" }
274
+ result = identify_required_authn_params (
275
+ req_authn_params , req_authz_tokens , auth_service_names
276
+ )
277
+ assert result == (expected_params , expected_authz , expected_used )
278
+
279
+
280
+ def test_identify_auth_params_authn_uncovered_authz_covered ():
281
+ """Test authn params not covered, but authz tokens are covered."""
282
+ req_authn_params = {"param1" : ["s_authn_needed" ]}
283
+ req_authz_tokens = ["s_authz1" ]
284
+ auth_service_names = ["s_authz1" , "s_other" ]
285
+ expected_params = {"param1" : ["s_authn_needed" ]}
286
+ expected_authz : list [str ] = []
287
+ expected_used = {"s_authz1" }
288
+
289
+ result = identify_required_authn_params (
290
+ req_authn_params , req_authz_tokens , auth_service_names
291
+ )
292
+ assert result == (expected_params , expected_authz , expected_used )
293
+
294
+
295
+ def test_identify_auth_params_authn_and_authz_covered_no_overlap ():
296
+ """Test both authn and authz are covered by different services."""
297
+ req_authn_params = {"param1" : ["s_authn1" ]}
298
+ req_authz_tokens = ["s_authz1" ]
299
+ auth_service_names = ["s_authn1" , "s_authz1" ]
300
+ expected_params = {}
301
+ expected_authz : list [str ] = []
302
+ expected_used = {"s_authn1" , "s_authz1" }
303
+ result = identify_required_authn_params (
304
+ req_authn_params , req_authz_tokens , auth_service_names
305
+ )
306
+ assert result == (expected_params , expected_authz , expected_used )
307
+
308
+
309
+ def test_identify_auth_params_authn_and_authz_covered_with_overlap ():
310
+ """Test both authn and authz are covered, with some services overlapping."""
311
+ req_authn_params = {"param1" : ["s_common" ], "param2" : ["s_authn_specific_avail" ]}
312
+ req_authz_tokens = ["s_common" , "s_authz_specific_avail" ]
313
+ auth_service_names = [
314
+ "s_common" ,
315
+ "s_authz_specific_avail" ,
316
+ "s_authn_specific_avail" ,
317
+ ]
318
+ expected_params = {}
319
+ expected_authz : list [str ] = []
320
+ expected_used = {"s_common" , "s_authz_specific_avail" , "s_authn_specific_avail" }
321
+ result = identify_required_authn_params (
322
+ req_authn_params , req_authz_tokens , auth_service_names
323
+ )
324
+ assert result == (expected_params , expected_authz , expected_used )
325
+
326
+
327
+ def test_identify_auth_params_authn_and_authz_covered_with_overlap_same_param ():
328
+ """Test both authn and authz are covered, with some services overlapping within same param."""
329
+ req_authn_params = {"param1" : ["s_common" , "s_authn_specific_avail" ]}
330
+ req_authz_tokens = ["s_common" , "s_authz_specific_avail" ]
331
+ auth_service_names = [
332
+ "s_common" ,
333
+ "s_authz_specific_avail" ,
334
+ "s_authn_specific_avail" ,
335
+ ]
336
+ expected_params = {}
337
+ expected_authz : list [str ] = []
338
+ expected_used = {"s_common" , "s_authz_specific_avail" , "s_authn_specific_avail" }
339
+ result = identify_required_authn_params (
340
+ req_authn_params , req_authz_tokens , auth_service_names
341
+ )
342
+ assert result == (expected_params , expected_authz , expected_used )
343
+
344
+
345
+ def test_identify_auth_params_complex_scenario ():
346
+ """Test a more complex scenario with partial coverage for both authn and authz."""
347
+ req_authn_params = {"p1" : ["s1" , "s2" ], "p2" : ["s3" ]}
348
+ req_authz_tokens = ["s4" , "s6" ]
349
+ auth_service_names = ["s1" , "s4" , "s5" ]
350
+ expected_params = {"p2" : ["s3" ]}
351
+ expected_authz : list [str ] = []
352
+ expected_used = {"s1" , "s4" }
353
+ result = identify_required_authn_params (
354
+ req_authn_params , req_authz_tokens , auth_service_names
355
+ )
356
+ assert result == (
357
+ expected_params ,
358
+ expected_authz ,
180
359
expected_used ,
181
360
)
182
361
0 commit comments