Make WordPress Core


Ignore:
Timestamp:
10/15/2021 02:03:38 AM (3 years ago)
Author:
rachelbaker
Message:

REST API: Add text-field and textarea-field as available schema formats for string sanitization.

Props ocean90, TimothyBlynJacobs.
Fixes #49960.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/tests/phpunit/tests/rest-api/rest-controller.php

    r51568 r51908  
    2424            array(
    2525                'args' => array(
    26                     'someinteger' => array(
     26                    'someinteger'       => array(
    2727                        'type' => 'integer',
    2828                    ),
    29                     'someboolean' => array(
     29                    'someboolean'       => array(
    3030                        'type' => 'boolean',
    3131                    ),
    32                     'somestring'  => array(
     32                    'somestring'        => array(
    3333                        'type' => 'string',
    3434                    ),
    35                     'somehex'     => array(
     35                    'somehex'           => array(
    3636                        'type'   => 'string',
    3737                        'format' => 'hex-color',
    3838                    ),
    39                     'someenum'    => array(
     39                    'someenum'          => array(
    4040                        'type' => 'string',
    4141                        'enum' => array( 'a' ),
    4242                    ),
    43                     'somedate'    => array(
     43                    'somedate'          => array(
    4444                        'type'   => 'string',
    4545                        'format' => 'date-time',
    4646                    ),
    47                     'someemail'   => array(
     47                    'someemail'         => array(
    4848                        'type'   => 'string',
    4949                        'format' => 'email',
    5050                    ),
    51                     'someuuid'    => array(
     51                    'someuuid'          => array(
    5252                        'type'   => 'string',
    5353                        'format' => 'uuid',
     54                    ),
     55                    'sometextfield'     => array(
     56                        'type'   => 'string',
     57                        'format' => 'text-field',
     58                    ),
     59                    'sometextareafield' => array(
     60                        'type'   => 'string',
     61                        'format' => 'textarea-field',
    5462                    ),
    5563                ),
     
    217225            'rest_invalid_uuid',
    218226            rest_validate_request_arg( '123e4567-e89b-12d3-a456-426655440000X', $this->request, 'someuuid' )
     227        );
     228    }
     229
     230    /**
     231     * @ticket 49960
     232     */
     233    public function test_validate_schema_format_text_field() {
     234        $this->assertTrue(
     235            rest_validate_request_arg( 'Hello World', $this->request, 'sometextfield' )
     236        );
     237
     238        $this->assertErrorResponse(
     239            'rest_invalid_type',
     240            rest_validate_request_arg( false, $this->request, 'sometextfield' )
     241        );
     242
     243        $this->assertSame(
     244            'Hello World',
     245            rest_sanitize_request_arg( 'Hello World', $this->request, 'sometextfield' )
     246        );
     247        $this->assertSame(
     248            'Hello World',
     249            rest_sanitize_request_arg( '<p>Hello World</p>', $this->request, 'sometextfield' )
     250        );
     251    }
     252
     253    /**
     254     * @ticket 49960
     255     */
     256    public function test_validate_schema_format_textarea_field() {
     257        $this->assertTrue(
     258            rest_validate_request_arg( "Hello\nWorld", $this->request, 'sometextareafield' )
     259        );
     260
     261        $this->assertErrorResponse(
     262            'rest_invalid_type',
     263            rest_validate_request_arg( false, $this->request, 'sometextareafield' )
     264        );
     265
     266        $this->assertSame(
     267            "Hello\nWorld",
     268            rest_sanitize_request_arg( "Hello\nWorld", $this->request, 'sometextareafield' )
     269        );
     270        $this->assertSame(
     271            "Hello\nWorld",
     272            rest_sanitize_request_arg( "<p>Hello\nWorld</p>", $this->request, 'sometextareafield' )
    219273        );
    220274    }
     
    235289        $this->assertArrayHasKey( 'somehex', $args );
    236290        $this->assertArrayHasKey( 'someuuid', $args );
     291        $this->assertArrayHasKey( 'sometextfield', $args );
     292        $this->assertArrayHasKey( 'sometextareafield', $args );
    237293        $this->assertArrayHasKey( 'someenum', $args );
    238294        $this->assertArrayHasKey( 'someargoptions', $args );
     
    324380                'somehex',
    325381                'someuuid',
     382                'sometextfield',
     383                'sometextareafield',
    326384                'someenum',
    327385                'someargoptions',
     
    357415                    'somehex',
    358416                    'someuuid',
     417                    'sometextfield',
     418                    'sometextareafield',
    359419                    'someenum',
    360420                    'someargoptions',
Note: See TracChangeset for help on using the changeset viewer.