diff options
author | Igor Scheller <igor.scheller@igorshp.de> | 2018-08-16 18:13:53 +0200 |
---|---|---|
committer | Igor Scheller <igor.scheller@igorshp.de> | 2018-08-19 14:04:16 +0200 |
commit | 5427ee385dc2ff117a1130eb606f78e708949c8f (patch) | |
tree | fdea2a1ffcf8b85bf32725f5479c8a781f059387 /tests/Unit/Http | |
parent | 18fd73a899602a473044013854a354254062ebd4 (diff) |
Made Engelsystem\Http\Request PSR-7 RequestInterface compatible
Diffstat (limited to 'tests/Unit/Http')
-rw-r--r-- | tests/Unit/Http/MessageTraitRequestTest.php | 50 | ||||
-rw-r--r-- | tests/Unit/Http/MessageTraitResponseTest.php (renamed from tests/Unit/Http/MessageTraitTest.php) | 26 | ||||
-rw-r--r-- | tests/Unit/Http/RequestTest.php | 90 | ||||
-rw-r--r-- | tests/Unit/Http/Stub/MessageTraitRequestImplementation.php | 12 | ||||
-rw-r--r-- | tests/Unit/Http/Stub/MessageTraitResponseImplementation.php (renamed from tests/Unit/Http/Stub/MessageTraitImplementation.php) | 2 |
5 files changed, 166 insertions, 14 deletions
diff --git a/tests/Unit/Http/MessageTraitRequestTest.php b/tests/Unit/Http/MessageTraitRequestTest.php new file mode 100644 index 00000000..7430b5d7 --- /dev/null +++ b/tests/Unit/Http/MessageTraitRequestTest.php @@ -0,0 +1,50 @@ +<?php + +namespace Engelsystem\Test\Unit\Http; + +use Engelsystem\Test\Unit\Http\Stub\MessageTraitRequestImplementation; +use PHPUnit\Framework\TestCase; +use Zend\Diactoros\Stream; + +class MessageTraitRequestTest extends TestCase +{ + /** + * @covers \Engelsystem\Http\MessageTrait::withProtocolVersion + */ + public function testWithProtocolVersion() + { + $message = new MessageTraitRequestImplementation(); + $newMessage = $message->withProtocolVersion('0.1'); + $this->assertNotEquals($message, $newMessage); + $this->assertEquals('0.1', $newMessage->getProtocolVersion()); + } + + /** + * @covers \Engelsystem\Http\MessageTrait::getHeaders + */ + public function testGetHeaders() + { + $message = new MessageTraitRequestImplementation(); + $newMessage = $message->withHeader('lorem', 'ipsum'); + + $this->assertNotEquals($message, $newMessage); + $this->assertArraySubset(['lorem' => ['ipsum']], $newMessage->getHeaders()); + } + + /** + * @covers \Engelsystem\Http\MessageTrait::withBody + */ + public function testWithBody() + { + /** @var Stream $stream */ + $stream = new Stream('php://memory', 'wb+'); + $stream->write('Test content'); + $stream->rewind(); + + $message = new MessageTraitRequestImplementation(); + $newMessage = $message->withBody($stream); + + $this->assertNotEquals($message, $newMessage); + $this->assertEquals('Test content', $newMessage->getContent()); + } +} diff --git a/tests/Unit/Http/MessageTraitTest.php b/tests/Unit/Http/MessageTraitResponseTest.php index 46076a67..f60360a3 100644 --- a/tests/Unit/Http/MessageTraitTest.php +++ b/tests/Unit/Http/MessageTraitResponseTest.php @@ -2,21 +2,21 @@ namespace Engelsystem\Test\Unit\Http; -use Engelsystem\Test\Unit\Http\Stub\MessageTraitImplementation; +use Engelsystem\Test\Unit\Http\Stub\MessageTraitResponseImplementation; use PHPUnit\Framework\TestCase; use Psr\Http\Message\MessageInterface; use Psr\Http\Message\StreamInterface; use Symfony\Component\HttpFoundation\Response as SymfonyResponse; use Zend\Diactoros\Stream; -class MessageTraitTest extends TestCase +class MessageTraitResponseTest extends TestCase { /** * @covers \Engelsystem\Http\MessageTrait */ public function testCreate() { - $message = new MessageTraitImplementation(); + $message = new MessageTraitResponseImplementation(); $this->assertInstanceOf(MessageInterface::class, $message); $this->assertInstanceOf(SymfonyResponse::class, $message); } @@ -27,7 +27,7 @@ class MessageTraitTest extends TestCase */ public function testGetProtocolVersion() { - $message = new MessageTraitImplementation(); + $message = new MessageTraitResponseImplementation(); $newMessage = $message->withProtocolVersion('0.1'); $this->assertNotEquals($message, $newMessage); $this->assertEquals('0.1', $newMessage->getProtocolVersion()); @@ -38,7 +38,7 @@ class MessageTraitTest extends TestCase */ public function testGetHeaders() { - $message = new MessageTraitImplementation(); + $message = new MessageTraitResponseImplementation(); $newMessage = $message->withHeader('Foo', 'bar'); $this->assertNotEquals($message, $newMessage); @@ -53,7 +53,7 @@ class MessageTraitTest extends TestCase */ public function testHasHeader() { - $message = new MessageTraitImplementation(); + $message = new MessageTraitResponseImplementation(); $this->assertFalse($message->hasHeader('test')); $newMessage = $message->withHeader('test', '12345'); @@ -66,7 +66,7 @@ class MessageTraitTest extends TestCase */ public function testGetHeader() { - $message = new MessageTraitImplementation(); + $message = new MessageTraitResponseImplementation(); $newMessage = $message->withHeader('foo', 'bar'); $this->assertEquals(['bar'], $newMessage->getHeader('Foo')); @@ -78,7 +78,7 @@ class MessageTraitTest extends TestCase */ public function testGetHeaderLine() { - $message = new MessageTraitImplementation(); + $message = new MessageTraitResponseImplementation(); $newMessage = $message->withHeader('foo', ['bar', 'bla']); $this->assertEquals('', $newMessage->getHeaderLine('Lorem-Ipsum')); @@ -90,7 +90,7 @@ class MessageTraitTest extends TestCase */ public function testWithHeader() { - $message = new MessageTraitImplementation(); + $message = new MessageTraitResponseImplementation(); $newMessage = $message->withHeader('foo', 'bar'); $this->assertNotEquals($message, $newMessage); @@ -105,7 +105,7 @@ class MessageTraitTest extends TestCase */ public function testWithAddedHeader() { - $message = new MessageTraitImplementation(); + $message = new MessageTraitResponseImplementation(); $newMessage = $message->withHeader('foo', 'bar'); $this->assertNotEquals($message, $newMessage); @@ -120,7 +120,7 @@ class MessageTraitTest extends TestCase */ public function testWithoutHeader() { - $message = (new MessageTraitImplementation())->withHeader('foo', 'bar'); + $message = (new MessageTraitResponseImplementation())->withHeader('foo', 'bar'); $this->assertTrue($message->hasHeader('foo')); $newMessage = $message->withoutHeader('Foo'); @@ -133,7 +133,7 @@ class MessageTraitTest extends TestCase */ public function testGetBody() { - $message = (new MessageTraitImplementation())->setContent('Foo bar!'); + $message = (new MessageTraitResponseImplementation())->setContent('Foo bar!'); $body = $message->getBody(); $this->assertInstanceOf(StreamInterface::class, $body); @@ -150,7 +150,7 @@ class MessageTraitTest extends TestCase $stream->write('Test content'); $stream->rewind(); - $message = new MessageTraitImplementation(); + $message = new MessageTraitResponseImplementation(); $newMessage = $message->withBody($stream); $this->assertNotEquals($message, $newMessage); diff --git a/tests/Unit/Http/RequestTest.php b/tests/Unit/Http/RequestTest.php index f8444b84..f7d69aff 100644 --- a/tests/Unit/Http/RequestTest.php +++ b/tests/Unit/Http/RequestTest.php @@ -5,6 +5,8 @@ namespace Engelsystem\Test\Unit\Http; use Engelsystem\Http\Request; use PHPUnit\Framework\TestCase; use PHPUnit_Framework_MockObject_MockObject as MockObject; +use Psr\Http\Message\RequestInterface; +use Psr\Http\Message\UriInterface; use Symfony\Component\HttpFoundation\Request as SymfonyRequest; class RequestTest extends TestCase @@ -16,6 +18,7 @@ class RequestTest extends TestCase { $response = new Request(); $this->assertInstanceOf(SymfonyRequest::class, $response); + $this->assertInstanceOf(RequestInterface::class, $response); } /** @@ -106,4 +109,91 @@ class RequestTest extends TestCase $this->assertEquals('http://foo.bar/bla/foo', $request->url()); $this->assertEquals('https://lorem.ipsum/dolor/sit', $request->url()); } + + /** + * @covers \Engelsystem\Http\Request::getRequestTarget + */ + public function testGetRequestTarget() + { + /** @var Request|MockObject $request */ + $request = $this + ->getMockBuilder(Request::class) + ->setMethods(['getQueryString', 'path']) + ->getMock(); + + $request->expects($this->exactly(2)) + ->method('getQueryString') + ->willReturnOnConsecutiveCalls(null, 'foo=bar&lorem=ipsum'); + $request->expects($this->exactly(2)) + ->method('path') + ->willReturn('foo/bar'); + + $this->assertEquals('/foo/bar', $request->getRequestTarget()); + $this->assertEquals('/foo/bar?foo=bar&lorem=ipsum', $request->getRequestTarget()); + } + + /** + * @covers \Engelsystem\Http\Request::withRequestTarget + */ + public function testWithRequestTarget() + { + $request = new Request(); + foreach ( + [ + '*', + '/foo/bar', + 'https://lorem.ipsum/test?lor=em' + ] as $target + ) { + $new = $request->withRequestTarget($target); + $this->assertNotEquals($request, $new); + } + } + + /** + * @covers \Engelsystem\Http\Request::withMethod + */ + public function testWithMethod() + { + $request = new Request(); + + $new = $request->withMethod('PUT'); + + $this->assertNotEquals($request, $new); + $this->assertEquals('PUT', $new->getMethod()); + } + + /** + * @covers \Engelsystem\Http\Request::withUri + */ + public function testWithUri() + { + /** @var UriInterface|MockObject $uri */ + $uri = $this->getMockForAbstractClass(UriInterface::class); + + $uri->expects($this->atLeastOnce()) + ->method('__toString') + ->willReturn('http://foo.bar/bla?foo=bar'); + + $request = Request::create('http://lor.em/'); + + $new = $request->withUri($uri); + $this->assertNotEquals($request, $new); + $this->assertEquals('http://foo.bar/bla?foo=bar', (string)$new->getUri()); + + $new = $request->withUri($uri, true); + $this->assertEquals('http://lor.em/bla?foo=bar', (string)$new->getUri()); + } + + /** + * @covers \Engelsystem\Http\Request::getUri + */ + public function testGetUri() + { + $request = Request::create('http://lor.em/test?bla=foo'); + + $uri = $request->getUri(); + $this->assertInstanceOf(UriInterface::class, $uri); + $this->assertEquals('http://lor.em/test?bla=foo', (string)$uri); + } } diff --git a/tests/Unit/Http/Stub/MessageTraitRequestImplementation.php b/tests/Unit/Http/Stub/MessageTraitRequestImplementation.php new file mode 100644 index 00000000..04d08913 --- /dev/null +++ b/tests/Unit/Http/Stub/MessageTraitRequestImplementation.php @@ -0,0 +1,12 @@ +<?php + +namespace Engelsystem\Test\Unit\Http\Stub; + +use Engelsystem\Http\MessageTrait; +use Psr\Http\Message\MessageInterface; +use Symfony\Component\HttpFoundation\Request; + +class MessageTraitRequestImplementation extends Request implements MessageInterface +{ + use MessageTrait; +} diff --git a/tests/Unit/Http/Stub/MessageTraitImplementation.php b/tests/Unit/Http/Stub/MessageTraitResponseImplementation.php index d78fd0b2..2ec4b943 100644 --- a/tests/Unit/Http/Stub/MessageTraitImplementation.php +++ b/tests/Unit/Http/Stub/MessageTraitResponseImplementation.php @@ -6,7 +6,7 @@ use Engelsystem\Http\MessageTrait; use Psr\Http\Message\MessageInterface; use Symfony\Component\HttpFoundation\Response; -class MessageTraitImplementation extends Response implements MessageInterface +class MessageTraitResponseImplementation extends Response implements MessageInterface { use MessageTrait; } |