147 lines
4.4 KiB
PHP
147 lines
4.4 KiB
PHP
<?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'));
|
|
}
|
|
|
|
public function testBodyConsistent()
|
|
{
|
|
$r = new Response(200, [], '0');
|
|
$this->assertEquals('0', (string)$r->getBody());
|
|
}
|
|
|
|
}
|