Skip to content

Commit 675ba87

Browse files
committed
fixes
1 parent 74e8214 commit 675ba87

3 files changed

Lines changed: 55 additions & 16 deletions

File tree

‎hyperbrowser/models/sandbox.py‎

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -371,12 +371,12 @@ class CreateSandboxImageBuildParams(SandboxBaseModel):
371371
image_name: str = Field(serialization_alias="imageName")
372372
input_sha256: str = Field(serialization_alias="inputSha256")
373373
input_size_bytes: int = Field(serialization_alias="inputSizeBytes")
374-
input_format: SandboxImageBuildInputFormat = Field(
375-
default="rootfs_export_tar_gz",
374+
input_format: Optional[SandboxImageBuildInputFormat] = Field(
375+
default=None,
376376
serialization_alias="inputFormat",
377377
)
378-
source_platform: SandboxImageBuildSourcePlatform = Field(
379-
default="linux/amd64",
378+
source_platform: Optional[SandboxImageBuildSourcePlatform] = Field(
379+
default=None,
380380
serialization_alias="sourcePlatform",
381381
)
382382
image_config_user: Optional[str] = Field(
@@ -388,14 +388,16 @@ class CreateSandboxImageBuildParams(SandboxBaseModel):
388388
serialization_alias="imageInit",
389389
)
390390

391+
391392
class CompleteSandboxImageBuildParams(SandboxBaseModel):
392393
input_sha256: str = Field(serialization_alias="inputSha256")
393394
input_size_bytes: int = Field(serialization_alias="inputSizeBytes")
394-
input_format: SandboxImageBuildInputFormat = Field(
395-
default="rootfs_export_tar_gz",
395+
input_format: Optional[SandboxImageBuildInputFormat] = Field(
396+
default=None,
396397
serialization_alias="inputFormat",
397398
)
398399

400+
399401
class SandboxImageBuildUpload(SandboxBaseModel):
400402
url: str
401403
method: str

‎tests/test_create_sandbox_params.py‎

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,7 @@ def test_sandbox_image_build_params_serialize_expected_wire_keys():
124124
image_name="custom_node",
125125
input_sha256="abc123",
126126
input_size_bytes=123,
127+
input_format="rootfs_export_tar_gz",
127128
source_platform="linux/amd64",
128129
image_config_user="node",
129130
image_init=SandboxImageInit(
@@ -148,6 +149,7 @@ def test_sandbox_image_build_params_serialize_expected_wire_keys():
148149
complete_params = CompleteSandboxImageBuildParams(
149150
input_sha256="abc123",
150151
input_size_bytes=123,
152+
input_format="rootfs_export_tar_gz",
151153
)
152154

153155
assert complete_params.model_dump(by_alias=True, exclude_none=True) == {
@@ -157,6 +159,28 @@ def test_sandbox_image_build_params_serialize_expected_wire_keys():
157159
}
158160

159161

162+
def test_sandbox_image_build_params_omit_unspecified_format_and_platform():
163+
create_params = CreateSandboxImageBuildParams(
164+
image_name="custom_node",
165+
input_sha256="abc123",
166+
input_size_bytes=123,
167+
)
168+
complete_params = CompleteSandboxImageBuildParams(
169+
input_sha256="abc123",
170+
input_size_bytes=123,
171+
)
172+
173+
assert create_params.model_dump(by_alias=True, exclude_none=True) == {
174+
"imageName": "custom_node",
175+
"inputSha256": "abc123",
176+
"inputSizeBytes": 123,
177+
}
178+
assert complete_params.model_dump(by_alias=True, exclude_none=True) == {
179+
"inputSha256": "abc123",
180+
"inputSizeBytes": 123,
181+
}
182+
183+
160184
def test_sandbox_image_build_params_reject_unsupported_source_platform():
161185
with pytest.raises(ValidationError):
162186
CreateSandboxImageBuildParams(

‎tests/test_sandbox_wire_contract.py‎

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -775,6 +775,7 @@ def test_sandbox_request_models_serialize_expected_wire_keys():
775775
image_name="custom_node",
776776
input_sha256="abc123",
777777
input_size_bytes=123,
778+
input_format="rootfs_export_tar_gz",
778779
source_platform="linux/amd64",
779780
image_config_user="node",
780781
image_init=SandboxImageInit(
@@ -797,6 +798,7 @@ def test_sandbox_request_models_serialize_expected_wire_keys():
797798
assert CompleteSandboxImageBuildParams(
798799
input_sha256="abc123",
799800
input_size_bytes=123,
801+
input_format="rootfs_export_tar_gz",
800802
).model_dump(by_alias=True, exclude_none=True) == {
801803
"inputSha256": "abc123",
802804
"inputSizeBytes": 123,
@@ -946,8 +948,6 @@ def test_sync_sandbox_image_build_manager_uses_expected_wire_keys():
946948
"imageName": "custom_node",
947949
"inputSha256": "abc123",
948950
"inputSizeBytes": 123,
949-
"inputFormat": "rootfs_export_tar_gz",
950-
"sourcePlatform": "linux/amd64",
951951
"imageConfigUser": "node",
952952
"imageInit": {"args": ["node", "server.js"]},
953953
}
@@ -960,7 +960,6 @@ def test_sync_sandbox_image_build_manager_uses_expected_wire_keys():
960960
assert complete_call["json"] == {
961961
"inputSha256": "abc123",
962962
"inputSizeBytes": 123,
963-
"inputFormat": "rootfs_export_tar_gz",
964963
}
965964
assert cancel_call["method"] == "POST"
966965
assert cancel_call["url"].endswith("/images/builds/build-123/cancel")
@@ -1042,17 +1041,34 @@ def test_sync_sandbox_snapshot_and_image_build_list_contract(use_legacy_model):
10421041
),
10431042
],
10441043
)
1045-
def test_sync_image_build_defaults_serialize_for_dicts_and_legacy_models(params):
1044+
def test_sync_image_build_omits_unspecified_fields_for_dicts_and_legacy_models(
1045+
params,
1046+
):
10461047
client = FakeSyncClient()
1048+
manager = SandboxManager(client)
10471049

1048-
SandboxManager(client).create_image_build(params)
1050+
manager.create_image_build(params)
1051+
complete_params = (
1052+
{
1053+
"input_sha256": "abc123",
1054+
"input_size_bytes": 123,
1055+
}
1056+
if isinstance(params, dict)
1057+
else CompleteSandboxImageBuildParams(
1058+
input_sha256="abc123",
1059+
input_size_bytes=123,
1060+
)
1061+
)
1062+
manager.complete_image_build("build-123", complete_params)
10491063

10501064
assert client.transport.client.calls[0]["json"] == {
10511065
"imageName": "custom_node",
10521066
"inputSha256": "abc123",
10531067
"inputSizeBytes": 123,
1054-
"inputFormat": "rootfs_export_tar_gz",
1055-
"sourcePlatform": "linux/amd64",
1068+
}
1069+
assert client.transport.client.calls[1]["json"] == {
1070+
"inputSha256": "abc123",
1071+
"inputSizeBytes": 123,
10561072
}
10571073

10581074

@@ -1559,8 +1575,6 @@ async def test_async_sandbox_image_build_manager_uses_expected_wire_keys():
15591575
"imageName": "custom_node",
15601576
"inputSha256": "abc123",
15611577
"inputSizeBytes": 123,
1562-
"inputFormat": "rootfs_export_tar_gz",
1563-
"sourcePlatform": "linux/amd64",
15641578
"imageConfigUser": "node",
15651579
"imageInit": {"args": ["node", "server.js"]},
15661580
}
@@ -1573,7 +1587,6 @@ async def test_async_sandbox_image_build_manager_uses_expected_wire_keys():
15731587
assert complete_call["json"] == {
15741588
"inputSha256": "abc123",
15751589
"inputSizeBytes": 123,
1576-
"inputFormat": "rootfs_export_tar_gz",
15771590
}
15781591
assert cancel_call["method"] == "POST"
15791592
assert cancel_call["url"].endswith("/images/builds/build-123/cancel")

0 commit comments

Comments
 (0)