2015-08-27 12:03:05 -07:00
< ? php
namespace GuzzleHttp\Tests\Psr7 ;
use GuzzleHttp\Psr7\Response ;
use GuzzleHttp\Psr7 ;
/**
* @ covers GuzzleHttp\Psr7\MessageTrait
* @ covers GuzzleHttp\Psr7\Response
*/
class ResponseTest extends \PHPUnit_Framework_TestCase
{
public function testAddsDefaultReason ()
{
$r = new Response ( '200' );
$this -> assertSame ( 200 , $r -> getStatusCode ());
$this -> assertEquals ( 'OK' , $r -> getReasonPhrase ());
}
public function testCanGiveCustomReason ()
{
$r = new Response ( 200 , [], null , '1.1' , 'bar' );
$this -> assertEquals ( 'bar' , $r -> getReasonPhrase ());
}
public function testCanGiveCustomProtocolVersion ()
{
$r = new Response ( 200 , [], null , '1000' );
$this -> assertEquals ( '1000' , $r -> getProtocolVersion ());
}
public function testCanCreateNewResponseWithStatusAndNoReason ()
{
$r = new Response ( 200 );
$r2 = $r -> withStatus ( 201 );
$this -> assertEquals ( 200 , $r -> getStatusCode ());
$this -> assertEquals ( 'OK' , $r -> getReasonPhrase ());
$this -> assertEquals ( 201 , $r2 -> getStatusCode ());
$this -> assertEquals ( 'Created' , $r2 -> getReasonPhrase ());
}
public function testCanCreateNewResponseWithStatusAndReason ()
{
$r = new Response ( 200 );
$r2 = $r -> withStatus ( 201 , 'Foo' );
$this -> assertEquals ( 200 , $r -> getStatusCode ());
$this -> assertEquals ( 'OK' , $r -> getReasonPhrase ());
$this -> assertEquals ( 201 , $r2 -> getStatusCode ());
$this -> assertEquals ( 'Foo' , $r2 -> getReasonPhrase ());
}
public function testCreatesResponseWithAddedHeaderArray ()
{
$r = new Response ();
$r2 = $r -> withAddedHeader ( 'foo' , [ 'baz' , 'bar' ]);
$this -> assertFalse ( $r -> hasHeader ( 'foo' ));
$this -> assertEquals ( 'baz, bar' , $r2 -> getHeaderLine ( 'foo' ));
}
public function testReturnsIdentityWhenRemovingMissingHeader ()
{
$r = new Response ();
$this -> assertSame ( $r , $r -> withoutHeader ( 'foo' ));
}
public function testAlwaysReturnsBody ()
{
$r = new Response ();
$this -> assertInstanceOf ( 'Psr\Http\Message\StreamInterface' , $r -> getBody ());
}
public function testCanSetHeaderAsArray ()
{
$r = new Response ( 200 , [
'foo' => [ 'baz ' , ' bar ' ]
]);
$this -> assertEquals ( 'baz, bar' , $r -> getHeaderLine ( 'foo' ));
$this -> assertEquals ([ 'baz' , 'bar' ], $r -> getHeader ( 'foo' ));
}
public function testSameInstanceWhenSameBody ()
{
$r = new Response ( 200 , [], 'foo' );
$b = $r -> getBody ();
$this -> assertSame ( $r , $r -> withBody ( $b ));
}
public function testNewInstanceWhenNewBody ()
{
$r = new Response ( 200 , [], 'foo' );
$b2 = Psr7\stream_for ( 'abc' );
$this -> assertNotSame ( $r , $r -> withBody ( $b2 ));
}
public function testSameInstanceWhenSameProtocol ()
{
$r = new Response ( 200 );
$this -> assertSame ( $r , $r -> withProtocolVersion ( '1.1' ));
}
public function testNewInstanceWhenNewProtocol ()
{
$r = new Response ( 200 );
$this -> assertNotSame ( $r , $r -> withProtocolVersion ( '1.0' ));
}
public function testNewInstanceWhenRemovingHeader ()
{
$r = new Response ( 200 , [ 'Foo' => 'Bar' ]);
$r2 = $r -> withoutHeader ( 'Foo' );
$this -> assertNotSame ( $r , $r2 );
$this -> assertFalse ( $r2 -> hasHeader ( 'foo' ));
}
public function testNewInstanceWhenAddingHeader ()
{
$r = new Response ( 200 , [ 'Foo' => 'Bar' ]);
$r2 = $r -> withAddedHeader ( 'Foo' , 'Baz' );
$this -> assertNotSame ( $r , $r2 );
$this -> assertEquals ( 'Bar, Baz' , $r2 -> getHeaderLine ( 'foo' ));
}
public function testNewInstanceWhenAddingHeaderThatWasNotThereBefore ()
{
$r = new Response ( 200 , [ 'Foo' => 'Bar' ]);
$r2 = $r -> withAddedHeader ( 'Baz' , 'Bam' );
$this -> assertNotSame ( $r , $r2 );
$this -> assertEquals ( 'Bam' , $r2 -> getHeaderLine ( 'Baz' ));
$this -> assertEquals ( 'Bar' , $r2 -> getHeaderLine ( 'Foo' ));
}
public function testRemovesPreviouslyAddedHeaderOfDifferentCase ()
{
$r = new Response ( 200 , [ 'Foo' => 'Bar' ]);
$r2 = $r -> withHeader ( 'foo' , 'Bam' );
$this -> assertNotSame ( $r , $r2 );
$this -> assertEquals ( 'Bam' , $r2 -> getHeaderLine ( 'Foo' ));
}
2015-09-04 13:20:09 -07:00
public function testBodyConsistent ()
{
$r = new Response ( 200 , [], '0' );
$this -> assertEquals ( '0' , ( string ) $r -> getBody ());
}
2015-08-27 12:03:05 -07:00
}