Skip to content

Commit 1e8d265

Browse files
committed
chore: Improve readability
1 parent bf10677 commit 1e8d265

File tree

1 file changed

+194
-15
lines changed

1 file changed

+194
-15
lines changed

packages/toolbox-core/tests/test_utils.py

Lines changed: 194 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -88,8 +88,12 @@ def test_identify_required_authn_params_none_required():
8888
auth_service_names = ["service_a", "service_b"]
8989
expected = {}
9090
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,
9397
expected_used,
9498
)
9599

@@ -101,10 +105,15 @@ def test_identify_required_authn_params_all_covered():
101105
"token_b": ["service_b", "service_c"],
102106
}
103107
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,
108117
expected_used,
109118
)
110119

@@ -122,9 +131,15 @@ def test_identify_required_authn_params_some_covered():
122131
"token_d": ["service_d"],
123132
"token_e": ["service_e", "service_f"],
124133
}
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,
128143
expected_used,
129144
)
130145

@@ -141,8 +156,12 @@ def test_identify_required_authn_params_none_covered():
141156
"token_e": ["service_e", "service_f"],
142157
}
143158
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,
146165
expected_used,
147166
)
148167

@@ -159,8 +178,12 @@ def test_identify_required_authn_params_no_available_services():
159178
"token_b": ["service_b", "service_c"],
160179
}
161180
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,
164187
expected_used,
165188
)
166189

@@ -175,8 +198,164 @@ def test_identify_required_authn_params_empty_services_for_param():
175198
"token_x": [],
176199
}
177200
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,
180359
expected_used,
181360
)
182361

0 commit comments

Comments
 (0)