3 declare(strict_types
=1);
5 namespace Shaarli\Front\Controller\Admin
;
7 use PHPUnit\Framework\TestCase
;
8 use Shaarli\Security\CookieManager
;
9 use Shaarli\Security\LoginManager
;
10 use Shaarli\Security\SessionManager
;
11 use Slim\Http\Request
;
12 use Slim\Http\Response
;
14 class LogoutControllerTest
extends TestCase
16 use FrontAdminControllerMockHelper
;
18 /** @var LogoutController */
19 protected $controller;
21 public function setUp(): void
23 $this->createContainer();
25 $this->controller
= new LogoutController($this->container
);
28 public function testValidControllerInvoke(): void
30 $request = $this->createMock(Request
::class);
31 $response = new Response();
33 $this->container
->pageCacheManager
->expects(static::once())->method('invalidateCaches');
35 $this->container
->sessionManager
= $this->createMock(SessionManager
::class);
36 $this->container
->sessionManager
->expects(static::once())->method('logout');
38 $this->container
->cookieManager
= $this->createMock(CookieManager
::class);
39 $this->container
->cookieManager
40 ->expects(static::once())
41 ->method('setCookieParameter')
42 ->with(CookieManager
::STAY_SIGNED_IN
, 'false', 0, '/subfolder/')
45 $result = $this->controller
->index($request, $response);
47 static::assertInstanceOf(Response
::class, $result);
48 static::assertSame(302, $result->getStatusCode());
49 static::assertSame(['/subfolder/'], $result->getHeader('location'));