File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -1107,13 +1107,10 @@ def list_views(self, namespace: str | Identifier) -> list[Identifier]:
11071107 all_identifiers : list [Identifier ] = []
11081108 page_token : str | None = None
11091109
1110+ url = self .url (Endpoints .list_views , namespace = namespace_concat )
11101111 while True :
1111- # Build URL with pagination params
1112- url = self .url (Endpoints .list_views , namespace = namespace_concat )
1113- if page_token :
1114- url = f"{ url } ?pageToken={ page_token } "
1115-
1116- response = self ._session .get (url )
1112+ params = {"pageToken" : page_token } if page_token else None
1113+ response = self ._session .get (url , params = params )
11171114 try :
11181115 response .raise_for_status ()
11191116 except HTTPError as exc :
@@ -1122,7 +1119,6 @@ def list_views(self, namespace: str | Identifier) -> list[Identifier]:
11221119 parsed = ListViewsResponse .model_validate_json (response .text )
11231120 all_identifiers .extend ([(* view .namespace , view .name ) for view in parsed .identifiers ])
11241121
1125- # Check if more pages exist
11261122 if not parsed .next_page_token :
11271123 break
11281124 page_token = parsed .next_page_token
Original file line number Diff line number Diff line change @@ -687,6 +687,42 @@ def test_list_views_paginated_200(rest_mock: Mocker) -> None:
687687 ]
688688
689689
690+ def test_list_views_paginated_200_none_next_page_token (rest_mock : Mocker ) -> None :
691+ namespace = "examples"
692+ # First page with next-page-token
693+ rest_mock .get (
694+ f"{ TEST_URI } v1/namespaces/{ namespace } /views" ,
695+ json = {
696+ "identifiers" : [
697+ {"namespace" : ["examples" ], "name" : "view1" },
698+ {"namespace" : ["examples" ], "name" : "view2" },
699+ ],
700+ "next-page-token" : "page2token" ,
701+ },
702+ status_code = 200 ,
703+ request_headers = TEST_HEADERS ,
704+ )
705+ # The last page with NONE next-page-token
706+ rest_mock .get (
707+ f"{ TEST_URI } v1/namespaces/{ namespace } /views?pageToken=page2token" ,
708+ json = {
709+ "identifiers" : [
710+ {"namespace" : ["examples" ], "name" : "view3" },
711+ ],
712+ "next-page-token" : None ,
713+ },
714+ status_code = 200 ,
715+ request_headers = TEST_HEADERS ,
716+ )
717+
718+ result = RestCatalog ("rest" , uri = TEST_URI , token = TEST_TOKEN ).list_views (namespace )
719+ assert result == [
720+ ("examples" , "view1" ),
721+ ("examples" , "view2" ),
722+ ("examples" , "view3" ),
723+ ]
724+
725+
690726def test_list_views_200_sigv4 (rest_mock : Mocker ) -> None :
691727 namespace = "examples"
692728 rest_mock .get (
You can’t perform that action at this time.
0 commit comments