ILIAS  release_5-4 Revision v5.4.26-12-gabc799a52e6
MessageTest.php
Go to the documentation of this file.
1 <?php
2 
3 namespace Sabre\HTTP;
4 
6 
7  function testConstruct() {
8 
9  $message = new MessageMock();
10  $this->assertInstanceOf('Sabre\HTTP\Message', $message);
11 
12  }
13 
14  function testStreamBody() {
15 
16  $body = 'foo';
17  $h = fopen('php://memory', 'r+');
18  fwrite($h, $body);
19  rewind($h);
20 
21  $message = new MessageMock();
22  $message->setBody($h);
23 
24  $this->assertEquals($body, $message->getBodyAsString());
25  rewind($h);
26  $this->assertEquals($body, stream_get_contents($message->getBodyAsStream()));
27  rewind($h);
28  $this->assertEquals($body, stream_get_contents($message->getBody()));
29 
30  }
31 
32  function testStringBody() {
33 
34  $body = 'foo';
35 
36  $message = new MessageMock();
37  $message->setBody($body);
38 
39  $this->assertEquals($body, $message->getBodyAsString());
40  $this->assertEquals($body, stream_get_contents($message->getBodyAsStream()));
41  $this->assertEquals($body, $message->getBody());
42 
43  }
44 
57 
58  $body = fopen('php://memory', 'r+');
59  fwrite($body, 'abcdefg');
60  fseek($body, 2);
61 
62  $message = new MessageMock();
63  $message->setBody($body);
64  $message->setHeader('Content-Length', '4');
65 
66  $this->assertEquals(
67  'cdef',
68  $message->getBodyAsString()
69  );
70 
71  }
72 
78 
79  $body = fopen('php://memory', 'r+');
80  fwrite($body, 'abcdefg');
81  fseek($body, 2);
82 
83  $message = new MessageMock();
84  $message->setBody($body);
85  $message->setHeader('Content-Length', '');
86 
87  $this->assertEquals(
88  'cdefg',
89  $message->getBodyAsString()
90  );
91 
92  }
93 
94 
96 
97  $message = new MessageMock();
98  $body = $message->getBodyAsStream();
99 
100  $this->assertEquals('', stream_get_contents($body));
101 
102  }
103 
105 
106  $message = new MessageMock();
107  $body = $message->getBodyAsString();
108 
109  $this->assertEquals('', $body);
110 
111  }
112 
113  function testHeaders() {
114 
115  $message = new MessageMock();
116  $message->setHeader('X-Foo', 'bar');
117 
118  // Testing caselessness
119  $this->assertEquals('bar', $message->getHeader('X-Foo'));
120  $this->assertEquals('bar', $message->getHeader('x-fOO'));
121 
122  $this->assertTrue(
123  $message->removeHeader('X-FOO')
124  );
125  $this->assertNull($message->getHeader('X-Foo'));
126  $this->assertFalse(
127  $message->removeHeader('X-FOO')
128  );
129 
130  }
131 
132  function testSetHeaders() {
133 
134  $message = new MessageMock();
135 
136  $headers = [
137  'X-Foo' => ['1'],
138  'X-Bar' => ['2'],
139  ];
140 
141  $message->setHeaders($headers);
142  $this->assertEquals($headers, $message->getHeaders());
143 
144  $message->setHeaders([
145  'X-Foo' => ['3', '4'],
146  'X-Bar' => '5',
147  ]);
148 
149  $expected = [
150  'X-Foo' => ['3','4'],
151  'X-Bar' => ['5'],
152  ];
153 
154  $this->assertEquals($expected, $message->getHeaders());
155 
156  }
157 
158  function testAddHeaders() {
159 
160  $message = new MessageMock();
161 
162  $headers = [
163  'X-Foo' => ['1'],
164  'X-Bar' => ['2'],
165  ];
166 
167  $message->addHeaders($headers);
168  $this->assertEquals($headers, $message->getHeaders());
169 
170  $message->addHeaders([
171  'X-Foo' => ['3', '4'],
172  'X-Bar' => '5',
173  ]);
174 
175  $expected = [
176  'X-Foo' => ['1','3','4'],
177  'X-Bar' => ['2','5'],
178  ];
179 
180  $this->assertEquals($expected, $message->getHeaders());
181 
182  }
183 
184  function testSendBody() {
185 
186  $message = new MessageMock();
187 
188  // String
189  $message->setBody('foo');
190 
191  // Stream
192  $h = fopen('php://memory', 'r+');
193  fwrite($h, 'bar');
194  rewind($h);
195  $message->setBody($h);
196 
197  $body = $message->getBody();
198  rewind($body);
199 
200  $this->assertEquals('bar', stream_get_contents($body));
201 
202  }
203 
204  function testMultipleHeaders() {
205 
206  $message = new MessageMock();
207  $message->setHeader('a', '1');
208  $message->addHeader('A', '2');
209 
210  $this->assertEquals(
211  "1,2",
212  $message->getHeader('A')
213  );
214  $this->assertEquals(
215  "1,2",
216  $message->getHeader('a')
217  );
218 
219  $this->assertEquals(
220  ['1', '2'],
221  $message->getHeaderAsArray('a')
222  );
223  $this->assertEquals(
224  ['1', '2'],
225  $message->getHeaderAsArray('A')
226  );
227  $this->assertEquals(
228  [],
229  $message->getHeaderAsArray('B')
230  );
231 
232  }
233 
234  function testHasHeaders() {
235 
236  $message = new MessageMock();
237 
238  $this->assertFalse($message->hasHeader('X-Foo'));
239  $message->setHeader('X-Foo', 'Bar');
240  $this->assertTrue($message->hasHeader('X-Foo'));
241 
242  }
243 
244 }
245 
246 class MessageMock extends Message { }
This is the abstract base class for both the Request and Response objects.
Definition: Message.php:14
$h
testEmptyContentLengthHeader()
Some clients include a content-length header, but the header is empty.
Definition: MessageTest.php:77
catch(Exception $e) $message
testLongStreamToStringBody()
It&#39;s possible that streams contains more data than the Content-Length.
Definition: MessageTest.php:56