Make WordPress Core

Ticket #47024: 47024.4.diff

File 47024.4.diff, 3.6 KB (added by kadamwhite, 5 years ago)

phpcbf

  • src/wp-includes/rest-api/endpoints/class-wp-rest-comments-controller.php

    diff --git src/wp-includes/rest-api/endpoints/class-wp-rest-comments-controller.php src/wp-includes/rest-api/endpoints/class-wp-rest-comments-controller.php
    index 0320efaae9..376959ad2a 100644
    class WP_REST_Comments_Controller extends WP_REST_Controller { 
    16721672                        return false;
    16731673                }
    16741674
    1675                 if ( ! current_user_can( 'moderate_comments' ) ) {
    1676                         return false;
     1675                if ( current_user_can( 'moderate_comments' ) ) {
     1676                        return true;
    16771677                }
    16781678
    16791679                return current_user_can( 'edit_comment', $comment->comment_ID );
  • tests/phpunit/tests/rest-api/rest-comments-controller.php

    diff --git tests/phpunit/tests/rest-api/rest-comments-controller.php tests/phpunit/tests/rest-api/rest-comments-controller.php
    index d1fe7aa34a..aa77f481ab 100644
    class WP_Test_REST_Comments_Controller extends WP_Test_REST_Controller_Testcase 
    1313        protected static $superadmin_id;
    1414        protected static $admin_id;
    1515        protected static $editor_id;
     16        protected static $moderator_id;
    1617        protected static $subscriber_id;
    1718        protected static $author_id;
    1819
    class WP_Test_REST_Comments_Controller extends WP_Test_REST_Controller_Testcase 
    2728        protected $endpoint;
    2829
    2930        public static function wpSetUpBeforeClass( $factory ) {
     31                add_role(
     32                        'comment_moderator',
     33                        'Comment Moderator',
     34                        array(
     35                                'read'              => true,
     36                                'moderate_comments' => true,
     37                        )
     38                );
     39
    3040                self::$superadmin_id = $factory->user->create(
    3141                        array(
    3242                                'role'       => 'administrator',
    class WP_Test_REST_Comments_Controller extends WP_Test_REST_Controller_Testcase 
    4353                                'role' => 'editor',
    4454                        )
    4555                );
     56                self::$moderator_id  = $factory->user->create(
     57                        array(
     58                                'role' => 'comment_moderator',
     59                        )
     60                );
    4661                self::$subscriber_id = $factory->user->create(
    4762                        array(
    4863                                'role' => 'subscriber',
    class WP_Test_REST_Comments_Controller extends WP_Test_REST_Controller_Testcase 
    98113        }
    99114
    100115        public static function wpTearDownAfterClass() {
     116                remove_role( 'comment_moderator' );
     117
    101118                self::delete_user( self::$superadmin_id );
    102119                self::delete_user( self::$admin_id );
    103120                self::delete_user( self::$editor_id );
     121                self::delete_user( self::$moderator_id );
    104122                self::delete_user( self::$subscriber_id );
    105123                self::delete_user( self::$author_id );
    106124
    class WP_Test_REST_Comments_Controller extends WP_Test_REST_Controller_Testcase 
    24802498                $this->assertErrorResponse( 'rest_cannot_edit', $response, 401 );
    24812499        }
    24822500
     2501        /**
     2502         * @ticket 47024
     2503         */
     2504        public function test_update_comment_when_can_moderate_comments() {
     2505                wp_set_current_user( self::$moderator_id );
     2506
     2507                $request = new WP_REST_Request( 'PUT', sprintf( '/wp/v2/comments/%d', self::$approved_id ) );
     2508                $params  = array(
     2509                        'content' => 'Updated comment.',
     2510                        'date'    => '2019-10-07T23:14:25',
     2511                );
     2512                $request->add_header( 'content-type', 'application/json' );
     2513                $request->set_body( wp_json_encode( $params ) );
     2514
     2515                $response = rest_get_server()->dispatch( $request );
     2516                $this->assertEquals( 200, $response->get_status() );
     2517
     2518                $comment = $response->get_data();
     2519                $updated = get_comment( self::$approved_id );
     2520
     2521                $this->assertEquals( $params['content'], $updated->comment_content );
     2522                $this->assertEquals( self::$post_id, $comment['post'] );
     2523                $this->assertEquals( '2019-10-07T23:14:25', $comment['date'] );
     2524        }
     2525
    24832526        public function test_update_comment_private_post_invalid_permission() {
    24842527                $private_comment_id = $this->factory->comment->create(
    24852528                        array(