@@ -2292,6 +2292,7 @@ def test_rest_catalog_context_manager_with_exception_sigv4(self, rest_mock: Mock
22922292 assert catalog is not None and hasattr (catalog , "_session" )
22932293 assert len (catalog ._session .adapters ) == self .EXPECTED_ADAPTERS_SIGV4
22942294
2295+ < << << << HEAD
22952296 def test_server_side_planning_disabled_by_default (self , rest_mock : Mocker ) -> None :
22962297 catalog = RestCatalog ("rest" , uri = TEST_URI , token = TEST_TOKEN )
22972298
@@ -2621,3 +2622,65 @@ def test_load_table_without_storage_credentials(
26212622 )
26222623 assert actual .metadata .model_dump () == expected .metadata .model_dump ()
26232624 assert actual == expected
2625+
2626+
2627+ def test_rename_view_204 (rest_mock : Mocker ) -> None :
2628+ from_identifier = ("some_namespace" , "old_view" )
2629+ to_identifier = ("some_namespace" , "new_view" )
2630+ rest_mock .post (
2631+ f"{ TEST_URI } v1/views/rename" ,
2632+ json = {
2633+ "source" : {"namespace" : ["some_namespace" ], "name" : "old_view" },
2634+ "destination" : {"namespace" : ["some_namespace" ], "name" : "new_view" },
2635+ },
2636+ status_code = 204 ,
2637+ request_headers = TEST_HEADERS ,
2638+ )
2639+ catalog = RestCatalog ("rest" , uri = TEST_URI , token = TEST_TOKEN )
2640+ catalog .rename_view (from_identifier , to_identifier )
2641+ assert (
2642+ rest_mock .last_request .text
2643+ == """{"source": {"namespace": ["some_namespace"], "name": "old_view"}, "destination": {"namespace": ["some_namespace"], "name": "new_view"}}"""
2644+ )
2645+
2646+
2647+ def test_rename_view_404 (rest_mock : Mocker ) -> None :
2648+ from_identifier = ("some_namespace" , "non_existent_view" )
2649+ to_identifier = ("some_namespace" , "new_view" )
2650+ rest_mock .post (
2651+ f"{ TEST_URI } v1/views/rename" ,
2652+ json = {
2653+ "error" : {
2654+ "message" : "View does not exist: some_namespace.non_existent_view" ,
2655+ "type" : "NoSuchViewException" ,
2656+ "code" : 404 ,
2657+ }
2658+ },
2659+ status_code = 404 ,
2660+ request_headers = TEST_HEADERS ,
2661+ )
2662+ catalog = RestCatalog ("rest" , uri = TEST_URI , token = TEST_TOKEN )
2663+ with pytest .raises (NoSuchViewError ) as exc_info :
2664+ catalog .rename_view (from_identifier , to_identifier )
2665+ assert "View does not exist: some_namespace.non_existent_view" in str (exc_info .value )
2666+
2667+
2668+ def test_rename_view_409 (rest_mock : Mocker ) -> None :
2669+ from_identifier = ("some_namespace" , "old_view" )
2670+ to_identifier = ("some_namespace" , "existing_view" )
2671+ rest_mock .post (
2672+ f"{ TEST_URI } v1/views/rename" ,
2673+ json = {
2674+ "error" : {
2675+ "message" : "View already exists: some_namespace.existing_view" ,
2676+ "type" : "ViewAlreadyExistsException" ,
2677+ "code" : 409 ,
2678+ }
2679+ },
2680+ status_code = 409 ,
2681+ request_headers = TEST_HEADERS ,
2682+ )
2683+ catalog = RestCatalog ("rest" , uri = TEST_URI , token = TEST_TOKEN )
2684+ with pytest .raises (ViewAlreadyExistsError ) as exc_info :
2685+ catalog .rename_view (from_identifier , to_identifier )
2686+ assert "View already exists: some_namespace.existing_view" in str (exc_info .value )
0 commit comments