xref: /plugin/davcal/vendor/sabre/http/tests/HTTP/MessageTest.php (revision a1a3b6794e0e143a4a8b51d3185ce2d339be61ab)
1*a1a3b679SAndreas Boehler<?php
2*a1a3b679SAndreas Boehler
3*a1a3b679SAndreas Boehlernamespace Sabre\HTTP;
4*a1a3b679SAndreas Boehler
5*a1a3b679SAndreas Boehlerclass MessageTest extends \PHPUnit_Framework_TestCase {
6*a1a3b679SAndreas Boehler
7*a1a3b679SAndreas Boehler    function testConstruct() {
8*a1a3b679SAndreas Boehler
9*a1a3b679SAndreas Boehler        $message = new MessageMock();
10*a1a3b679SAndreas Boehler        $this->assertInstanceOf('Sabre\HTTP\Message', $message);
11*a1a3b679SAndreas Boehler
12*a1a3b679SAndreas Boehler    }
13*a1a3b679SAndreas Boehler
14*a1a3b679SAndreas Boehler    function testStreamBody() {
15*a1a3b679SAndreas Boehler
16*a1a3b679SAndreas Boehler        $body = 'foo';
17*a1a3b679SAndreas Boehler        $h = fopen('php://memory', 'r+');
18*a1a3b679SAndreas Boehler        fwrite($h, $body);
19*a1a3b679SAndreas Boehler        rewind($h);
20*a1a3b679SAndreas Boehler
21*a1a3b679SAndreas Boehler        $message = new MessageMock();
22*a1a3b679SAndreas Boehler        $message->setBody($h);
23*a1a3b679SAndreas Boehler
24*a1a3b679SAndreas Boehler        $this->assertEquals($body, $message->getBodyAsString());
25*a1a3b679SAndreas Boehler        rewind($h);
26*a1a3b679SAndreas Boehler        $this->assertEquals($body, stream_get_contents($message->getBodyAsStream()));
27*a1a3b679SAndreas Boehler        rewind($h);
28*a1a3b679SAndreas Boehler        $this->assertEquals($body, stream_get_contents($message->getBody()));
29*a1a3b679SAndreas Boehler
30*a1a3b679SAndreas Boehler    }
31*a1a3b679SAndreas Boehler
32*a1a3b679SAndreas Boehler    function testStringBody() {
33*a1a3b679SAndreas Boehler
34*a1a3b679SAndreas Boehler        $body = 'foo';
35*a1a3b679SAndreas Boehler
36*a1a3b679SAndreas Boehler        $message = new MessageMock();
37*a1a3b679SAndreas Boehler        $message->setBody($body);
38*a1a3b679SAndreas Boehler
39*a1a3b679SAndreas Boehler        $this->assertEquals($body, $message->getBodyAsString());
40*a1a3b679SAndreas Boehler        $this->assertEquals($body, stream_get_contents($message->getBodyAsStream()));
41*a1a3b679SAndreas Boehler        $this->assertEquals($body, $message->getBody());
42*a1a3b679SAndreas Boehler
43*a1a3b679SAndreas Boehler    }
44*a1a3b679SAndreas Boehler
45*a1a3b679SAndreas Boehler
46*a1a3b679SAndreas Boehler    function testGetEmptyBodyStream() {
47*a1a3b679SAndreas Boehler
48*a1a3b679SAndreas Boehler        $message = new MessageMock();
49*a1a3b679SAndreas Boehler        $body = $message->getBodyAsStream();
50*a1a3b679SAndreas Boehler
51*a1a3b679SAndreas Boehler        $this->assertEquals('', stream_get_contents($body));
52*a1a3b679SAndreas Boehler
53*a1a3b679SAndreas Boehler    }
54*a1a3b679SAndreas Boehler
55*a1a3b679SAndreas Boehler    function testGetEmptyBodyString() {
56*a1a3b679SAndreas Boehler
57*a1a3b679SAndreas Boehler        $message = new MessageMock();
58*a1a3b679SAndreas Boehler        $body = $message->getBodyAsString();
59*a1a3b679SAndreas Boehler
60*a1a3b679SAndreas Boehler        $this->assertEquals('', $body);
61*a1a3b679SAndreas Boehler
62*a1a3b679SAndreas Boehler    }
63*a1a3b679SAndreas Boehler
64*a1a3b679SAndreas Boehler    function testHeaders() {
65*a1a3b679SAndreas Boehler
66*a1a3b679SAndreas Boehler        $message = new MessageMock();
67*a1a3b679SAndreas Boehler        $message->setHeader('X-Foo', 'bar');
68*a1a3b679SAndreas Boehler
69*a1a3b679SAndreas Boehler        // Testing caselessness
70*a1a3b679SAndreas Boehler        $this->assertEquals('bar', $message->getHeader('X-Foo'));
71*a1a3b679SAndreas Boehler        $this->assertEquals('bar', $message->getHeader('x-fOO'));
72*a1a3b679SAndreas Boehler
73*a1a3b679SAndreas Boehler        $this->assertTrue(
74*a1a3b679SAndreas Boehler            $message->removeHeader('X-FOO')
75*a1a3b679SAndreas Boehler        );
76*a1a3b679SAndreas Boehler        $this->assertNull($message->getHeader('X-Foo'));
77*a1a3b679SAndreas Boehler        $this->assertFalse(
78*a1a3b679SAndreas Boehler            $message->removeHeader('X-FOO')
79*a1a3b679SAndreas Boehler        );
80*a1a3b679SAndreas Boehler
81*a1a3b679SAndreas Boehler    }
82*a1a3b679SAndreas Boehler
83*a1a3b679SAndreas Boehler    function testSetHeaders() {
84*a1a3b679SAndreas Boehler
85*a1a3b679SAndreas Boehler        $message = new MessageMock();
86*a1a3b679SAndreas Boehler
87*a1a3b679SAndreas Boehler        $headers = [
88*a1a3b679SAndreas Boehler            'X-Foo' => ['1'],
89*a1a3b679SAndreas Boehler            'X-Bar' => ['2'],
90*a1a3b679SAndreas Boehler        ];
91*a1a3b679SAndreas Boehler
92*a1a3b679SAndreas Boehler        $message->setHeaders($headers);
93*a1a3b679SAndreas Boehler        $this->assertEquals($headers, $message->getHeaders());
94*a1a3b679SAndreas Boehler
95*a1a3b679SAndreas Boehler        $message->setHeaders([
96*a1a3b679SAndreas Boehler            'X-Foo' => ['3', '4'],
97*a1a3b679SAndreas Boehler            'X-Bar' => '5',
98*a1a3b679SAndreas Boehler        ]);
99*a1a3b679SAndreas Boehler
100*a1a3b679SAndreas Boehler        $expected = [
101*a1a3b679SAndreas Boehler            'X-Foo' => ['3','4'],
102*a1a3b679SAndreas Boehler            'X-Bar' => ['5'],
103*a1a3b679SAndreas Boehler        ];
104*a1a3b679SAndreas Boehler
105*a1a3b679SAndreas Boehler        $this->assertEquals($expected, $message->getHeaders());
106*a1a3b679SAndreas Boehler
107*a1a3b679SAndreas Boehler    }
108*a1a3b679SAndreas Boehler
109*a1a3b679SAndreas Boehler    function testAddHeaders() {
110*a1a3b679SAndreas Boehler
111*a1a3b679SAndreas Boehler        $message = new MessageMock();
112*a1a3b679SAndreas Boehler
113*a1a3b679SAndreas Boehler        $headers = [
114*a1a3b679SAndreas Boehler            'X-Foo' => ['1'],
115*a1a3b679SAndreas Boehler            'X-Bar' => ['2'],
116*a1a3b679SAndreas Boehler        ];
117*a1a3b679SAndreas Boehler
118*a1a3b679SAndreas Boehler        $message->addHeaders($headers);
119*a1a3b679SAndreas Boehler        $this->assertEquals($headers, $message->getHeaders());
120*a1a3b679SAndreas Boehler
121*a1a3b679SAndreas Boehler        $message->addHeaders([
122*a1a3b679SAndreas Boehler            'X-Foo' => ['3', '4'],
123*a1a3b679SAndreas Boehler            'X-Bar' => '5',
124*a1a3b679SAndreas Boehler        ]);
125*a1a3b679SAndreas Boehler
126*a1a3b679SAndreas Boehler        $expected = [
127*a1a3b679SAndreas Boehler            'X-Foo' => ['1','3','4'],
128*a1a3b679SAndreas Boehler            'X-Bar' => ['2','5'],
129*a1a3b679SAndreas Boehler        ];
130*a1a3b679SAndreas Boehler
131*a1a3b679SAndreas Boehler        $this->assertEquals($expected, $message->getHeaders());
132*a1a3b679SAndreas Boehler
133*a1a3b679SAndreas Boehler    }
134*a1a3b679SAndreas Boehler
135*a1a3b679SAndreas Boehler    function testSendBody() {
136*a1a3b679SAndreas Boehler
137*a1a3b679SAndreas Boehler        $message = new MessageMock();
138*a1a3b679SAndreas Boehler
139*a1a3b679SAndreas Boehler        // String
140*a1a3b679SAndreas Boehler        $message->setBody('foo');
141*a1a3b679SAndreas Boehler
142*a1a3b679SAndreas Boehler        // Stream
143*a1a3b679SAndreas Boehler        $h = fopen('php://memory', 'r+');
144*a1a3b679SAndreas Boehler        fwrite($h, 'bar');
145*a1a3b679SAndreas Boehler        rewind($h);
146*a1a3b679SAndreas Boehler        $message->setBody($h);
147*a1a3b679SAndreas Boehler
148*a1a3b679SAndreas Boehler        $body = $message->getBody();
149*a1a3b679SAndreas Boehler        rewind($body);
150*a1a3b679SAndreas Boehler
151*a1a3b679SAndreas Boehler        $this->assertEquals('bar', stream_get_contents($body));
152*a1a3b679SAndreas Boehler
153*a1a3b679SAndreas Boehler    }
154*a1a3b679SAndreas Boehler
155*a1a3b679SAndreas Boehler    function testMultipleHeaders() {
156*a1a3b679SAndreas Boehler
157*a1a3b679SAndreas Boehler        $message = new MessageMock();
158*a1a3b679SAndreas Boehler        $message->setHeader('a', '1');
159*a1a3b679SAndreas Boehler        $message->addHeader('A', '2');
160*a1a3b679SAndreas Boehler
161*a1a3b679SAndreas Boehler        $this->assertEquals(
162*a1a3b679SAndreas Boehler            "1,2",
163*a1a3b679SAndreas Boehler            $message->getHeader('A')
164*a1a3b679SAndreas Boehler        );
165*a1a3b679SAndreas Boehler        $this->assertEquals(
166*a1a3b679SAndreas Boehler            "1,2",
167*a1a3b679SAndreas Boehler            $message->getHeader('a')
168*a1a3b679SAndreas Boehler        );
169*a1a3b679SAndreas Boehler
170*a1a3b679SAndreas Boehler        $this->assertEquals(
171*a1a3b679SAndreas Boehler            ['1', '2'],
172*a1a3b679SAndreas Boehler            $message->getHeaderAsArray('a')
173*a1a3b679SAndreas Boehler        );
174*a1a3b679SAndreas Boehler        $this->assertEquals(
175*a1a3b679SAndreas Boehler            ['1', '2'],
176*a1a3b679SAndreas Boehler            $message->getHeaderAsArray('A')
177*a1a3b679SAndreas Boehler        );
178*a1a3b679SAndreas Boehler        $this->assertEquals(
179*a1a3b679SAndreas Boehler            [],
180*a1a3b679SAndreas Boehler            $message->getHeaderAsArray('B')
181*a1a3b679SAndreas Boehler        );
182*a1a3b679SAndreas Boehler
183*a1a3b679SAndreas Boehler    }
184*a1a3b679SAndreas Boehler
185*a1a3b679SAndreas Boehler    function testHasHeaders() {
186*a1a3b679SAndreas Boehler
187*a1a3b679SAndreas Boehler        $message = new MessageMock();
188*a1a3b679SAndreas Boehler
189*a1a3b679SAndreas Boehler        $this->assertFalse($message->hasHeader('X-Foo'));
190*a1a3b679SAndreas Boehler        $message->setHeader('X-Foo', 'Bar');
191*a1a3b679SAndreas Boehler        $this->assertTrue($message->hasHeader('X-Foo'));
192*a1a3b679SAndreas Boehler
193*a1a3b679SAndreas Boehler    }
194*a1a3b679SAndreas Boehler
195*a1a3b679SAndreas Boehler}
196*a1a3b679SAndreas Boehler
197*a1a3b679SAndreas Boehlerclass MessageMock extends Message { }
198