WordPress.org

Make WordPress Core

Ticket #17588: 17588.unit-tests.diff

File 17588.unit-tests.diff, 1.8 KB (added by kovshenin, 13 months 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}