Skip to content

Commit c969f5b

Browse files
fix(client): ensure path params are non-empty (#263)
1 parent 60bc727 commit c969f5b

File tree

12 files changed

+182
-0
lines changed

12 files changed

+182
-0
lines changed

src/finch/resources/hris/benefits/benefits.py

+8
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,8 @@ def retrieve(
123123
124124
timeout: Override the client-level default timeout for this request, in seconds
125125
"""
126+
if not benefit_id:
127+
raise ValueError(f"Expected a non-empty value for `benefit_id` but received {benefit_id!r}")
126128
return self._get(
127129
f"/employer/benefits/{benefit_id}",
128130
options=make_request_options(
@@ -159,6 +161,8 @@ def update(
159161
160162
timeout: Override the client-level default timeout for this request, in seconds
161163
"""
164+
if not benefit_id:
165+
raise ValueError(f"Expected a non-empty value for `benefit_id` but received {benefit_id!r}")
162166
return self._post(
163167
f"/employer/benefits/{benefit_id}",
164168
body=maybe_transform({"description": description}, benefit_update_params.BenefitUpdateParams),
@@ -302,6 +306,8 @@ async def retrieve(
302306
303307
timeout: Override the client-level default timeout for this request, in seconds
304308
"""
309+
if not benefit_id:
310+
raise ValueError(f"Expected a non-empty value for `benefit_id` but received {benefit_id!r}")
305311
return await self._get(
306312
f"/employer/benefits/{benefit_id}",
307313
options=make_request_options(
@@ -338,6 +344,8 @@ async def update(
338344
339345
timeout: Override the client-level default timeout for this request, in seconds
340346
"""
347+
if not benefit_id:
348+
raise ValueError(f"Expected a non-empty value for `benefit_id` but received {benefit_id!r}")
341349
return await self._post(
342350
f"/employer/benefits/{benefit_id}",
343351
body=maybe_transform({"description": description}, benefit_update_params.BenefitUpdateParams),

src/finch/resources/hris/benefits/individuals.py

+16
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,8 @@ def enroll_many(
7474
7575
timeout: Override the client-level default timeout for this request, in seconds
7676
"""
77+
if not benefit_id:
78+
raise ValueError(f"Expected a non-empty value for `benefit_id` but received {benefit_id!r}")
7779
return self._get_api_list(
7880
f"/employer/benefits/{benefit_id}/individuals",
7981
page=SyncSinglePage[EnrolledIndividual],
@@ -110,6 +112,8 @@ def enrolled_ids(
110112
111113
timeout: Override the client-level default timeout for this request, in seconds
112114
"""
115+
if not benefit_id:
116+
raise ValueError(f"Expected a non-empty value for `benefit_id` but received {benefit_id!r}")
113117
return self._get(
114118
f"/employer/benefits/{benefit_id}/enrolled",
115119
options=make_request_options(
@@ -147,6 +151,8 @@ def retrieve_many_benefits(
147151
148152
timeout: Override the client-level default timeout for this request, in seconds
149153
"""
154+
if not benefit_id:
155+
raise ValueError(f"Expected a non-empty value for `benefit_id` but received {benefit_id!r}")
150156
return self._get_api_list(
151157
f"/employer/benefits/{benefit_id}/individuals",
152158
page=SyncSinglePage[IndividualBenefit],
@@ -191,6 +197,8 @@ def unenroll_many(
191197
192198
timeout: Override the client-level default timeout for this request, in seconds
193199
"""
200+
if not benefit_id:
201+
raise ValueError(f"Expected a non-empty value for `benefit_id` but received {benefit_id!r}")
194202
return self._get_api_list(
195203
f"/employer/benefits/{benefit_id}/individuals",
196204
page=SyncSinglePage[UnenrolledIndividual],
@@ -249,6 +257,8 @@ def enroll_many(
249257
250258
timeout: Override the client-level default timeout for this request, in seconds
251259
"""
260+
if not benefit_id:
261+
raise ValueError(f"Expected a non-empty value for `benefit_id` but received {benefit_id!r}")
252262
return self._get_api_list(
253263
f"/employer/benefits/{benefit_id}/individuals",
254264
page=AsyncSinglePage[EnrolledIndividual],
@@ -285,6 +295,8 @@ async def enrolled_ids(
285295
286296
timeout: Override the client-level default timeout for this request, in seconds
287297
"""
298+
if not benefit_id:
299+
raise ValueError(f"Expected a non-empty value for `benefit_id` but received {benefit_id!r}")
288300
return await self._get(
289301
f"/employer/benefits/{benefit_id}/enrolled",
290302
options=make_request_options(
@@ -322,6 +334,8 @@ def retrieve_many_benefits(
322334
323335
timeout: Override the client-level default timeout for this request, in seconds
324336
"""
337+
if not benefit_id:
338+
raise ValueError(f"Expected a non-empty value for `benefit_id` but received {benefit_id!r}")
325339
return self._get_api_list(
326340
f"/employer/benefits/{benefit_id}/individuals",
327341
page=AsyncSinglePage[IndividualBenefit],
@@ -366,6 +380,8 @@ def unenroll_many(
366380
367381
timeout: Override the client-level default timeout for this request, in seconds
368382
"""
383+
if not benefit_id:
384+
raise ValueError(f"Expected a non-empty value for `benefit_id` but received {benefit_id!r}")
369385
return self._get_api_list(
370386
f"/employer/benefits/{benefit_id}/individuals",
371387
page=AsyncSinglePage[UnenrolledIndividual],

src/finch/resources/jobs/automated.py

+4
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,8 @@ def retrieve(
9898
9999
timeout: Override the client-level default timeout for this request, in seconds
100100
"""
101+
if not job_id:
102+
raise ValueError(f"Expected a non-empty value for `job_id` but received {job_id!r}")
101103
return self._get(
102104
f"/jobs/automated/{job_id}",
103105
options=make_request_options(
@@ -233,6 +235,8 @@ async def retrieve(
233235
234236
timeout: Override the client-level default timeout for this request, in seconds
235237
"""
238+
if not job_id:
239+
raise ValueError(f"Expected a non-empty value for `job_id` but received {job_id!r}")
236240
return await self._get(
237241
f"/jobs/automated/{job_id}",
238242
options=make_request_options(

src/finch/resources/jobs/manual.py

+4
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,8 @@ def retrieve(
5151
5252
timeout: Override the client-level default timeout for this request, in seconds
5353
"""
54+
if not job_id:
55+
raise ValueError(f"Expected a non-empty value for `job_id` but received {job_id!r}")
5456
return self._get(
5557
f"/jobs/manual/{job_id}",
5658
options=make_request_options(
@@ -94,6 +96,8 @@ async def retrieve(
9496
9597
timeout: Override the client-level default timeout for this request, in seconds
9698
"""
99+
if not job_id:
100+
raise ValueError(f"Expected a non-empty value for `job_id` but received {job_id!r}")
97101
return await self._get(
98102
f"/jobs/manual/{job_id}",
99103
options=make_request_options(

src/finch/resources/sandbox/employment.py

+4
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,8 @@ def update(
101101
102102
timeout: Override the client-level default timeout for this request, in seconds
103103
"""
104+
if not individual_id:
105+
raise ValueError(f"Expected a non-empty value for `individual_id` but received {individual_id!r}")
104106
return self._put(
105107
f"/sandbox/employment/{individual_id}",
106108
body=maybe_transform(
@@ -211,6 +213,8 @@ async def update(
211213
212214
timeout: Override the client-level default timeout for this request, in seconds
213215
"""
216+
if not individual_id:
217+
raise ValueError(f"Expected a non-empty value for `individual_id` but received {individual_id!r}")
214218
return await self._put(
215219
f"/sandbox/employment/{individual_id}",
216220
body=maybe_transform(

src/finch/resources/sandbox/individual.py

+4
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,8 @@ def update(
100100
101101
timeout: Override the client-level default timeout for this request, in seconds
102102
"""
103+
if not individual_id:
104+
raise ValueError(f"Expected a non-empty value for `individual_id` but received {individual_id!r}")
103105
return self._put(
104106
f"/sandbox/individual/{individual_id}",
105107
body=maybe_transform(
@@ -204,6 +206,8 @@ async def update(
204206
205207
timeout: Override the client-level default timeout for this request, in seconds
206208
"""
209+
if not individual_id:
210+
raise ValueError(f"Expected a non-empty value for `individual_id` but received {individual_id!r}")
207211
return await self._put(
208212
f"/sandbox/individual/{individual_id}",
209213
body=maybe_transform(

tests/api_resources/hris/benefits/test_individuals.py

+58
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,14 @@ def test_streaming_response_enroll_many(self, client: Finch) -> None:
6161

6262
assert cast(Any, response.is_closed) is True
6363

64+
@parametrize
65+
def test_path_params_enroll_many(self, client: Finch) -> None:
66+
with pytest.raises(ValueError, match=r"Expected a non-empty value for `benefit_id` but received ''"):
67+
client.hris.benefits.individuals.with_raw_response.enroll_many(
68+
"",
69+
individuals=[{}],
70+
)
71+
6472
@parametrize
6573
def test_method_enrolled_ids(self, client: Finch) -> None:
6674
individual = client.hris.benefits.individuals.enrolled_ids(
@@ -92,6 +100,13 @@ def test_streaming_response_enrolled_ids(self, client: Finch) -> None:
92100

93101
assert cast(Any, response.is_closed) is True
94102

103+
@parametrize
104+
def test_path_params_enrolled_ids(self, client: Finch) -> None:
105+
with pytest.raises(ValueError, match=r"Expected a non-empty value for `benefit_id` but received ''"):
106+
client.hris.benefits.individuals.with_raw_response.enrolled_ids(
107+
"",
108+
)
109+
95110
@parametrize
96111
def test_method_retrieve_many_benefits(self, client: Finch) -> None:
97112
individual = client.hris.benefits.individuals.retrieve_many_benefits(
@@ -131,6 +146,13 @@ def test_streaming_response_retrieve_many_benefits(self, client: Finch) -> None:
131146

132147
assert cast(Any, response.is_closed) is True
133148

149+
@parametrize
150+
def test_path_params_retrieve_many_benefits(self, client: Finch) -> None:
151+
with pytest.raises(ValueError, match=r"Expected a non-empty value for `benefit_id` but received ''"):
152+
client.hris.benefits.individuals.with_raw_response.retrieve_many_benefits(
153+
"",
154+
)
155+
134156
@parametrize
135157
def test_method_unenroll_many(self, client: Finch) -> None:
136158
individual = client.hris.benefits.individuals.unenroll_many(
@@ -170,6 +192,13 @@ def test_streaming_response_unenroll_many(self, client: Finch) -> None:
170192

171193
assert cast(Any, response.is_closed) is True
172194

195+
@parametrize
196+
def test_path_params_unenroll_many(self, client: Finch) -> None:
197+
with pytest.raises(ValueError, match=r"Expected a non-empty value for `benefit_id` but received ''"):
198+
client.hris.benefits.individuals.with_raw_response.unenroll_many(
199+
"",
200+
)
201+
173202

174203
class TestAsyncIndividuals:
175204
strict_client = AsyncFinch(base_url=base_url, access_token=access_token, _strict_response_validation=True)
@@ -210,6 +239,14 @@ async def test_streaming_response_enroll_many(self, client: AsyncFinch) -> None:
210239

211240
assert cast(Any, response.is_closed) is True
212241

242+
@parametrize
243+
async def test_path_params_enroll_many(self, client: AsyncFinch) -> None:
244+
with pytest.raises(ValueError, match=r"Expected a non-empty value for `benefit_id` but received ''"):
245+
await client.hris.benefits.individuals.with_raw_response.enroll_many(
246+
"",
247+
individuals=[{}],
248+
)
249+
213250
@parametrize
214251
async def test_method_enrolled_ids(self, client: AsyncFinch) -> None:
215252
individual = await client.hris.benefits.individuals.enrolled_ids(
@@ -241,6 +278,13 @@ async def test_streaming_response_enrolled_ids(self, client: AsyncFinch) -> None
241278

242279
assert cast(Any, response.is_closed) is True
243280

281+
@parametrize
282+
async def test_path_params_enrolled_ids(self, client: AsyncFinch) -> None:
283+
with pytest.raises(ValueError, match=r"Expected a non-empty value for `benefit_id` but received ''"):
284+
await client.hris.benefits.individuals.with_raw_response.enrolled_ids(
285+
"",
286+
)
287+
244288
@parametrize
245289
async def test_method_retrieve_many_benefits(self, client: AsyncFinch) -> None:
246290
individual = await client.hris.benefits.individuals.retrieve_many_benefits(
@@ -280,6 +324,13 @@ async def test_streaming_response_retrieve_many_benefits(self, client: AsyncFinc
280324

281325
assert cast(Any, response.is_closed) is True
282326

327+
@parametrize
328+
async def test_path_params_retrieve_many_benefits(self, client: AsyncFinch) -> None:
329+
with pytest.raises(ValueError, match=r"Expected a non-empty value for `benefit_id` but received ''"):
330+
await client.hris.benefits.individuals.with_raw_response.retrieve_many_benefits(
331+
"",
332+
)
333+
283334
@parametrize
284335
async def test_method_unenroll_many(self, client: AsyncFinch) -> None:
285336
individual = await client.hris.benefits.individuals.unenroll_many(
@@ -318,3 +369,10 @@ async def test_streaming_response_unenroll_many(self, client: AsyncFinch) -> Non
318369
assert_matches_type(AsyncSinglePage[UnenrolledIndividual], individual, path=["response"])
319370

320371
assert cast(Any, response.is_closed) is True
372+
373+
@parametrize
374+
async def test_path_params_unenroll_many(self, client: AsyncFinch) -> None:
375+
with pytest.raises(ValueError, match=r"Expected a non-empty value for `benefit_id` but received ''"):
376+
await client.hris.benefits.individuals.with_raw_response.unenroll_many(
377+
"",
378+
)

tests/api_resources/hris/test_benefits.py

+28
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,13 @@ def test_streaming_response_retrieve(self, client: Finch) -> None:
9292

9393
assert cast(Any, response.is_closed) is True
9494

95+
@parametrize
96+
def test_path_params_retrieve(self, client: Finch) -> None:
97+
with pytest.raises(ValueError, match=r"Expected a non-empty value for `benefit_id` but received ''"):
98+
client.hris.benefits.with_raw_response.retrieve(
99+
"",
100+
)
101+
95102
@parametrize
96103
def test_method_update(self, client: Finch) -> None:
97104
benefit = client.hris.benefits.update(
@@ -131,6 +138,13 @@ def test_streaming_response_update(self, client: Finch) -> None:
131138

132139
assert cast(Any, response.is_closed) is True
133140

141+
@parametrize
142+
def test_path_params_update(self, client: Finch) -> None:
143+
with pytest.raises(ValueError, match=r"Expected a non-empty value for `benefit_id` but received ''"):
144+
client.hris.benefits.with_raw_response.update(
145+
"",
146+
)
147+
134148
@parametrize
135149
def test_method_list(self, client: Finch) -> None:
136150
benefit = client.hris.benefits.list()
@@ -252,6 +266,13 @@ async def test_streaming_response_retrieve(self, client: AsyncFinch) -> None:
252266

253267
assert cast(Any, response.is_closed) is True
254268

269+
@parametrize
270+
async def test_path_params_retrieve(self, client: AsyncFinch) -> None:
271+
with pytest.raises(ValueError, match=r"Expected a non-empty value for `benefit_id` but received ''"):
272+
await client.hris.benefits.with_raw_response.retrieve(
273+
"",
274+
)
275+
255276
@parametrize
256277
async def test_method_update(self, client: AsyncFinch) -> None:
257278
benefit = await client.hris.benefits.update(
@@ -291,6 +312,13 @@ async def test_streaming_response_update(self, client: AsyncFinch) -> None:
291312

292313
assert cast(Any, response.is_closed) is True
293314

315+
@parametrize
316+
async def test_path_params_update(self, client: AsyncFinch) -> None:
317+
with pytest.raises(ValueError, match=r"Expected a non-empty value for `benefit_id` but received ''"):
318+
await client.hris.benefits.with_raw_response.update(
319+
"",
320+
)
321+
294322
@parametrize
295323
async def test_method_list(self, client: AsyncFinch) -> None:
296324
benefit = await client.hris.benefits.list()

tests/api_resources/jobs/test_automated.py

+14
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,13 @@ def test_streaming_response_retrieve(self, client: Finch) -> None:
8484

8585
assert cast(Any, response.is_closed) is True
8686

87+
@parametrize
88+
def test_path_params_retrieve(self, client: Finch) -> None:
89+
with pytest.raises(ValueError, match=r"Expected a non-empty value for `job_id` but received ''"):
90+
client.jobs.automated.with_raw_response.retrieve(
91+
"",
92+
)
93+
8794
@parametrize
8895
def test_method_list(self, client: Finch) -> None:
8996
automated = client.jobs.automated.list()
@@ -185,6 +192,13 @@ async def test_streaming_response_retrieve(self, client: AsyncFinch) -> None:
185192

186193
assert cast(Any, response.is_closed) is True
187194

195+
@parametrize
196+
async def test_path_params_retrieve(self, client: AsyncFinch) -> None:
197+
with pytest.raises(ValueError, match=r"Expected a non-empty value for `job_id` but received ''"):
198+
await client.jobs.automated.with_raw_response.retrieve(
199+
"",
200+
)
201+
188202
@parametrize
189203
async def test_method_list(self, client: AsyncFinch) -> None:
190204
automated = await client.jobs.automated.list()

tests/api_resources/jobs/test_manual.py

+14
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,13 @@ def test_streaming_response_retrieve(self, client: Finch) -> None:
5252

5353
assert cast(Any, response.is_closed) is True
5454

55+
@parametrize
56+
def test_path_params_retrieve(self, client: Finch) -> None:
57+
with pytest.raises(ValueError, match=r"Expected a non-empty value for `job_id` but received ''"):
58+
client.jobs.manual.with_raw_response.retrieve(
59+
"",
60+
)
61+
5562

5663
class TestAsyncManual:
5764
strict_client = AsyncFinch(base_url=base_url, access_token=access_token, _strict_response_validation=True)
@@ -88,3 +95,10 @@ async def test_streaming_response_retrieve(self, client: AsyncFinch) -> None:
8895
assert_matches_type(ManualAsyncJob, manual, path=["response"])
8996

9097
assert cast(Any, response.is_closed) is True
98+
99+
@parametrize
100+
async def test_path_params_retrieve(self, client: AsyncFinch) -> None:
101+
with pytest.raises(ValueError, match=r"Expected a non-empty value for `job_id` but received ''"):
102+
await client.jobs.manual.with_raw_response.retrieve(
103+
"",
104+
)

0 commit comments

Comments
 (0)