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