Skip to content

Commit 3ed7352

Browse files
Validate extension create params model type
Co-authored-by: Shri Sukhani <shrisukhani@users.noreply.github.com>
1 parent 8a695a4 commit 3ed7352

3 files changed

Lines changed: 25 additions & 0 deletions

File tree

hyperbrowser/client/managers/async_manager/extension.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ def __init__(self, client):
1111
self._client = client
1212

1313
async def create(self, params: CreateExtensionParams) -> ExtensionResponse:
14+
if not isinstance(params, CreateExtensionParams):
15+
raise HyperbrowserError("params must be CreateExtensionParams")
1416
raw_file_path = params.file_path
1517
payload = params.model_dump(exclude_none=True, by_alias=True)
1618
payload.pop("filePath", None)

hyperbrowser/client/managers/sync_manager/extension.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ def __init__(self, client):
1111
self._client = client
1212

1313
def create(self, params: CreateExtensionParams) -> ExtensionResponse:
14+
if not isinstance(params, CreateExtensionParams):
15+
raise HyperbrowserError("params must be CreateExtensionParams")
1416
raw_file_path = params.file_path
1517
payload = params.model_dump(exclude_none=True, by_alias=True)
1618
payload.pop("filePath", None)

tests/test_extension_manager.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -214,6 +214,13 @@ def get(self, url, params=None, follow_redirects=False):
214214
manager.list()
215215

216216

217+
def test_sync_extension_create_rejects_invalid_params_type():
218+
manager = SyncExtensionManager(_FakeClient(_SyncTransport()))
219+
220+
with pytest.raises(HyperbrowserError, match="params must be CreateExtensionParams"):
221+
manager.create({"name": "bad", "filePath": "/tmp/ext.zip"}) # type: ignore[arg-type]
222+
223+
217224
def test_async_extension_list_raises_for_invalid_payload_shape():
218225
class _InvalidAsyncTransport:
219226
async def get(self, url, params=None, follow_redirects=False):
@@ -228,3 +235,17 @@ async def run():
228235
await manager.list()
229236

230237
asyncio.run(run())
238+
239+
240+
def test_async_extension_create_rejects_invalid_params_type():
241+
manager = AsyncExtensionManager(_FakeClient(_AsyncTransport()))
242+
243+
async def run():
244+
with pytest.raises(
245+
HyperbrowserError, match="params must be CreateExtensionParams"
246+
):
247+
await manager.create(
248+
{"name": "bad", "filePath": "/tmp/ext.zip"} # type: ignore[arg-type]
249+
)
250+
251+
asyncio.run(run())

0 commit comments

Comments
 (0)