3 declare(strict_types
=1);
5 namespace Shaarli\Front\Controller\Admin
;
7 use Shaarli\Front\Exception\WrongTokenException
;
8 use Shaarli\Security\SessionManager
;
10 use Slim\Http\Request
;
13 * Class ShaarliControllerTest
15 * This class is used to test default behavior of ShaarliAdminController abstract class.
16 * It uses a dummy non abstract controller.
18 class ShaarliAdminControllerTest
extends TestCase
20 use FrontAdminControllerMockHelper
;
22 /** @var ShaarliAdminController */
23 protected $controller;
25 public function setUp(): void
27 $this->createContainer();
29 $this->controller
= new class($this->container
) extends ShaarliAdminController
31 public function checkToken(Request
$request): bool
33 return parent
::checkToken($request);
36 public function saveSuccessMessage(string $message): void
38 parent
::saveSuccessMessage($message);
41 public function saveWarningMessage(string $message): void
43 parent
::saveWarningMessage($message);
46 public function saveErrorMessage(string $message): void
48 parent
::saveErrorMessage($message);
54 * Trigger controller's checkToken with a valid token.
56 public function testCheckTokenWithValidToken(): void
58 $request = $this->createMock(Request
::class);
59 $request->method('getParam')->with('token')->willReturn($token = '12345');
61 $this->container
->sessionManager
= $this->createMock(SessionManager
::class);
62 $this->container
->sessionManager
->method('checkToken')->with($token)->willReturn(true);
64 static::assertTrue($this->controller
->checkToken($request));
68 * Trigger controller's checkToken with na valid token should raise an exception.
70 public function testCheckTokenWithNotValidToken(): void
72 $request = $this->createMock(Request
::class);
73 $request->method('getParam')->with('token')->willReturn($token = '12345');
75 $this->container
->sessionManager
= $this->createMock(SessionManager
::class);
76 $this->container
->sessionManager
->method('checkToken')->with($token)->willReturn(false);
78 $this->expectException(WrongTokenException
::class);
80 $this->controller
->checkToken($request);
84 * Test saveSuccessMessage() with a first message.
86 public function testSaveSuccessMessage(): void
88 $this->container
->sessionManager
89 ->expects(static::once())
90 ->method('setSessionParameter')
91 ->with(SessionManager
::KEY_SUCCESS_MESSAGES
, [$message = 'bravo!'])
94 $this->controller
->saveSuccessMessage($message);
98 * Test saveSuccessMessage() with existing messages.
100 public function testSaveSuccessMessageWithExistingMessages(): void
102 $this->container
->sessionManager
103 ->expects(static::once())
104 ->method('getSessionParameter')
105 ->with(SessionManager
::KEY_SUCCESS_MESSAGES
)
106 ->willReturn(['success1', 'success2'])
108 $this->container
->sessionManager
109 ->expects(static::once())
110 ->method('setSessionParameter')
111 ->with(SessionManager
::KEY_SUCCESS_MESSAGES
, ['success1', 'success2', $message = 'bravo!'])
114 $this->controller
->saveSuccessMessage($message);
118 * Test saveWarningMessage() with a first message.
120 public function testSaveWarningMessage(): void
122 $this->container
->sessionManager
123 ->expects(static::once())
124 ->method('setSessionParameter')
125 ->with(SessionManager
::KEY_WARNING_MESSAGES
, [$message = 'warning!'])
128 $this->controller
->saveWarningMessage($message);
132 * Test saveWarningMessage() with existing messages.
134 public function testSaveWarningMessageWithExistingMessages(): void
136 $this->container
->sessionManager
137 ->expects(static::once())
138 ->method('getSessionParameter')
139 ->with(SessionManager
::KEY_WARNING_MESSAGES
)
140 ->willReturn(['warning1', 'warning2'])
142 $this->container
->sessionManager
143 ->expects(static::once())
144 ->method('setSessionParameter')
145 ->with(SessionManager
::KEY_WARNING_MESSAGES
, ['warning1', 'warning2', $message = 'warning!'])
148 $this->controller
->saveWarningMessage($message);
152 * Test saveErrorMessage() with a first message.
154 public function testSaveErrorMessage(): void
156 $this->container
->sessionManager
157 ->expects(static::once())
158 ->method('setSessionParameter')
159 ->with(SessionManager
::KEY_ERROR_MESSAGES
, [$message = 'error!'])
162 $this->controller
->saveErrorMessage($message);
166 * Test saveErrorMessage() with existing messages.
168 public function testSaveErrorMessageWithExistingMessages(): void
170 $this->container
->sessionManager
171 ->expects(static::once())
172 ->method('getSessionParameter')
173 ->with(SessionManager
::KEY_ERROR_MESSAGES
)
174 ->willReturn(['error1', 'error2'])
176 $this->container
->sessionManager
177 ->expects(static::once())
178 ->method('setSessionParameter')
179 ->with(SessionManager
::KEY_ERROR_MESSAGES
, ['error1', 'error2', $message = 'error!'])
182 $this->controller
->saveErrorMessage($message);