Ticket #38720: 38720.2.diff
| File 38720.2.diff, 5.7 KB (added by , 10 years ago) |
|---|
-
src/wp-includes/rest-api/endpoints/class-wp-rest-comments-controller.php
diff --git a/src/wp-includes/rest-api/endpoints/class-wp-rest-comments-controller.php b/src/wp-includes/rest-api/endpoints/class-wp-rest-comments-controller.php index 365c4f6..3e0071f 100644
a b class WP_REST_Comments_Controller extends WP_REST_Controller { 431 431 } 432 432 433 433 /* 434 * Do not allow a comment to be created with an empty string for434 * Do not allow a comment to be created with missing or empty 435 435 * comment_content. See wp_handle_comment_submission(). 436 436 */ 437 if ( '' === $prepared_comment['comment_content']) {438 return new WP_Error( 'rest_comment_content_ invalid', __( 'Comment content is invalid.' ), array( 'status' => 400 ) );437 if ( empty( $prepared_comment['comment_content'] ) ) { 438 return new WP_Error( 'rest_comment_content_required', __( 'Missing comment content.' ), array( 'status' => 400 ) ); 439 439 } 440 440 441 441 // Setting remaining values before wp_insert_comment so we can use wp_allow_comment(). … … class WP_REST_Comments_Controller extends WP_REST_Controller { 636 636 return $prepared_args; 637 637 } 638 638 639 if ( isset( $prepared_args['comment_content'] ) && empty( $prepared_args['comment_content'] ) ) { 640 return new WP_Error( 'rest_comment_invalid_content', __( 'Comment content cannot be empty.' ), array( 'status' => 400 ) ); 641 } 642 639 643 $prepared_args['comment_ID'] = $id; 640 644 641 645 $check_comment_lengths = wp_check_comment_data_max_lengths( $prepared_args ); … … class WP_REST_Comments_Controller extends WP_REST_Controller { 1064 1068 } 1065 1069 } 1066 1070 1067 // Require 'comment_content' unless only the 'comment_status' is being updated.1068 if ( ! empty( $prepared_comment ) && ! isset( $prepared_comment['comment_content'] ) ) {1069 return new WP_Error( 'rest_comment_content_required', __( 'Missing comment content.' ), array( 'status' => 400 ) );1070 }1071 1072 1071 /** 1073 1072 * Filters a comment after it is prepared for the database. 1074 1073 * -
tests/phpunit/tests/rest-api/rest-comments-controller.php
diff --git a/tests/phpunit/tests/rest-api/rest-comments-controller.php b/tests/phpunit/tests/rest-api/rest-comments-controller.php index e225cbc..e5ab1b7 100644
a b class WP_Test_REST_Comments_Controller extends WP_Test_REST_Controller_Testcase 827 827 $this->assertEquals( self::$post_id, $data['post'] ); 828 828 } 829 829 830 public function test_create_item_no_content() { 831 wp_set_current_user( 0 ); 832 833 $params = array( 834 'post' => self::$post_id, 835 'author_name' => 'Comic Book Guy', 836 'author_email' => 'cbg@androidsdungeon.com', 837 'author_url' => 'http://androidsdungeon.com', 838 'content' => '', 839 'date' => '2014-11-07T10:14:25', 840 ); 841 842 $request = new WP_REST_Request( 'POST', '/wp/v2/comments' ); 843 $request->add_header( 'content-type', 'application/json' ); 844 $request->set_body( wp_json_encode( $params ) ); 845 $response = $this->server->dispatch( $request ); 846 $this->assertErrorResponse( 'rest_comment_content_required', $response, 400 ); 847 848 unset( $params['content'] ); 849 $request->set_body( wp_json_encode( $params ) ); 850 $response = $this->server->dispatch( $request ); 851 $this->assertErrorResponse( 'rest_comment_content_required', $response, 400 ); 852 } 853 830 854 public function test_create_item_using_accepted_content_raw_value() { 831 855 wp_set_current_user( 0 ); 832 856 … … class WP_Test_REST_Comments_Controller extends WP_Test_REST_Controller_Testcase 929 953 $this->assertArrayHasKey( 'author_email', $data['data']['params'] ); 930 954 } 931 955 932 public function test_create_item_invalid_ blank_content() {956 public function test_create_item_invalid_no_content() { 933 957 wp_set_current_user( 0 ); 934 958 935 959 $params = array( … … class WP_Test_REST_Comments_Controller extends WP_Test_REST_Controller_Testcase 937 961 'author_name' => 'Reverend Lovejoy', 938 962 'author_email' => 'lovejoy@example.com', 939 963 'author_url' => 'http://timothylovejoy.jr', 940 'content' => '',941 964 ); 942 965 943 966 $request = new WP_REST_Request( 'POST', '/wp/v2/comments' ); … … class WP_Test_REST_Comments_Controller extends WP_Test_REST_Controller_Testcase 945 968 $request->set_body( wp_json_encode( $params ) ); 946 969 947 970 $response = $this->server->dispatch( $request ); 948 $this->assertErrorResponse( 'rest_comment_content_invalid', $response, 400 ); 971 $this->assertErrorResponse( 'rest_comment_content_required', $response, 400 ); 972 973 $params['content'] = ''; 974 $request->set_body( wp_json_encode( $params ) ); 975 $response = $this->server->dispatch( $request ); 976 $this->assertErrorResponse( 'rest_comment_content_required', $response, 400 ); 949 977 } 950 978 951 979 public function test_create_item_invalid_date() { … … class WP_Test_REST_Comments_Controller extends WP_Test_REST_Controller_Testcase 1618 1646 $this->assertEquals( '2014-11-07T10:14:25', $comment['date'] ); 1619 1647 } 1620 1648 1649 public function test_update_item_no_content() { 1650 $post_id = $this->factory->post->create(); 1651 1652 wp_set_current_user( self::$admin_id ); 1653 1654 $request = new WP_REST_Request( 'PUT', sprintf( '/wp/v2/comments/%d', self::$approved_id ) ); 1655 $request->set_param( 'author_email', 'another@email.com' ); 1656 1657 // Sending a request without content is fine. 1658 $response = $this->server->dispatch( $request ); 1659 $this->assertEquals( 200, $response->get_status() ); 1660 1661 // Sending a request with empty comment is not fine. 1662 $request->set_param( 'author_email', 'yetanother@email.com' ); 1663 $request->set_param( 'content', '' ); 1664 $response = $this->server->dispatch( $request ); 1665 $this->assertErrorResponse( 'rest_comment_invalid_content', $response, 400 ); 1666 } 1667 1621 1668 public function test_update_comment_status() { 1622 1669 wp_set_current_user( self::$admin_id ); 1623 1670
![(please configure the [header_logo] section in trac.ini)](/chrome/site/your_project_logo.png)