Annotation of embedaddon/php/ext/standard/tests/http/bug38802.phpt, revision 1.1

1.1     ! misho       1: --TEST--
        !             2: Bug #38802 (ignore_errors and max_redirects)
        !             3: --INI--
        !             4: allow_url_fopen=1
        !             5: --SKIPIF--
        !             6: <?php require 'server.inc'; http_server_skipif('tcp://127.0.0.1:12342'); ?>
        !             7: --FILE--
        !             8: <?php
        !             9: require 'server.inc';
        !            10: 
        !            11: function do_test($context_options) {
        !            12: 
        !            13:        $context = stream_context_create(array('http' => $context_options));
        !            14: 
        !            15:        $responses = array(
        !            16:                "data://text/plain,HTTP/1.0 302 Moved Temporarily\r\nLocation: http://127.0.0.1:12342/foo/bar2\r\n\r\n1",
        !            17:                "data://text/plain,HTTP/1.0 301 Moved Permanently\r\nLocation: http://127.0.0.1:12342/foo/bar3\r\n\r\n",
        !            18:                "data://text/plain,HTTP/1.0 302 Moved Temporarily\r\nLocation: http://127.0.0.1:12342/foo/bar4\r\n\r\n3",
        !            19:                "data://text/plain,HTTP/1.0 200 OK\r\n\r\ndone.",
        !            20:        );
        !            21: 
        !            22:        $pid = http_server("tcp://127.0.0.1:12342", $responses, $output);
        !            23: 
        !            24:        $fd = fopen('http://127.0.0.1:12342/foo/bar', 'rb', false, $context);
        !            25:        var_dump($fd);
        !            26: 
        !            27:        if ($fd) {
        !            28:                $meta_data = stream_get_meta_data($fd);
        !            29:                var_dump($meta_data['wrapper_data']);
        !            30: 
        !            31:                var_dump(stream_get_contents($fd));
        !            32:        }
        !            33: 
        !            34:        fseek($output, 0, SEEK_SET);
        !            35:        var_dump(stream_get_contents($output));
        !            36: 
        !            37:        http_server_kill($pid);
        !            38: }
        !            39: 
        !            40: echo "-- Test: follow all redirections --\n";
        !            41: 
        !            42: do_test(array(), 4);
        !            43: 
        !            44: echo "-- Test: fail after 2 redirections --\n";
        !            45: 
        !            46: do_test(array('max_redirects' => 2), 2);
        !            47: 
        !            48: echo "-- Test: fail at first redirection --\n";
        !            49: 
        !            50: do_test(array('max_redirects' => 0), 1);
        !            51: 
        !            52: echo "-- Test: fail at first redirection (2) --\n";
        !            53: 
        !            54: do_test(array('max_redirects' => 1), 1);
        !            55: 
        !            56: echo "-- Test: return at first redirection --\n";
        !            57: 
        !            58: do_test(array('max_redirects' => 0, 'ignore_errors' => 1), 1);
        !            59: 
        !            60: echo "-- Test: return at first redirection (2) --\n";
        !            61: 
        !            62: do_test(array('max_redirects' => 1, 'ignore_errors' => 1), 1);
        !            63: 
        !            64: echo "-- Test: return at second redirection --\n";
        !            65: 
        !            66: do_test(array('max_redirects' => 2, 'ignore_errors' => 1), 2);
        !            67: 
        !            68: ?>
        !            69: --EXPECTF--
        !            70: -- Test: follow all redirections --
        !            71: resource(%d) of type (stream)
        !            72: array(7) {
        !            73:   [0]=>
        !            74:   string(30) "HTTP/1.0 302 Moved Temporarily"
        !            75:   [1]=>
        !            76:   string(41) "Location: http://127.0.0.1:12342/foo/bar2"
        !            77:   [2]=>
        !            78:   string(30) "HTTP/1.0 301 Moved Permanently"
        !            79:   [3]=>
        !            80:   string(41) "Location: http://127.0.0.1:12342/foo/bar3"
        !            81:   [4]=>
        !            82:   string(30) "HTTP/1.0 302 Moved Temporarily"
        !            83:   [5]=>
        !            84:   string(41) "Location: http://127.0.0.1:12342/foo/bar4"
        !            85:   [6]=>
        !            86:   string(15) "HTTP/1.0 200 OK"
        !            87: }
        !            88: string(5) "done."
        !            89: string(195) "GET /foo/bar HTTP/1.0
        !            90: Host: 127.0.0.1:12342
        !            91: 
        !            92: GET /foo/bar2 HTTP/1.0
        !            93: Host: 127.0.0.1:12342
        !            94: 
        !            95: GET /foo/bar3 HTTP/1.0
        !            96: Host: 127.0.0.1:12342
        !            97: 
        !            98: GET /foo/bar4 HTTP/1.0
        !            99: Host: 127.0.0.1:12342
        !           100: 
        !           101: "
        !           102: -- Test: fail after 2 redirections --
        !           103: 
        !           104: Warning: fopen(http://127.0.0.1:12342/foo/bar): failed to open stream: Redirection limit reached, aborting in %s
        !           105: bool(false)
        !           106: string(97) "GET /foo/bar HTTP/1.0
        !           107: Host: 127.0.0.1:12342
        !           108: 
        !           109: GET /foo/bar2 HTTP/1.0
        !           110: Host: 127.0.0.1:12342
        !           111: 
        !           112: "
        !           113: -- Test: fail at first redirection --
        !           114: 
        !           115: Warning: fopen(http://127.0.0.1:12342/foo/bar): failed to open stream: Redirection limit reached, aborting in %s
        !           116: bool(false)
        !           117: string(48) "GET /foo/bar HTTP/1.0
        !           118: Host: 127.0.0.1:12342
        !           119: 
        !           120: "
        !           121: -- Test: fail at first redirection (2) --
        !           122: 
        !           123: Warning: fopen(http://127.0.0.1:12342/foo/bar): failed to open stream: Redirection limit reached, aborting in %s
        !           124: bool(false)
        !           125: string(48) "GET /foo/bar HTTP/1.0
        !           126: Host: 127.0.0.1:12342
        !           127: 
        !           128: "
        !           129: -- Test: return at first redirection --
        !           130: resource(%d) of type (stream)
        !           131: array(2) {
        !           132:   [0]=>
        !           133:   string(30) "HTTP/1.0 302 Moved Temporarily"
        !           134:   [1]=>
        !           135:   string(41) "Location: http://127.0.0.1:12342/foo/bar2"
        !           136: }
        !           137: string(1) "1"
        !           138: string(48) "GET /foo/bar HTTP/1.0
        !           139: Host: 127.0.0.1:12342
        !           140: 
        !           141: "
        !           142: -- Test: return at first redirection (2) --
        !           143: resource(%d) of type (stream)
        !           144: array(2) {
        !           145:   [0]=>
        !           146:   string(30) "HTTP/1.0 302 Moved Temporarily"
        !           147:   [1]=>
        !           148:   string(41) "Location: http://127.0.0.1:12342/foo/bar2"
        !           149: }
        !           150: string(1) "1"
        !           151: string(48) "GET /foo/bar HTTP/1.0
        !           152: Host: 127.0.0.1:12342
        !           153: 
        !           154: "
        !           155: -- Test: return at second redirection --
        !           156: resource(%d) of type (stream)
        !           157: array(4) {
        !           158:   [0]=>
        !           159:   string(30) "HTTP/1.0 302 Moved Temporarily"
        !           160:   [1]=>
        !           161:   string(41) "Location: http://127.0.0.1:12342/foo/bar2"
        !           162:   [2]=>
        !           163:   string(30) "HTTP/1.0 301 Moved Permanently"
        !           164:   [3]=>
        !           165:   string(41) "Location: http://127.0.0.1:12342/foo/bar3"
        !           166: }
        !           167: string(0) ""
        !           168: string(97) "GET /foo/bar HTTP/1.0
        !           169: Host: 127.0.0.1:12342
        !           170: 
        !           171: GET /foo/bar2 HTTP/1.0
        !           172: Host: 127.0.0.1:12342
        !           173: 
        !           174: "

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>