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>