Skip to content

fix(client): ensure path params are non-empty #263

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jan 16, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions src/finch/resources/hris/benefits/benefits.py
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,8 @@ def retrieve(

timeout: Override the client-level default timeout for this request, in seconds
"""
if not benefit_id:
raise ValueError(f"Expected a non-empty value for `benefit_id` but received {benefit_id!r}")
return self._get(
f"/employer/benefits/{benefit_id}",
options=make_request_options(
Expand Down Expand Up @@ -159,6 +161,8 @@ def update(

timeout: Override the client-level default timeout for this request, in seconds
"""
if not benefit_id:
raise ValueError(f"Expected a non-empty value for `benefit_id` but received {benefit_id!r}")
return self._post(
f"/employer/benefits/{benefit_id}",
body=maybe_transform({"description": description}, benefit_update_params.BenefitUpdateParams),
Expand Down Expand Up @@ -302,6 +306,8 @@ async def retrieve(

timeout: Override the client-level default timeout for this request, in seconds
"""
if not benefit_id:
raise ValueError(f"Expected a non-empty value for `benefit_id` but received {benefit_id!r}")
return await self._get(
f"/employer/benefits/{benefit_id}",
options=make_request_options(
Expand Down Expand Up @@ -338,6 +344,8 @@ async def update(

timeout: Override the client-level default timeout for this request, in seconds
"""
if not benefit_id:
raise ValueError(f"Expected a non-empty value for `benefit_id` but received {benefit_id!r}")
return await self._post(
f"/employer/benefits/{benefit_id}",
body=maybe_transform({"description": description}, benefit_update_params.BenefitUpdateParams),
Expand Down
16 changes: 16 additions & 0 deletions src/finch/resources/hris/benefits/individuals.py
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,8 @@ def enroll_many(

timeout: Override the client-level default timeout for this request, in seconds
"""
if not benefit_id:
raise ValueError(f"Expected a non-empty value for `benefit_id` but received {benefit_id!r}")
return self._get_api_list(
f"/employer/benefits/{benefit_id}/individuals",
page=SyncSinglePage[EnrolledIndividual],
Expand Down Expand Up @@ -110,6 +112,8 @@ def enrolled_ids(

timeout: Override the client-level default timeout for this request, in seconds
"""
if not benefit_id:
raise ValueError(f"Expected a non-empty value for `benefit_id` but received {benefit_id!r}")
return self._get(
f"/employer/benefits/{benefit_id}/enrolled",
options=make_request_options(
Expand Down Expand Up @@ -147,6 +151,8 @@ def retrieve_many_benefits(

timeout: Override the client-level default timeout for this request, in seconds
"""
if not benefit_id:
raise ValueError(f"Expected a non-empty value for `benefit_id` but received {benefit_id!r}")
return self._get_api_list(
f"/employer/benefits/{benefit_id}/individuals",
page=SyncSinglePage[IndividualBenefit],
Expand Down Expand Up @@ -191,6 +197,8 @@ def unenroll_many(

timeout: Override the client-level default timeout for this request, in seconds
"""
if not benefit_id:
raise ValueError(f"Expected a non-empty value for `benefit_id` but received {benefit_id!r}")
return self._get_api_list(
f"/employer/benefits/{benefit_id}/individuals",
page=SyncSinglePage[UnenrolledIndividual],
Expand Down Expand Up @@ -249,6 +257,8 @@ def enroll_many(

timeout: Override the client-level default timeout for this request, in seconds
"""
if not benefit_id:
raise ValueError(f"Expected a non-empty value for `benefit_id` but received {benefit_id!r}")
return self._get_api_list(
f"/employer/benefits/{benefit_id}/individuals",
page=AsyncSinglePage[EnrolledIndividual],
Expand Down Expand Up @@ -285,6 +295,8 @@ async def enrolled_ids(

timeout: Override the client-level default timeout for this request, in seconds
"""
if not benefit_id:
raise ValueError(f"Expected a non-empty value for `benefit_id` but received {benefit_id!r}")
return await self._get(
f"/employer/benefits/{benefit_id}/enrolled",
options=make_request_options(
Expand Down Expand Up @@ -322,6 +334,8 @@ def retrieve_many_benefits(

timeout: Override the client-level default timeout for this request, in seconds
"""
if not benefit_id:
raise ValueError(f"Expected a non-empty value for `benefit_id` but received {benefit_id!r}")
return self._get_api_list(
f"/employer/benefits/{benefit_id}/individuals",
page=AsyncSinglePage[IndividualBenefit],
Expand Down Expand Up @@ -366,6 +380,8 @@ def unenroll_many(

timeout: Override the client-level default timeout for this request, in seconds
"""
if not benefit_id:
raise ValueError(f"Expected a non-empty value for `benefit_id` but received {benefit_id!r}")
return self._get_api_list(
f"/employer/benefits/{benefit_id}/individuals",
page=AsyncSinglePage[UnenrolledIndividual],
Expand Down
4 changes: 4 additions & 0 deletions src/finch/resources/jobs/automated.py
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,8 @@ def retrieve(

timeout: Override the client-level default timeout for this request, in seconds
"""
if not job_id:
raise ValueError(f"Expected a non-empty value for `job_id` but received {job_id!r}")
return self._get(
f"/jobs/automated/{job_id}",
options=make_request_options(
Expand Down Expand Up @@ -233,6 +235,8 @@ async def retrieve(

timeout: Override the client-level default timeout for this request, in seconds
"""
if not job_id:
raise ValueError(f"Expected a non-empty value for `job_id` but received {job_id!r}")
return await self._get(
f"/jobs/automated/{job_id}",
options=make_request_options(
Expand Down
4 changes: 4 additions & 0 deletions src/finch/resources/jobs/manual.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,8 @@ def retrieve(

timeout: Override the client-level default timeout for this request, in seconds
"""
if not job_id:
raise ValueError(f"Expected a non-empty value for `job_id` but received {job_id!r}")
return self._get(
f"/jobs/manual/{job_id}",
options=make_request_options(
Expand Down Expand Up @@ -94,6 +96,8 @@ async def retrieve(

timeout: Override the client-level default timeout for this request, in seconds
"""
if not job_id:
raise ValueError(f"Expected a non-empty value for `job_id` but received {job_id!r}")
return await self._get(
f"/jobs/manual/{job_id}",
options=make_request_options(
Expand Down
4 changes: 4 additions & 0 deletions src/finch/resources/sandbox/employment.py
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,8 @@ def update(

timeout: Override the client-level default timeout for this request, in seconds
"""
if not individual_id:
raise ValueError(f"Expected a non-empty value for `individual_id` but received {individual_id!r}")
return self._put(
f"/sandbox/employment/{individual_id}",
body=maybe_transform(
Expand Down Expand Up @@ -211,6 +213,8 @@ async def update(

timeout: Override the client-level default timeout for this request, in seconds
"""
if not individual_id:
raise ValueError(f"Expected a non-empty value for `individual_id` but received {individual_id!r}")
return await self._put(
f"/sandbox/employment/{individual_id}",
body=maybe_transform(
Expand Down
4 changes: 4 additions & 0 deletions src/finch/resources/sandbox/individual.py
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,8 @@ def update(

timeout: Override the client-level default timeout for this request, in seconds
"""
if not individual_id:
raise ValueError(f"Expected a non-empty value for `individual_id` but received {individual_id!r}")
return self._put(
f"/sandbox/individual/{individual_id}",
body=maybe_transform(
Expand Down Expand Up @@ -204,6 +206,8 @@ async def update(

timeout: Override the client-level default timeout for this request, in seconds
"""
if not individual_id:
raise ValueError(f"Expected a non-empty value for `individual_id` but received {individual_id!r}")
return await self._put(
f"/sandbox/individual/{individual_id}",
body=maybe_transform(
Expand Down
58 changes: 58 additions & 0 deletions tests/api_resources/hris/benefits/test_individuals.py
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,14 @@ def test_streaming_response_enroll_many(self, client: Finch) -> None:

assert cast(Any, response.is_closed) is True

@parametrize
def test_path_params_enroll_many(self, client: Finch) -> None:
with pytest.raises(ValueError, match=r"Expected a non-empty value for `benefit_id` but received ''"):
client.hris.benefits.individuals.with_raw_response.enroll_many(
"",
individuals=[{}],
)

@parametrize
def test_method_enrolled_ids(self, client: Finch) -> None:
individual = client.hris.benefits.individuals.enrolled_ids(
Expand Down Expand Up @@ -92,6 +100,13 @@ def test_streaming_response_enrolled_ids(self, client: Finch) -> None:

assert cast(Any, response.is_closed) is True

@parametrize
def test_path_params_enrolled_ids(self, client: Finch) -> None:
with pytest.raises(ValueError, match=r"Expected a non-empty value for `benefit_id` but received ''"):
client.hris.benefits.individuals.with_raw_response.enrolled_ids(
"",
)

@parametrize
def test_method_retrieve_many_benefits(self, client: Finch) -> None:
individual = client.hris.benefits.individuals.retrieve_many_benefits(
Expand Down Expand Up @@ -131,6 +146,13 @@ def test_streaming_response_retrieve_many_benefits(self, client: Finch) -> None:

assert cast(Any, response.is_closed) is True

@parametrize
def test_path_params_retrieve_many_benefits(self, client: Finch) -> None:
with pytest.raises(ValueError, match=r"Expected a non-empty value for `benefit_id` but received ''"):
client.hris.benefits.individuals.with_raw_response.retrieve_many_benefits(
"",
)

@parametrize
def test_method_unenroll_many(self, client: Finch) -> None:
individual = client.hris.benefits.individuals.unenroll_many(
Expand Down Expand Up @@ -170,6 +192,13 @@ def test_streaming_response_unenroll_many(self, client: Finch) -> None:

assert cast(Any, response.is_closed) is True

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


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

assert cast(Any, response.is_closed) is True

@parametrize
async def test_path_params_enroll_many(self, client: AsyncFinch) -> None:
with pytest.raises(ValueError, match=r"Expected a non-empty value for `benefit_id` but received ''"):
await client.hris.benefits.individuals.with_raw_response.enroll_many(
"",
individuals=[{}],
)

@parametrize
async def test_method_enrolled_ids(self, client: AsyncFinch) -> None:
individual = await client.hris.benefits.individuals.enrolled_ids(
Expand Down Expand Up @@ -241,6 +278,13 @@ async def test_streaming_response_enrolled_ids(self, client: AsyncFinch) -> None

assert cast(Any, response.is_closed) is True

@parametrize
async def test_path_params_enrolled_ids(self, client: AsyncFinch) -> None:
with pytest.raises(ValueError, match=r"Expected a non-empty value for `benefit_id` but received ''"):
await client.hris.benefits.individuals.with_raw_response.enrolled_ids(
"",
)

@parametrize
async def test_method_retrieve_many_benefits(self, client: AsyncFinch) -> None:
individual = await client.hris.benefits.individuals.retrieve_many_benefits(
Expand Down Expand Up @@ -280,6 +324,13 @@ async def test_streaming_response_retrieve_many_benefits(self, client: AsyncFinc

assert cast(Any, response.is_closed) is True

@parametrize
async def test_path_params_retrieve_many_benefits(self, client: AsyncFinch) -> None:
with pytest.raises(ValueError, match=r"Expected a non-empty value for `benefit_id` but received ''"):
await client.hris.benefits.individuals.with_raw_response.retrieve_many_benefits(
"",
)

@parametrize
async def test_method_unenroll_many(self, client: AsyncFinch) -> None:
individual = await client.hris.benefits.individuals.unenroll_many(
Expand Down Expand Up @@ -318,3 +369,10 @@ async def test_streaming_response_unenroll_many(self, client: AsyncFinch) -> Non
assert_matches_type(AsyncSinglePage[UnenrolledIndividual], individual, path=["response"])

assert cast(Any, response.is_closed) is True

@parametrize
async def test_path_params_unenroll_many(self, client: AsyncFinch) -> None:
with pytest.raises(ValueError, match=r"Expected a non-empty value for `benefit_id` but received ''"):
await client.hris.benefits.individuals.with_raw_response.unenroll_many(
"",
)
28 changes: 28 additions & 0 deletions tests/api_resources/hris/test_benefits.py
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,13 @@ def test_streaming_response_retrieve(self, client: Finch) -> None:

assert cast(Any, response.is_closed) is True

@parametrize
def test_path_params_retrieve(self, client: Finch) -> None:
with pytest.raises(ValueError, match=r"Expected a non-empty value for `benefit_id` but received ''"):
client.hris.benefits.with_raw_response.retrieve(
"",
)

@parametrize
def test_method_update(self, client: Finch) -> None:
benefit = client.hris.benefits.update(
Expand Down Expand Up @@ -131,6 +138,13 @@ def test_streaming_response_update(self, client: Finch) -> None:

assert cast(Any, response.is_closed) is True

@parametrize
def test_path_params_update(self, client: Finch) -> None:
with pytest.raises(ValueError, match=r"Expected a non-empty value for `benefit_id` but received ''"):
client.hris.benefits.with_raw_response.update(
"",
)

@parametrize
def test_method_list(self, client: Finch) -> None:
benefit = client.hris.benefits.list()
Expand Down Expand Up @@ -252,6 +266,13 @@ async def test_streaming_response_retrieve(self, client: AsyncFinch) -> None:

assert cast(Any, response.is_closed) is True

@parametrize
async def test_path_params_retrieve(self, client: AsyncFinch) -> None:
with pytest.raises(ValueError, match=r"Expected a non-empty value for `benefit_id` but received ''"):
await client.hris.benefits.with_raw_response.retrieve(
"",
)

@parametrize
async def test_method_update(self, client: AsyncFinch) -> None:
benefit = await client.hris.benefits.update(
Expand Down Expand Up @@ -291,6 +312,13 @@ async def test_streaming_response_update(self, client: AsyncFinch) -> None:

assert cast(Any, response.is_closed) is True

@parametrize
async def test_path_params_update(self, client: AsyncFinch) -> None:
with pytest.raises(ValueError, match=r"Expected a non-empty value for `benefit_id` but received ''"):
await client.hris.benefits.with_raw_response.update(
"",
)

@parametrize
async def test_method_list(self, client: AsyncFinch) -> None:
benefit = await client.hris.benefits.list()
Expand Down
14 changes: 14 additions & 0 deletions tests/api_resources/jobs/test_automated.py
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,13 @@ def test_streaming_response_retrieve(self, client: Finch) -> None:

assert cast(Any, response.is_closed) is True

@parametrize
def test_path_params_retrieve(self, client: Finch) -> None:
with pytest.raises(ValueError, match=r"Expected a non-empty value for `job_id` but received ''"):
client.jobs.automated.with_raw_response.retrieve(
"",
)

@parametrize
def test_method_list(self, client: Finch) -> None:
automated = client.jobs.automated.list()
Expand Down Expand Up @@ -185,6 +192,13 @@ async def test_streaming_response_retrieve(self, client: AsyncFinch) -> None:

assert cast(Any, response.is_closed) is True

@parametrize
async def test_path_params_retrieve(self, client: AsyncFinch) -> None:
with pytest.raises(ValueError, match=r"Expected a non-empty value for `job_id` but received ''"):
await client.jobs.automated.with_raw_response.retrieve(
"",
)

@parametrize
async def test_method_list(self, client: AsyncFinch) -> None:
automated = await client.jobs.automated.list()
Expand Down
14 changes: 14 additions & 0 deletions tests/api_resources/jobs/test_manual.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,13 @@ def test_streaming_response_retrieve(self, client: Finch) -> None:

assert cast(Any, response.is_closed) is True

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


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

assert cast(Any, response.is_closed) is True

@parametrize
async def test_path_params_retrieve(self, client: AsyncFinch) -> None:
with pytest.raises(ValueError, match=r"Expected a non-empty value for `job_id` but received ''"):
await client.jobs.manual.with_raw_response.retrieve(
"",
)
Loading