diff options
author | yude <yudesleepy@gmail.com> | 2021-01-04 18:51:10 +0900 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-01-04 18:51:10 +0900 |
commit | e6754f2154a79abd8e5e64bd923f6984aa9ad44b (patch) | |
tree | f074119530bb59ef155938ea367f719f1e4b70f1 /tests/front/controller/visitor/BookmarkListControllerTest.php | |
parent | 5256b4287021342a9f8868967b2a77e481314331 (diff) | |
parent | ed4ee8f0297941ac83300389b7de6a293312d20e (diff) | |
download | Shaarli-e6754f2154a79abd8e5e64bd923f6984aa9ad44b.tar.gz Shaarli-e6754f2154a79abd8e5e64bd923f6984aa9ad44b.tar.zst Shaarli-e6754f2154a79abd8e5e64bd923f6984aa9ad44b.zip |
Merge pull request #2 from shaarli/master
Merge fork source
Diffstat (limited to 'tests/front/controller/visitor/BookmarkListControllerTest.php')
-rw-r--r-- | tests/front/controller/visitor/BookmarkListControllerTest.php | 94 |
1 files changed, 89 insertions, 5 deletions
diff --git a/tests/front/controller/visitor/BookmarkListControllerTest.php b/tests/front/controller/visitor/BookmarkListControllerTest.php index 0c95df97..dec938f2 100644 --- a/tests/front/controller/visitor/BookmarkListControllerTest.php +++ b/tests/front/controller/visitor/BookmarkListControllerTest.php | |||
@@ -173,7 +173,7 @@ class BookmarkListControllerTest extends TestCase | |||
173 | $request = $this->createMock(Request::class); | 173 | $request = $this->createMock(Request::class); |
174 | $request->method('getParam')->willReturnCallback(function (string $key) { | 174 | $request->method('getParam')->willReturnCallback(function (string $key) { |
175 | if ('searchtags' === $key) { | 175 | if ('searchtags' === $key) { |
176 | return 'abc def'; | 176 | return 'abc@def'; |
177 | } | 177 | } |
178 | if ('searchterm' === $key) { | 178 | if ('searchterm' === $key) { |
179 | return 'ghi jkl'; | 179 | return 'ghi jkl'; |
@@ -204,7 +204,7 @@ class BookmarkListControllerTest extends TestCase | |||
204 | ->expects(static::once()) | 204 | ->expects(static::once()) |
205 | ->method('search') | 205 | ->method('search') |
206 | ->with( | 206 | ->with( |
207 | ['searchtags' => 'abc def', 'searchterm' => 'ghi jkl'], | 207 | ['searchtags' => 'abc@def', 'searchterm' => 'ghi jkl'], |
208 | 'private', | 208 | 'private', |
209 | false, | 209 | false, |
210 | true | 210 | true |
@@ -222,7 +222,7 @@ class BookmarkListControllerTest extends TestCase | |||
222 | static::assertSame('linklist', (string) $result->getBody()); | 222 | static::assertSame('linklist', (string) $result->getBody()); |
223 | 223 | ||
224 | static::assertSame('Search: ghi jkl [abc] [def] - Shaarli', $assignedVariables['pagetitle']); | 224 | static::assertSame('Search: ghi jkl [abc] [def] - Shaarli', $assignedVariables['pagetitle']); |
225 | static::assertSame('?page=2&searchterm=ghi+jkl&searchtags=abc+def', $assignedVariables['previous_page_url']); | 225 | static::assertSame('?page=2&searchterm=ghi+jkl&searchtags=abc%40def', $assignedVariables['previous_page_url']); |
226 | } | 226 | } |
227 | 227 | ||
228 | /** | 228 | /** |
@@ -292,6 +292,37 @@ class BookmarkListControllerTest extends TestCase | |||
292 | } | 292 | } |
293 | 293 | ||
294 | /** | 294 | /** |
295 | * Test GET /shaare/{hash}?key={key} - Find a link by hash using a private link. | ||
296 | */ | ||
297 | public function testPermalinkWithPrivateKey(): void | ||
298 | { | ||
299 | $hash = 'abcdef'; | ||
300 | $privateKey = 'this is a private key'; | ||
301 | |||
302 | $assignedVariables = []; | ||
303 | $this->assignTemplateVars($assignedVariables); | ||
304 | |||
305 | $request = $this->createMock(Request::class); | ||
306 | $request->method('getParam')->willReturnCallback(function (string $key, $default = null) use ($privateKey) { | ||
307 | return $key === 'key' ? $privateKey : $default; | ||
308 | }); | ||
309 | $response = new Response(); | ||
310 | |||
311 | $this->container->bookmarkService | ||
312 | ->expects(static::once()) | ||
313 | ->method('findByHash') | ||
314 | ->with($hash, $privateKey) | ||
315 | ->willReturn((new Bookmark())->setId(123)->setTitle('Title 1')->setUrl('http://url1.tld')) | ||
316 | ; | ||
317 | |||
318 | $result = $this->controller->permalink($request, $response, ['hash' => $hash]); | ||
319 | |||
320 | static::assertSame(200, $result->getStatusCode()); | ||
321 | static::assertSame('linklist', (string) $result->getBody()); | ||
322 | static::assertCount(1, $assignedVariables['links']); | ||
323 | } | ||
324 | |||
325 | /** | ||
295 | * Test getting link list with thumbnail updates. | 326 | * Test getting link list with thumbnail updates. |
296 | * -> 2 thumbnails update, only 1 datastore write | 327 | * -> 2 thumbnails update, only 1 datastore write |
297 | */ | 328 | */ |
@@ -307,7 +338,13 @@ class BookmarkListControllerTest extends TestCase | |||
307 | $this->container->conf | 338 | $this->container->conf |
308 | ->method('get') | 339 | ->method('get') |
309 | ->willReturnCallback(function (string $key, $default) { | 340 | ->willReturnCallback(function (string $key, $default) { |
310 | return $key === 'thumbnails.mode' ? Thumbnailer::MODE_ALL : $default; | 341 | if ($key === 'thumbnails.mode') { |
342 | return Thumbnailer::MODE_ALL; | ||
343 | } elseif ($key === 'general.enable_async_metadata') { | ||
344 | return false; | ||
345 | } | ||
346 | |||
347 | return $default; | ||
311 | }) | 348 | }) |
312 | ; | 349 | ; |
313 | 350 | ||
@@ -357,7 +394,13 @@ class BookmarkListControllerTest extends TestCase | |||
357 | $this->container->conf | 394 | $this->container->conf |
358 | ->method('get') | 395 | ->method('get') |
359 | ->willReturnCallback(function (string $key, $default) { | 396 | ->willReturnCallback(function (string $key, $default) { |
360 | return $key === 'thumbnails.mode' ? Thumbnailer::MODE_ALL : $default; | 397 | if ($key === 'thumbnails.mode') { |
398 | return Thumbnailer::MODE_ALL; | ||
399 | } elseif ($key === 'general.enable_async_metadata') { | ||
400 | return false; | ||
401 | } | ||
402 | |||
403 | return $default; | ||
361 | }) | 404 | }) |
362 | ; | 405 | ; |
363 | 406 | ||
@@ -379,6 +422,47 @@ class BookmarkListControllerTest extends TestCase | |||
379 | } | 422 | } |
380 | 423 | ||
381 | /** | 424 | /** |
425 | * Test getting a permalink with thumbnail update with async setting: no update should run. | ||
426 | */ | ||
427 | public function testThumbnailUpdateFromPermalinkAsync(): void | ||
428 | { | ||
429 | $request = $this->createMock(Request::class); | ||
430 | $response = new Response(); | ||
431 | |||
432 | $this->container->loginManager = $this->createMock(LoginManager::class); | ||
433 | $this->container->loginManager->method('isLoggedIn')->willReturn(true); | ||
434 | |||
435 | $this->container->conf = $this->createMock(ConfigManager::class); | ||
436 | $this->container->conf | ||
437 | ->method('get') | ||
438 | ->willReturnCallback(function (string $key, $default) { | ||
439 | if ($key === 'thumbnails.mode') { | ||
440 | return Thumbnailer::MODE_ALL; | ||
441 | } elseif ($key === 'general.enable_async_metadata') { | ||
442 | return true; | ||
443 | } | ||
444 | |||
445 | return $default; | ||
446 | }) | ||
447 | ; | ||
448 | |||
449 | $this->container->thumbnailer = $this->createMock(Thumbnailer::class); | ||
450 | $this->container->thumbnailer->expects(static::never())->method('get'); | ||
451 | |||
452 | $this->container->bookmarkService | ||
453 | ->expects(static::once()) | ||
454 | ->method('findByHash') | ||
455 | ->willReturn((new Bookmark())->setId(2)->setUrl('https://url.tld')->setTitle('Title 1')) | ||
456 | ; | ||
457 | $this->container->bookmarkService->expects(static::never())->method('set'); | ||
458 | $this->container->bookmarkService->expects(static::never())->method('save'); | ||
459 | |||
460 | $result = $this->controller->permalink($request, $response, ['hash' => 'abc']); | ||
461 | |||
462 | static::assertSame(200, $result->getStatusCode()); | ||
463 | } | ||
464 | |||
465 | /** | ||
382 | * Trigger legacy controller in link list controller: permalink | 466 | * Trigger legacy controller in link list controller: permalink |
383 | */ | 467 | */ |
384 | public function testLegacyControllerPermalink(): void | 468 | public function testLegacyControllerPermalink(): void |