WordPress.org

Make WordPress Core

Ticket #39735: 39735.patch

File 39735.patch, 2.5 KB (added by enrico.sorcinelli, 5 years ago)
  • src/wp-includes/rest-api/endpoints/class-wp-rest-comments-controller.php

     
    726726
    727727                        $updated = wp_update_comment( wp_slash( (array) $prepared_args ) );
    728728
    729                         if ( false === $updated ) {
     729                        if ( false === $updated || ! $updated ) {
    730730                                return new WP_Error( 'rest_comment_failed_edit', __( 'Updating comment failed.' ), array( 'status' => 500 ) );
    731731                        }
    732732
  • tests/phpunit/tests/rest-api/rest-comments-controller.php

     
    20022002                $this->assertEquals( 200, $response->get_status() );
    20032003
    20042004                $response = $this->server->dispatch( $request );
    2005                 $this->assertEquals( 200, $response->get_status() );
     2005                $this->assertEquals( 500, $response->get_status() );
    20062006        }
    20072007
    20082008        public function test_update_comment_status() {
     
    27712771                update_comment_meta( $comment->comment_ID, 'my_custom_int', $value );
    27722772        }
    27732773
     2774        /**
     2775         * @ticket
     2776         */
     2777        public function test_update_comment_db_error () {
     2778                global $wpdb;
     2779
     2780                wp_set_current_user( self::$admin_id );
     2781
     2782                $params = array(
     2783                        'content' => 'This isn\'t a saxophone. It\'s an umbrella.',
     2784                );
     2785
     2786                // Block comments from being saved, simulate a DB error
     2787                add_filter( 'query', array( $this, '_block_comments' ) );
     2788               
     2789                $request = new WP_REST_Request( 'PUT', sprintf( '/wp/v2/comments/%d', self::$approved_id ) );
     2790
     2791                $request->add_header( 'content-type', 'application/json' );
     2792                $request->set_body( wp_json_encode( $params ) );
     2793               
     2794                try {
     2795                        $response = $this->server->dispatch( $request );
     2796                } catch ( Exception $e )  {
     2797                        $this->assertContains( 'Empty query', $e->getMessage() );
     2798                }
     2799
     2800                remove_filter( 'query', array( $this, '_block_comments' ) );
     2801        }
     2802
     2803        /**
     2804         * Block comments from being saved
     2805         */
     2806        public function _block_comments( $sql ) {
     2807                global $wpdb;
     2808                if ( false !== strpos( $sql, $wpdb->comments ) && 0 === stripos( trim ( $sql ), 'UPDATE') ) {
     2809                        //echo "\n". $sql . "\n";
     2810                        return '';
     2811                }
     2812                return $sql;
     2813        }
     2814
    27742815        protected function check_comment_data( $data, $context, $links ) {
    27752816                $comment = get_comment( $data['id'] );
    27762817