diff --git a/src/wp-includes/block-template-utils.php b/src/wp-includes/block-template-utils.php index 6a53fd6730..28efb5cbad 100644 --- a/src/wp-includes/block-template-utils.php +++ b/src/wp-includes/block-template-utils.php @@ -913,7 +913,7 @@ function block_footer_area() { */ function wp_generate_block_templates_export_file() { if ( ! class_exists( 'ZipArchive' ) ) { - return new WP_Error( __( 'Zip Export not supported.' ) ); + return new WP_Error( 'missing_zip_package', __( 'Zip Export not supported.' ) ); } $obscura = wp_generate_password( 12, false, false ); @@ -921,7 +921,7 @@ function wp_generate_block_templates_export_file() { $zip = new ZipArchive(); if ( true !== $zip->open( $filename, ZipArchive::CREATE ) ) { - return new WP_Error( __( 'Unable to open export file (archive) for writing.' ) ); + return new WP_Error( 'unable_to_create_zip', __( 'Unable to open export file (archive) for writing.' ) ); } $zip->addEmptyDir( 'theme' ); diff --git a/src/wp-includes/rest-api/endpoints/class-wp-rest-edit-site-export-controller.php b/src/wp-includes/rest-api/endpoints/class-wp-rest-edit-site-export-controller.php index 1bd40cd637..d5abfa5682 100644 --- a/src/wp-includes/rest-api/endpoints/class-wp-rest-edit-site-export-controller.php +++ b/src/wp-includes/rest-api/endpoints/class-wp-rest-edit-site-export-controller.php @@ -54,8 +54,8 @@ class WP_REST_Edit_Site_Export_Controller extends WP_REST_Controller { */ public function permissions_check() { if ( ! current_user_can( 'edit_theme_options' ) ) { - new WP_Error( - 'rest_cannot_view_url_details', + return new WP_Error( + 'rest_cannot_export_templates', __( 'Sorry, you are not allowed to export templates and template parts.' ), array( 'status' => rest_authorization_required_code() ) ); diff --git a/tests/phpunit/tests/rest-api/wpRestEditSiteExportController.php b/tests/phpunit/tests/rest-api/wpRestEditSiteExportController.php new file mode 100644 index 0000000000..4683d68fed --- /dev/null +++ b/tests/phpunit/tests/rest-api/wpRestEditSiteExportController.php @@ -0,0 +1,156 @@ +user->create( + array( + 'role' => 'subscriber', + ) + ); + } + + /** + * Delete test data after our tests run. + * + * @since 5.9.0 + */ + public static function wpTearDownAfterClass() { + self::delete_user( self::$subscriber_id ); + } + + /** + * @covers WP_REST_Edit_Site_Export_Controller::register_routes + * @ticket 54448 + */ + public function test_register_routes() { + $routes = rest_get_server()->get_routes(); + $this->assertArrayHasKey( static::REQUEST_ROUTE, $routes ); + $this->assertCount( 1, $routes[ static::REQUEST_ROUTE ] ); + } + + /** + * @covers WP_REST_Edit_Site_Export_Controller::permissions_check + * + * @ticket 54448 + */ + public function test_export_for_no_user_permissions() { + wp_set_current_user( 0 ); + + $request = new WP_REST_Request( 'GET', static::REQUEST_ROUTE ); + $response = rest_get_server()->dispatch( $request ); + + $this->assertErrorResponse( 'rest_cannot_export_templates', $response, 401 ); + } + + /** + * @covers WP_REST_Edit_Site_Export_Controller::permissions_check + * + * @ticket 54448 + */ + public function test_export_for_user_with_insufficient_permissions() { + wp_set_current_user( self::$subscriber_id ); + + $request = new WP_REST_Request( 'GET', static::REQUEST_ROUTE ); + $response = rest_get_server()->dispatch( $request ); + + $this->assertErrorResponse( 'rest_cannot_export_templates', $response, 403 ); + } + + /** + * @ticket 54448 + */ + public function test_context_param() { + $this->markTestSkipped( 'Controller does not implement context_param().' ); + } + + /** + * @ticket 54448 + */ + public function test_get_item() { + $this->markTestSkipped( 'Controller does not implement get_item().' ); + } + + /** + * @ticket 54448 + */ + public function test_get_items() { + $this->markTestSkipped( 'Controller does not implement get_items().' ); + } + + /** + * @ticket 54448 + */ + public function test_create_item() { + $this->markTestSkipped( 'Controller does not implement create_item().' ); + } + + /** + * @ticket 54448 + */ + public function test_update_item() { + $this->markTestSkipped( 'Controller does not implement update_item().' ); + } + + /** + * @ticket 54448 + */ + public function test_delete_item() { + $this->markTestSkipped( 'Controller does not implement delete_item().' ); + } + + /** + * @ticket 54448 + */ + public function test_prepare_item() { + $this->markTestSkipped( 'Controller does not implement prepare_item().' ); + } + + /** + * @ticket 54448 + */ + public function test_get_item_schema() { + $this->markTestSkipped( 'Controller does not implement get_item_schema().' ); + } +}