9 $auth = base64_encode(
'michael:foo');
17 array(
"GET / HTTP/1.1\r\n\r\n", array(
21 'request_url' => array(
32 array(
"HEAD /path?query=foo HTTP/1.0\r\nHost: example.com\r\nX-Foo: foo\r\nx-foo: Bar\r\nX-Foo: foo\r\nX-Foo: Baz\r\n\r\n", array(
36 'request_url' => array(
38 'host' =>
'example.com',
41 'query' =>
'query=foo'
44 'Host' =>
'example.com',
45 'X-Foo' => array(
'foo',
'foo',
'Baz'),
51 array(
"PUT / HTTP/1.0\r\nhost: example.com:443\r\nContent-Length: 4\r\n\r\ntest", array(
55 'request_url' => array(
57 'host' =>
'example.com',
63 'host' =>
'example.com:443',
64 'Content-Length' =>
'4'
69 array(
"GET / HTTP/1.1\r\nHost: example.com:8080\r\nAuthorization: Basic {$auth}\r\n\r\n", array(
73 'request_url' => array(
75 'host' =>
'example.com',
81 'Host' =>
'example.com:8080',
82 'Authorization' =>
"Basic {$auth}"
87 array(
"GET / HTTP/1.1\r\nHost: example.com:8080\r\nauthorization: Basic {$auth}\r\n\r\n", array(
91 'request_url' => array(
93 'host' =>
'example.com',
99 'Host' =>
'example.com:8080',
100 'authorization' =>
"Basic {$auth}"
113 array(
"HTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n", array(
114 'protocol' =>
'HTTP',
117 'reason_phrase' =>
'OK',
119 'Content-Length' => 0
123 array(
"HTTP/1.0 400 Bad Request\r\nContent-Length: 0\r\n\r\n", array(
124 'protocol' =>
'HTTP',
127 'reason_phrase' =>
'Bad Request',
129 'Content-Length' => 0
133 array(
"HTTP/1.0 100 Continue\r\n\r\n", array(
134 'protocol' =>
'HTTP',
137 'reason_phrase' =>
'Continue',
138 'headers' => array(),
141 array(
"HTTP/1.1 204 No Content\r\nX-Foo: foo\r\nx-foo: Bar\r\nX-Foo: foo\r\n\r\n", array(
142 'protocol' =>
'HTTP',
145 'reason_phrase' =>
'No Content',
147 'X-Foo' => array(
'foo',
'foo'),
152 array(
"HTTP/1.1 200 Ok that is great!\r\nContent-Length: 4\r\n\r\nTest", array(
153 'protocol' =>
'HTTP',
156 'reason_phrase' =>
'Ok that is great!',
158 'Content-Length' => 4
168 $this->assertFalse($expected);
172 $this->assertEquals($result[
'method'], $expected[
'method']);
173 $this->assertEquals($result[
'protocol'], $expected[
'protocol']);
174 $this->assertEquals($result[
'version'], $expected[
'version']);
175 $this->assertEquals($result[
'request_url'], $expected[
'request_url']);
176 $this->assertEquals($result[
'body'], $expected[
'body']);
183 $this->assertFalse($expected);
187 $this->assertEquals($result[
'protocol'], $expected[
'protocol']);
188 $this->assertEquals($result[
'version'], $expected[
'version']);
189 $this->assertEquals($result[
'code'], $expected[
'code']);
190 $this->assertEquals($result[
'reason_phrase'], $expected[
'reason_phrase']);
191 $this->assertEquals($result[
'body'], $expected[
'body']);
197 $normalized = array();
198 foreach ($headers as $key => $value) {
199 $key = strtolower($key);
200 if (!isset($normalized[$key])) {
201 $normalized[$key] = $value;
202 } elseif (!is_array($normalized[$key])) {
203 $normalized[$key] = array($value);
205 $normalized[$key][] = $value;
209 foreach ($normalized as $key => &$value) {
210 if (is_array($value)) {
223 $this->assertEquals($result, $expected);