File tree Expand file tree Collapse file tree
hyperbrowser/client/managers Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -15,4 +15,17 @@ def parse_extension_list_response_data(response_data: Any) -> List[ExtensionResp
1515 raise HyperbrowserError (
1616 f"Expected list in 'extensions' key but got { type (response_data ['extensions' ])} "
1717 )
18- return [ExtensionResponse (** extension ) for extension in response_data ["extensions" ]]
18+ parsed_extensions : List [ExtensionResponse ] = []
19+ for index , extension in enumerate (response_data ["extensions" ]):
20+ if not isinstance (extension , dict ):
21+ raise HyperbrowserError (
22+ f"Expected extension object at index { index } but got { type (extension )} "
23+ )
24+ try :
25+ parsed_extensions .append (ExtensionResponse (** extension ))
26+ except Exception as exc :
27+ raise HyperbrowserError (
28+ f"Failed to parse extension at index { index } " ,
29+ original_error = exc ,
30+ ) from exc
31+ return parsed_extensions
Original file line number Diff line number Diff line change @@ -37,3 +37,22 @@ def test_parse_extension_list_response_data_rejects_missing_extensions_key():
3737def test_parse_extension_list_response_data_rejects_non_list_extensions ():
3838 with pytest .raises (HyperbrowserError , match = "Expected list in 'extensions' key" ):
3939 parse_extension_list_response_data ({"extensions" : "not-a-list" })
40+
41+
42+ def test_parse_extension_list_response_data_rejects_non_object_extension_items ():
43+ with pytest .raises (HyperbrowserError , match = "Expected extension object at index 0" ):
44+ parse_extension_list_response_data ({"extensions" : ["not-an-object" ]})
45+
46+
47+ def test_parse_extension_list_response_data_wraps_invalid_extension_payloads ():
48+ with pytest .raises (HyperbrowserError , match = "Failed to parse extension at index 0" ):
49+ parse_extension_list_response_data (
50+ {
51+ "extensions" : [
52+ {
53+ "id" : "ext_123" ,
54+ # missing required fields: name/createdAt/updatedAt
55+ }
56+ ]
57+ }
58+ )
You can’t perform that action at this time.
0 commit comments