From 491ee376517cded3c9c8d2389e3f9f21daa1a407 Mon Sep 17 00:00:00 2001 From: Igor Scheller Date: Fri, 28 Dec 2018 03:28:33 +0100 Subject: Don't save sessions permanently on api and metrics paths closes #530 (Session on API calls) --- tests/Unit/Middleware/RouteDispatcherTest.php | 3 +- .../SessionHandlerServiceProviderTest.php | 44 ++++++++++++++++ tests/Unit/Middleware/SessionHandlerTest.php | 61 ++++++++++++++++++++++ 3 files changed, 107 insertions(+), 1 deletion(-) create mode 100644 tests/Unit/Middleware/SessionHandlerServiceProviderTest.php create mode 100644 tests/Unit/Middleware/SessionHandlerTest.php (limited to 'tests/Unit/Middleware') diff --git a/tests/Unit/Middleware/RouteDispatcherTest.php b/tests/Unit/Middleware/RouteDispatcherTest.php index 611d3b7c..d6ed3408 100644 --- a/tests/Unit/Middleware/RouteDispatcherTest.php +++ b/tests/Unit/Middleware/RouteDispatcherTest.php @@ -32,10 +32,11 @@ class RouteDispatcherTest extends TestCase ->with('HEAD', '/foo!bar') ->willReturn([FastRouteDispatcher::FOUND, $handler, ['foo' => 'bar', 'lorem' => 'ipsum']]); - $request->expects($this->exactly(3)) + $request->expects($this->exactly(4)) ->method('withAttribute') ->withConsecutive( ['route-request-handler', $handler], + ['route-request-path', '/foo!bar'], ['foo', 'bar'], ['lorem', 'ipsum'] ) diff --git a/tests/Unit/Middleware/SessionHandlerServiceProviderTest.php b/tests/Unit/Middleware/SessionHandlerServiceProviderTest.php new file mode 100644 index 00000000..bb4f7e92 --- /dev/null +++ b/tests/Unit/Middleware/SessionHandlerServiceProviderTest.php @@ -0,0 +1,44 @@ +createMock(ContextualBindingBuilder::class); + $app = $this->getApp(['when']); + + $app->expects($this->once()) + ->method('when') + ->with(SessionHandler::class) + ->willReturn($bindingBuilder); + + $bindingBuilder->expects($this->once()) + ->method('needs') + ->with('$paths') + ->willReturn($bindingBuilder); + + $bindingBuilder->expects($this->once()) + ->method('give') + ->willReturnCallback(function (callable $callable) { + $paths = $callable(); + + $this->assertTrue(is_array($paths)); + $this->assertTrue(in_array('/metrics', $paths)); + }); + + $serviceProvider = new SessionHandlerServiceProvider($app); + $serviceProvider->register(); + } +} diff --git a/tests/Unit/Middleware/SessionHandlerTest.php b/tests/Unit/Middleware/SessionHandlerTest.php new file mode 100644 index 00000000..4abd71a6 --- /dev/null +++ b/tests/Unit/Middleware/SessionHandlerTest.php @@ -0,0 +1,61 @@ +createMock(NativeSessionStorage::class); + /** @var ServerRequestInterface|MockObject $request */ + $request = $this->getMockForAbstractClass(ServerRequestInterface::class); + /** @var RequestHandlerInterface|MockObject $handler */ + $handler = $this->getMockForAbstractClass(RequestHandlerInterface::class); + /** @var ResponseInterface|MockObject $response */ + $response = $this->getMockForAbstractClass(ResponseInterface::class); + + $handler->expects($this->exactly(2)) + ->method('handle') + ->with($request) + ->willReturn($response); + + $request->expects($this->exactly(2)) + ->method('getCookieParams') + ->willReturnOnConsecutiveCalls([], ['SESSION' => 'BlaFoo']); + + $request->expects($this->exactly(2)) + ->method('getAttribute') + ->with('route-request-path') + ->willReturn('/foo'); + + $sessionStorage->expects($this->exactly(2)) + ->method('getName') + ->willReturn('SESSION'); + + /** @var SessionHandler|MockObject $middleware */ + $middleware = $this->getMockBuilder(SessionHandler::class) + ->setConstructorArgs([$sessionStorage, ['/foo']]) + ->setMethods(['destroyNative']) + ->getMock(); + + $middleware->expects($this->once()) + ->method('destroyNative') + ->willReturn(true); + + $middleware->process($request, $handler); + $middleware->process($request, $handler); + } +} -- cgit v1.2.3-54-g00ecf