WordPress.org

Make WordPress Core

Ticket #17588: 17588.unit-tests.diff

File 17588.unit-tests.diff, 1.8 KB (added by kovshenin, 5 years ago)
  • tests/http/base.php

     
    128128        }
    129129
    130130        /**
     131         * @ticket 17588
     132         */
     133        function test_redirections_method() {
     134                $methods = array(
     135                        301 => 'POST',
     136                        307 => 'POST',
     137                        302 => 'GET',
     138                        303 => 'GET',
     139                );
     140
     141                foreach ( $methods as $code => $expected_method ) {
     142                        $url = add_query_arg( array(
     143                                'method-check' => 'true',
     144                                'code' => $code,
     145                                'rt' => 2,
     146                        ), $this->redirection_script );
     147
     148                        $res = wp_remote_request( $url, array( 'method' => 'POST' ) );
     149                        $this->assertEquals( $expected_method, wp_remote_retrieve_header( $res, 'requestmethod' ), 'With code: ' . $code );
     150                }
     151        }
     152
     153        /**
    131154         * Do not redirect on non 3xx status codes
    132155         *
    133156         * @ticket 16889
  • data/WPHTTP-testcase-redirection-script.php

     
    5151        exit;
    5252}
    5353
     54if ( isset( $_GET['method-check'] ) )
     55        header( "requestmethod: " . $_SERVER['REQUEST_METHOD'] );
     56
    5457$rt = isset($_GET['rt']) ? $_GET['rt'] : 5;
    5558$r = isset($_GET['r']) ? $_GET['r'] : 0;
    5659
    57 /*if ( $r === 0 ) {
    58         header("Location: http://tools.dd32.id.au/redirect/?r=1" );
    59         exit;
    60 }*/
    61 
    6260if ( $r < $rt ) {
    6361        $code = isset($_GET['code']) ? (int)$_GET['code'] : 302;
    64         header("Location: $url?rt=" . $rt . "&r=" . ($r+1), true, $code);
     62
     63        $args = array(
     64                'code' => $code,
     65                'rt' => $rt,
     66                'r' => $r+1,
     67        );
     68
     69        if ( isset( $_GET['method-check'] ) )
     70                $args['method-check'] = 'true';
     71
     72        $url = $url . '?' . http_build_query( $args );
     73        header( "Location: $url", true, $code );
    6574        echo "Redirect $r of $rt";
    6675        exit;
    6776}