From ce2509df72fae8fce4272743db503e9be6fcb009 Mon Sep 17 00:00:00 2001 From: ramon Date: Mon, 9 Sep 2024 12:20:40 +1000 Subject: [PATCH] Added permissions test for editor role --- ...lobal-styles-controller-gutenberg-test.php | 30 ++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/phpunit/class-wp-rest-global-styles-controller-gutenberg-test.php b/phpunit/class-wp-rest-global-styles-controller-gutenberg-test.php index 3fd0bb21ce562..9d4e74a67a3f8 100644 --- a/phpunit/class-wp-rest-global-styles-controller-gutenberg-test.php +++ b/phpunit/class-wp-rest-global-styles-controller-gutenberg-test.php @@ -12,6 +12,11 @@ class WP_REST_Global_Styles_Controller_Gutenberg_Test extends WP_Test_REST_Contr */ protected static $admin_id; + /** + * @var int + */ + protected static $editor_id; + /** * @var int */ @@ -44,6 +49,12 @@ public static function wpSetupBeforeClass( $factory ) { ) ); + self::$editor_id = $factory->user->create( + array( + 'role' => 'editor', + ) + ); + self::$subscriber_id = $factory->user->create( array( 'role' => 'subscriber', @@ -197,13 +208,30 @@ public function test_get_theme_item_no_user() { /** * @covers WP_REST_Global_Styles_Controller_Gutenberg::get_theme_item */ - public function test_get_theme_item_permission_check() { + public function test_get_theme_item_subscriber_permission_check() { wp_set_current_user( self::$subscriber_id ); + switch_theme( 'emptytheme' ); $request = new WP_REST_Request( 'GET', '/wp/v2/global-styles/themes/emptytheme' ); $response = rest_get_server()->dispatch( $request ); $this->assertErrorResponse( 'rest_cannot_manage_global_styles', $response, 403 ); } + /** + * @covers WP_REST_Global_Styles_Controller_Gutenberg::get_theme_item + */ + public function test_get_theme_item_editor_permission_check() { + wp_set_current_user( self::$editor_id ); + switch_theme( 'emptytheme' ); + $request = new WP_REST_Request( 'GET', '/wp/v2/global-styles/themes/emptytheme' ); + $response = rest_get_server()->dispatch( $request ); + // Checks that the response has the expected keys. + $data = $response->get_data(); + $links = $response->get_links(); + $this->assertArrayHasKey( 'settings', $data, 'Data does not have "settings" key' ); + $this->assertArrayHasKey( 'styles', $data, 'Data does not have "styles" key' ); + $this->assertArrayHasKey( 'self', $links, 'Links do not have a "self" key' ); + } + /** * @covers WP_REST_Global_Styles_Controller_Gutenberg::get_theme_item */