xref: /plugin/davcal/vendor/sabre/http/tests/HTTP/RequestTest.php (revision a1a3b6794e0e143a4a8b51d3185ce2d339be61ab)
1*a1a3b679SAndreas Boehler<?php
2*a1a3b679SAndreas Boehler
3*a1a3b679SAndreas Boehlernamespace Sabre\HTTP;
4*a1a3b679SAndreas Boehler
5*a1a3b679SAndreas Boehlerclass RequestTest extends \PHPUnit_Framework_TestCase {
6*a1a3b679SAndreas Boehler
7*a1a3b679SAndreas Boehler    function testConstruct() {
8*a1a3b679SAndreas Boehler
9*a1a3b679SAndreas Boehler        $request = new Request('GET', '/foo', [
10*a1a3b679SAndreas Boehler            'User-Agent' => 'Evert',
11*a1a3b679SAndreas Boehler        ]);
12*a1a3b679SAndreas Boehler        $this->assertEquals('GET', $request->getMethod());
13*a1a3b679SAndreas Boehler        $this->assertEquals('/foo', $request->getUrl());
14*a1a3b679SAndreas Boehler        $this->assertEquals([
15*a1a3b679SAndreas Boehler            'User-Agent' => ['Evert'],
16*a1a3b679SAndreas Boehler        ], $request->getHeaders());
17*a1a3b679SAndreas Boehler
18*a1a3b679SAndreas Boehler    }
19*a1a3b679SAndreas Boehler
20*a1a3b679SAndreas Boehler    function testGetQueryParameters() {
21*a1a3b679SAndreas Boehler
22*a1a3b679SAndreas Boehler        $request = new Request('GET', '/foo?a=b&c&d=e');
23*a1a3b679SAndreas Boehler        $this->assertEquals([
24*a1a3b679SAndreas Boehler            'a' => 'b',
25*a1a3b679SAndreas Boehler            'c' => null,
26*a1a3b679SAndreas Boehler            'd' => 'e',
27*a1a3b679SAndreas Boehler        ], $request->getQueryParameters());
28*a1a3b679SAndreas Boehler
29*a1a3b679SAndreas Boehler    }
30*a1a3b679SAndreas Boehler
31*a1a3b679SAndreas Boehler    function testGetQueryParametersNoData() {
32*a1a3b679SAndreas Boehler
33*a1a3b679SAndreas Boehler        $request = new Request('GET', '/foo');
34*a1a3b679SAndreas Boehler        $this->assertEquals([], $request->getQueryParameters());
35*a1a3b679SAndreas Boehler
36*a1a3b679SAndreas Boehler    }
37*a1a3b679SAndreas Boehler
38*a1a3b679SAndreas Boehler    /**
39*a1a3b679SAndreas Boehler     * @backupGlobals
40*a1a3b679SAndreas Boehler     */
41*a1a3b679SAndreas Boehler    function testCreateFromPHPRequest() {
42*a1a3b679SAndreas Boehler
43*a1a3b679SAndreas Boehler        $_SERVER['REQUEST_METHOD'] = 'PUT';
44*a1a3b679SAndreas Boehler
45*a1a3b679SAndreas Boehler        $request = Sapi::getRequest();
46*a1a3b679SAndreas Boehler        $this->assertEquals('PUT', $request->getMethod());
47*a1a3b679SAndreas Boehler
48*a1a3b679SAndreas Boehler    }
49*a1a3b679SAndreas Boehler
50*a1a3b679SAndreas Boehler    function testGetAbsoluteUrl() {
51*a1a3b679SAndreas Boehler
52*a1a3b679SAndreas Boehler        $s = [
53*a1a3b679SAndreas Boehler            'HTTP_HOST'   => 'sabredav.org',
54*a1a3b679SAndreas Boehler            'REQUEST_URI' => '/foo'
55*a1a3b679SAndreas Boehler        ];
56*a1a3b679SAndreas Boehler
57*a1a3b679SAndreas Boehler        $r = Sapi::createFromServerArray($s);
58*a1a3b679SAndreas Boehler
59*a1a3b679SAndreas Boehler        $this->assertEquals('http://sabredav.org/foo', $r->getAbsoluteUrl());
60*a1a3b679SAndreas Boehler
61*a1a3b679SAndreas Boehler        $s = [
62*a1a3b679SAndreas Boehler            'HTTP_HOST'   => 'sabredav.org',
63*a1a3b679SAndreas Boehler            'REQUEST_URI' => '/foo',
64*a1a3b679SAndreas Boehler            'HTTPS'       => 'on',
65*a1a3b679SAndreas Boehler        ];
66*a1a3b679SAndreas Boehler
67*a1a3b679SAndreas Boehler        $r = Sapi::createFromServerArray($s);
68*a1a3b679SAndreas Boehler
69*a1a3b679SAndreas Boehler        $this->assertEquals('https://sabredav.org/foo', $r->getAbsoluteUrl());
70*a1a3b679SAndreas Boehler
71*a1a3b679SAndreas Boehler    }
72*a1a3b679SAndreas Boehler
73*a1a3b679SAndreas Boehler    function testGetPostData() {
74*a1a3b679SAndreas Boehler
75*a1a3b679SAndreas Boehler        $post = [
76*a1a3b679SAndreas Boehler            'bla' => 'foo',
77*a1a3b679SAndreas Boehler        ];
78*a1a3b679SAndreas Boehler        $r = new Request();
79*a1a3b679SAndreas Boehler        $r->setPostData($post);
80*a1a3b679SAndreas Boehler        $this->assertEquals($post, $r->getPostData());
81*a1a3b679SAndreas Boehler
82*a1a3b679SAndreas Boehler    }
83*a1a3b679SAndreas Boehler
84*a1a3b679SAndreas Boehler    function testGetPath() {
85*a1a3b679SAndreas Boehler
86*a1a3b679SAndreas Boehler        $request = new Request();
87*a1a3b679SAndreas Boehler        $request->setBaseUrl('/foo');
88*a1a3b679SAndreas Boehler        $request->setUrl('/foo/bar/');
89*a1a3b679SAndreas Boehler
90*a1a3b679SAndreas Boehler        $this->assertEquals('bar', $request->getPath());
91*a1a3b679SAndreas Boehler
92*a1a3b679SAndreas Boehler    }
93*a1a3b679SAndreas Boehler
94*a1a3b679SAndreas Boehler    function testGetPathStrippedQuery() {
95*a1a3b679SAndreas Boehler
96*a1a3b679SAndreas Boehler        $request = new Request();
97*a1a3b679SAndreas Boehler        $request->setBaseUrl('/foo');
98*a1a3b679SAndreas Boehler        $request->setUrl('/foo/bar/?a=b');
99*a1a3b679SAndreas Boehler
100*a1a3b679SAndreas Boehler        $this->assertEquals('bar', $request->getPath());
101*a1a3b679SAndreas Boehler
102*a1a3b679SAndreas Boehler    }
103*a1a3b679SAndreas Boehler
104*a1a3b679SAndreas Boehler    function testGetPathMissingSlash() {
105*a1a3b679SAndreas Boehler
106*a1a3b679SAndreas Boehler        $request = new Request();
107*a1a3b679SAndreas Boehler        $request->setBaseUrl('/foo/');
108*a1a3b679SAndreas Boehler        $request->setUrl('/foo');
109*a1a3b679SAndreas Boehler
110*a1a3b679SAndreas Boehler        $this->assertEquals('', $request->getPath());
111*a1a3b679SAndreas Boehler
112*a1a3b679SAndreas Boehler    }
113*a1a3b679SAndreas Boehler
114*a1a3b679SAndreas Boehler    /**
115*a1a3b679SAndreas Boehler     * @expectedException \LogicException
116*a1a3b679SAndreas Boehler     */
117*a1a3b679SAndreas Boehler    function testGetPathOutsideBaseUrl() {
118*a1a3b679SAndreas Boehler
119*a1a3b679SAndreas Boehler        $request = new Request();
120*a1a3b679SAndreas Boehler        $request->setBaseUrl('/foo/');
121*a1a3b679SAndreas Boehler        $request->setUrl('/bar/');
122*a1a3b679SAndreas Boehler
123*a1a3b679SAndreas Boehler        $request->getPath();
124*a1a3b679SAndreas Boehler
125*a1a3b679SAndreas Boehler    }
126*a1a3b679SAndreas Boehler
127*a1a3b679SAndreas Boehler    function testToString() {
128*a1a3b679SAndreas Boehler
129*a1a3b679SAndreas Boehler        $request = new Request('PUT', '/foo/bar', ['Content-Type' => 'text/xml']);
130*a1a3b679SAndreas Boehler        $request->setBody('foo');
131*a1a3b679SAndreas Boehler
132*a1a3b679SAndreas Boehler        $expected = <<<HI
133*a1a3b679SAndreas BoehlerPUT /foo/bar HTTP/1.1\r
134*a1a3b679SAndreas BoehlerContent-Type: text/xml\r
135*a1a3b679SAndreas Boehler\r
136*a1a3b679SAndreas Boehlerfoo
137*a1a3b679SAndreas BoehlerHI;
138*a1a3b679SAndreas Boehler        $this->assertEquals($expected, (string)$request);
139*a1a3b679SAndreas Boehler
140*a1a3b679SAndreas Boehler    }
141*a1a3b679SAndreas Boehler
142*a1a3b679SAndreas Boehler    function testToStringAuthorization() {
143*a1a3b679SAndreas Boehler
144*a1a3b679SAndreas Boehler        $request = new Request('PUT', '/foo/bar', ['Content-Type' => 'text/xml', 'Authorization' => 'Basic foobar']);
145*a1a3b679SAndreas Boehler        $request->setBody('foo');
146*a1a3b679SAndreas Boehler
147*a1a3b679SAndreas Boehler        $expected = <<<HI
148*a1a3b679SAndreas BoehlerPUT /foo/bar HTTP/1.1\r
149*a1a3b679SAndreas BoehlerContent-Type: text/xml\r
150*a1a3b679SAndreas BoehlerAuthorization: Basic REDACTED\r
151*a1a3b679SAndreas Boehler\r
152*a1a3b679SAndreas Boehlerfoo
153*a1a3b679SAndreas BoehlerHI;
154*a1a3b679SAndreas Boehler        $this->assertEquals($expected, (string)$request);
155*a1a3b679SAndreas Boehler
156*a1a3b679SAndreas Boehler    }
157*a1a3b679SAndreas Boehler
158*a1a3b679SAndreas Boehler    /**
159*a1a3b679SAndreas Boehler     * @expectedException \InvalidArgumentException
160*a1a3b679SAndreas Boehler     */
161*a1a3b679SAndreas Boehler    function testConstructorWithArray() {
162*a1a3b679SAndreas Boehler
163*a1a3b679SAndreas Boehler        $request = new Request([]);
164*a1a3b679SAndreas Boehler
165*a1a3b679SAndreas Boehler    }
166*a1a3b679SAndreas Boehler
167*a1a3b679SAndreas Boehler}
168