Make WordPress Core

Ticket #38820: 38820.3.diff

File 38820.3.diff, 2.5 KB (added by rachelbaker, 9 years ago)

Only allow comments to be created with a comment type of comment, otherwise return error.

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

     
    433433                        return $prepared_comment;
    434434                }
    435435
     436                // Do not allow comments to be created with a non-default type.
     437                if ( ! empty( $request['type'] ) && 'comment' !== $request['type'] ) {
     438                        return new WP_Error( 'rest_invalid_comment_type', __( 'Cannot create a comment with that type.' ), array( 'status' => 400 ) );
     439                }
     440
    436441                /*
    437442                 * Do not allow a comment to be created with missing or empty
    438443                 * comment_content. See wp_handle_comment_submission().
  • tests/phpunit/tests/rest-api/rest-comments-controller.php

     
    10341034                $this->assertEquals( $comment_id, $collection_data[0]['id'] );
    10351035        }
    10361036
     1037        /**
     1038         * @ticket 38820
     1039         */
     1040        public function test_create_comment_with_invalid_type() {
     1041                $post_id = $this->factory->post->create();
     1042                wp_set_current_user( self::$admin_id );
     1043
     1044                $params = array(
     1045                        'post'    => $post_id,
     1046                        'author'       => self::$admin_id,
     1047                        'author_name'  => 'Comic Book Guy',
     1048                        'author_email' => 'cbg@androidsdungeon.com',
     1049                        'author_url'   => 'http://androidsdungeon.com',
     1050                        'content' => 'Worst Comment Ever!',
     1051                        'date'    => '2014-11-07T10:14:25',
     1052                        'type' => 'foo',
     1053                );
     1054
     1055                $request = new WP_REST_Request( 'POST', '/wp/v2/comments' );
     1056                $request->add_header( 'content-type', 'application/json' );
     1057                $request->set_body( wp_json_encode( $params ) );
     1058
     1059                $response = $this->server->dispatch( $request );
     1060                $this->assertErrorResponse( 'rest_invalid_comment_type', $response, 400 );
     1061        }
     1062
    10371063        public function test_create_comment_invalid_email() {
    10381064                $post_id = $this->factory->post->create();
    10391065                wp_set_current_user( self::$admin_id );
     
    22182244                $this->assertArrayHasKey( 'type', $properties );
    22192245
    22202246                $this->assertEquals( '127.0.0.1', $properties['author_ip']['default'] );
     2247
     2248                $this->assertEquals( 'comment', $properties['type']['default'] );
     2249
    22212250                $this->assertEquals( 0, $properties['parent']['default'] );
    22222251                $this->assertEquals( 0, $properties['post']['default'] );
    22232252        }