WordPress.org

Make WordPress Core

Ticket #38425: 38425.2.diff

File 38425.2.diff, 2.9 KB (added by rachelbaker, 4 years ago)

Unit test and schema correction as well

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

     
    419419                        $prepared_comment['comment_author_url'] = '';
    420420                }
    421421
    422                 $prepared_comment['comment_agent'] = '';
     422                if ( ! isset( $prepared_comment['comment_agent'] ) ) {
     423                        $prepared_comment['comment_agent'] = '';
     424                }
     425
    423426                $prepared_comment['comment_approved'] = wp_allow_comment( $prepared_comment, true );
    424427
    425428                if ( is_wp_error( $prepared_comment['comment_approved'] ) ) {
     
    888891                        $prepared_comment['comment_author_IP'] = $request['author_ip'];
    889892                }
    890893
     894                if ( isset( $request['author_user_agent'] ) ) {
     895                        $prepared_comment['comment_agent'] = $request['author_user_agent'];
     896                }
     897
    891898                if ( isset( $request['type'] ) ) {
    892899                        // Comment type "comment" needs to be created as an empty string.
    893900                        $prepared_comment['comment_type'] = 'comment' === $request['type'] ? '' : $request['type'];
     
    975982                                        'description'  => __( 'User agent for the object author.' ),
    976983                                        'type'         => 'string',
    977984                                        'context'      => array( 'edit' ),
    978                                         'readonly'     => true,
     985                                        'arg_options'  => array(
     986                                                'sanitize_callback' => 'sanitize_text_field',
     987                                        ),
    979988                                ),
    980989                                'content'          => array(
    981990                                        'description'     => __( 'The content for the object.' ),
  • tests/phpunit/tests/rest-api/rest-comments-controller.php

     
    10641064                $this->assertErrorResponse( 'rest_comment_invalid_status', $response, 403 );
    10651065        }
    10661066
    1067         public function test_create_comment_with_status_and_IP() {
     1067        public function test_create_comment_with_status_IP_and_user_agent() {
    10681068                $post_id = $this->factory->post->create();
    10691069                wp_set_current_user( $this->admin_id );
    10701070
     
    10741074                        'author_email' => 'cbg@androidsdungeon.com',
    10751075                        'author_ip'    => '139.130.4.5',
    10761076                        'author_url'   => 'http://androidsdungeon.com',
     1077                        'author_user_agent' => 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36',
    10771078                        'content'      => 'Worst Comment Ever!',
    10781079                        'status'       => 'approved',
    10791080                );
     
    10881089                $data = $response->get_data();
    10891090                $this->assertEquals( 'approved', $data['status'] );
    10901091                $this->assertEquals( '139.130.4.5', $data['author_ip'] );
     1092                $this->assertEquals( 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36', $data['author_user_agent'] );
    10911093        }
    10921094
    10931095        public function test_create_comment_invalid_author_IP() {