Process logout through Slim controller
This commit is contained in:
parent
b0428aa9b0
commit
8e47af2b36
8 changed files with 128 additions and 13 deletions
tests
|
@ -10,6 +10,7 @@ use Shaarli\Config\ConfigManager;
|
|||
use Shaarli\Formatter\FormatterFactory;
|
||||
use Shaarli\History;
|
||||
use Shaarli\Render\PageBuilder;
|
||||
use Shaarli\Render\PageCacheManager;
|
||||
use Shaarli\Security\LoginManager;
|
||||
use Shaarli\Security\SessionManager;
|
||||
|
||||
|
@ -35,7 +36,12 @@ class ContainerBuilderTest extends TestCase
|
|||
$this->loginManager = $this->createMock(LoginManager::class);
|
||||
$this->loginManager->method('isLoggedIn')->willReturn(true);
|
||||
|
||||
$this->containerBuilder = new ContainerBuilder($this->conf, $this->sessionManager, $this->loginManager);
|
||||
$this->containerBuilder = new ContainerBuilder(
|
||||
$this->conf,
|
||||
$this->sessionManager,
|
||||
$this->loginManager,
|
||||
'UT web path'
|
||||
);
|
||||
}
|
||||
|
||||
public function testBuildContainer(): void
|
||||
|
@ -45,9 +51,11 @@ class ContainerBuilderTest extends TestCase
|
|||
static::assertInstanceOf(ConfigManager::class, $container->conf);
|
||||
static::assertInstanceOf(SessionManager::class, $container->sessionManager);
|
||||
static::assertInstanceOf(LoginManager::class, $container->loginManager);
|
||||
static::assertSame('UT web path', $container->webPath);
|
||||
static::assertInstanceOf(History::class, $container->history);
|
||||
static::assertInstanceOf(BookmarkServiceInterface::class, $container->bookmarkService);
|
||||
static::assertInstanceOf(PageBuilder::class, $container->pageBuilder);
|
||||
static::assertInstanceOf(FormatterFactory::class, $container->formatterFactory);
|
||||
static::assertInstanceOf(PageCacheManager::class, $container->pageCacheManager);
|
||||
}
|
||||
}
|
||||
|
|
60
tests/front/controller/LogoutControllerTest.php
Normal file
60
tests/front/controller/LogoutControllerTest.php
Normal file
|
@ -0,0 +1,60 @@
|
|||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Shaarli\Front\Controller;
|
||||
|
||||
/** Override PHP builtin setcookie function in the local namespace to mock it... more or less */
|
||||
if (!function_exists('Shaarli\Front\Controller\setcookie')) {
|
||||
function setcookie(string $name, string $value): void {
|
||||
$_COOKIE[$name] = $value;
|
||||
}
|
||||
}
|
||||
|
||||
use PHPUnit\Framework\TestCase;
|
||||
use Shaarli\Container\ShaarliContainer;
|
||||
use Shaarli\Render\PageCacheManager;
|
||||
use Shaarli\Security\LoginManager;
|
||||
use Shaarli\Security\SessionManager;
|
||||
use Slim\Http\Request;
|
||||
use Slim\Http\Response;
|
||||
|
||||
class LogoutControllerTest extends TestCase
|
||||
{
|
||||
/** @var ShaarliContainer */
|
||||
protected $container;
|
||||
|
||||
/** @var LogoutController */
|
||||
protected $controller;
|
||||
|
||||
public function setUp(): void
|
||||
{
|
||||
$this->container = $this->createMock(ShaarliContainer::class);
|
||||
$this->controller = new LogoutController($this->container);
|
||||
|
||||
setcookie(LoginManager::$STAY_SIGNED_IN_COOKIE, $cookie = 'hi there');
|
||||
}
|
||||
|
||||
public function testValidControllerInvoke(): void
|
||||
{
|
||||
$request = $this->createMock(Request::class);
|
||||
$response = new Response();
|
||||
|
||||
$pageCacheManager = $this->createMock(PageCacheManager::class);
|
||||
$pageCacheManager->expects(static::once())->method('invalidateCaches');
|
||||
$this->container->pageCacheManager = $pageCacheManager;
|
||||
|
||||
$sessionManager = $this->createMock(SessionManager::class);
|
||||
$sessionManager->expects(static::once())->method('logout');
|
||||
$this->container->sessionManager = $sessionManager;
|
||||
|
||||
static::assertSame('hi there', $_COOKIE[LoginManager::$STAY_SIGNED_IN_COOKIE]);
|
||||
|
||||
$result = $this->controller->index($request, $response);
|
||||
|
||||
static::assertInstanceOf(Response::class, $result);
|
||||
static::assertSame(302, $result->getStatusCode());
|
||||
static::assertContains('./', $result->getHeader('Location'));
|
||||
static::assertSame('false', $_COOKIE[LoginManager::$STAY_SIGNED_IN_COOKIE]);
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue