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