diff options
author | VirtualTam <virtualtam@flibidi.net> | 2017-08-23 01:08:41 +0200 |
---|---|---|
committer | VirtualTam <virtualtam@flibidi.net> | 2017-08-23 01:08:41 +0200 |
commit | 9d7a02afcee3c740712a7c95182d332db0504b7e (patch) | |
tree | 3266e3d3bfec6a3ac075084cbec07ba4090c4cd2 /tests | |
parent | c318096c7a6fb3f6b00bd8c694ab7acb8fbb7cd0 (diff) | |
parent | 7c2460c856c1d561b8347316f3045208f9f3d24e (diff) | |
download | Shaarli-9d7a02afcee3c740712a7c95182d332db0504b7e.tar.gz Shaarli-9d7a02afcee3c740712a7c95182d332db0504b7e.tar.zst Shaarli-9d7a02afcee3c740712a7c95182d332db0504b7e.zip |
Merge branch 'master' into v0.9
Diffstat (limited to 'tests')
-rw-r--r-- | tests/HttpUtils/ServerUrlTest.php | 28 | ||||
-rw-r--r-- | tests/LinkDBTest.php | 88 | ||||
-rw-r--r-- | tests/LinkFilterTest.php | 18 | ||||
-rw-r--r-- | tests/Updater/UpdaterTest.php | 40 | ||||
-rw-r--r-- | tests/Url/WhitelistProtocolsTest.php | 63 | ||||
-rw-r--r-- | tests/UtilsTest.php | 112 | ||||
-rw-r--r-- | tests/api/controllers/GetLinksTest.php | 4 | ||||
-rw-r--r-- | tests/api/controllers/InfoTest.php | 4 | ||||
-rw-r--r-- | tests/plugins/PluginMarkdownTest.php | 11 | ||||
-rw-r--r-- | tests/plugins/resources/markdown.html | 11 | ||||
-rw-r--r-- | tests/plugins/resources/markdown.md | 12 | ||||
-rw-r--r-- | tests/utils/ReferenceLinkDB.php | 26 |
12 files changed, 361 insertions, 56 deletions
diff --git a/tests/HttpUtils/ServerUrlTest.php b/tests/HttpUtils/ServerUrlTest.php index 7fdad659..dac02b3e 100644 --- a/tests/HttpUtils/ServerUrlTest.php +++ b/tests/HttpUtils/ServerUrlTest.php | |||
@@ -39,6 +39,34 @@ class ServerUrlTest extends PHPUnit_Framework_TestCase | |||
39 | } | 39 | } |
40 | 40 | ||
41 | /** | 41 | /** |
42 | * Detect a Proxy that sets Forwarded-Host | ||
43 | */ | ||
44 | public function testHttpsProxyForwardedHost() | ||
45 | { | ||
46 | $this->assertEquals( | ||
47 | 'https://host.tld:8080', | ||
48 | server_url( | ||
49 | array( | ||
50 | 'HTTP_X_FORWARDED_PROTO' => 'https', | ||
51 | 'HTTP_X_FORWARDED_PORT' => '8080', | ||
52 | 'HTTP_X_FORWARDED_HOST' => 'host.tld' | ||
53 | ) | ||
54 | ) | ||
55 | ); | ||
56 | |||
57 | $this->assertEquals( | ||
58 | 'https://host.tld:4974', | ||
59 | server_url( | ||
60 | array( | ||
61 | 'HTTP_X_FORWARDED_PROTO' => 'https, https', | ||
62 | 'HTTP_X_FORWARDED_PORT' => '4974, 80', | ||
63 | 'HTTP_X_FORWARDED_HOST' => 'host.tld, example.com' | ||
64 | ) | ||
65 | ) | ||
66 | ); | ||
67 | } | ||
68 | |||
69 | /** | ||
42 | * Detect a Proxy with SSL enabled | 70 | * Detect a Proxy with SSL enabled |
43 | */ | 71 | */ |
44 | public function testHttpsProxyForward() | 72 | public function testHttpsProxyForward() |
diff --git a/tests/LinkDBTest.php b/tests/LinkDBTest.php index 7bf98f92..5b2f3667 100644 --- a/tests/LinkDBTest.php +++ b/tests/LinkDBTest.php | |||
@@ -297,7 +297,7 @@ class LinkDBTest extends PHPUnit_Framework_TestCase | |||
297 | 'sTuff' => 2, | 297 | 'sTuff' => 2, |
298 | 'ut' => 1, | 298 | 'ut' => 1, |
299 | ), | 299 | ), |
300 | self::$publicLinkDB->allTags() | 300 | self::$publicLinkDB->linksCountPerTag() |
301 | ); | 301 | ); |
302 | 302 | ||
303 | $this->assertEquals( | 303 | $this->assertEquals( |
@@ -325,7 +325,34 @@ class LinkDBTest extends PHPUnit_Framework_TestCase | |||
325 | 'tag4' => 1, | 325 | 'tag4' => 1, |
326 | 'ut' => 1, | 326 | 'ut' => 1, |
327 | ), | 327 | ), |
328 | self::$privateLinkDB->allTags() | 328 | self::$privateLinkDB->linksCountPerTag() |
329 | ); | ||
330 | $this->assertEquals( | ||
331 | array( | ||
332 | 'web' => 4, | ||
333 | 'cartoon' => 2, | ||
334 | 'gnu' => 1, | ||
335 | 'dev' => 1, | ||
336 | 'samba' => 1, | ||
337 | 'media' => 1, | ||
338 | 'html' => 1, | ||
339 | 'w3c' => 1, | ||
340 | 'css' => 1, | ||
341 | 'Mercurial' => 1, | ||
342 | '.hidden' => 1, | ||
343 | 'hashtag' => 1, | ||
344 | ), | ||
345 | self::$privateLinkDB->linksCountPerTag(['web']) | ||
346 | ); | ||
347 | $this->assertEquals( | ||
348 | array( | ||
349 | 'web' => 1, | ||
350 | 'html' => 1, | ||
351 | 'w3c' => 1, | ||
352 | 'css' => 1, | ||
353 | 'Mercurial' => 1, | ||
354 | ), | ||
355 | self::$privateLinkDB->linksCountPerTag(['web'], 'private') | ||
329 | ); | 356 | ); |
330 | } | 357 | } |
331 | 358 | ||
@@ -448,7 +475,7 @@ class LinkDBTest extends PHPUnit_Framework_TestCase | |||
448 | public function testReorderLinksDesc() | 475 | public function testReorderLinksDesc() |
449 | { | 476 | { |
450 | self::$privateLinkDB->reorder('ASC'); | 477 | self::$privateLinkDB->reorder('ASC'); |
451 | $linkIds = array(42, 4, 1, 0, 7, 6, 8, 41); | 478 | $linkIds = array(42, 4, 9, 1, 0, 7, 6, 8, 41); |
452 | $cpt = 0; | 479 | $cpt = 0; |
453 | foreach (self::$privateLinkDB as $key => $value) { | 480 | foreach (self::$privateLinkDB as $key => $value) { |
454 | $this->assertEquals($linkIds[$cpt++], $key); | 481 | $this->assertEquals($linkIds[$cpt++], $key); |
@@ -460,4 +487,59 @@ class LinkDBTest extends PHPUnit_Framework_TestCase | |||
460 | $this->assertEquals($linkIds[$cpt++], $key); | 487 | $this->assertEquals($linkIds[$cpt++], $key); |
461 | } | 488 | } |
462 | } | 489 | } |
490 | |||
491 | /** | ||
492 | * Test rename tag with a valid value present in multiple links | ||
493 | */ | ||
494 | public function testRenameTagMultiple() | ||
495 | { | ||
496 | self::$refDB->write(self::$testDatastore); | ||
497 | $linkDB = new LinkDB(self::$testDatastore, true, false); | ||
498 | |||
499 | $res = $linkDB->renameTag('cartoon', 'Taz'); | ||
500 | $this->assertEquals(3, count($res)); | ||
501 | $this->assertContains(' Taz ', $linkDB[4]['tags']); | ||
502 | $this->assertContains(' Taz ', $linkDB[1]['tags']); | ||
503 | $this->assertContains(' Taz ', $linkDB[0]['tags']); | ||
504 | } | ||
505 | |||
506 | /** | ||
507 | * Test rename tag with a valid value | ||
508 | */ | ||
509 | public function testRenameTagCaseSensitive() | ||
510 | { | ||
511 | self::$refDB->write(self::$testDatastore); | ||
512 | $linkDB = new LinkDB(self::$testDatastore, true, false, ''); | ||
513 | |||
514 | $res = $linkDB->renameTag('sTuff', 'Taz'); | ||
515 | $this->assertEquals(1, count($res)); | ||
516 | $this->assertEquals('Taz', $linkDB[41]['tags']); | ||
517 | } | ||
518 | |||
519 | /** | ||
520 | * Test rename tag with invalid values | ||
521 | */ | ||
522 | public function testRenameTagInvalid() | ||
523 | { | ||
524 | $linkDB = new LinkDB(self::$testDatastore, false, false); | ||
525 | |||
526 | $this->assertFalse($linkDB->renameTag('', 'test')); | ||
527 | $this->assertFalse($linkDB->renameTag('', '')); | ||
528 | // tag non existent | ||
529 | $this->assertEquals([], $linkDB->renameTag('test', '')); | ||
530 | $this->assertEquals([], $linkDB->renameTag('test', 'retest')); | ||
531 | } | ||
532 | |||
533 | /** | ||
534 | * Test delete tag with a valid value | ||
535 | */ | ||
536 | public function testDeleteTag() | ||
537 | { | ||
538 | self::$refDB->write(self::$testDatastore); | ||
539 | $linkDB = new LinkDB(self::$testDatastore, true, false); | ||
540 | |||
541 | $res = $linkDB->renameTag('cartoon', null); | ||
542 | $this->assertEquals(3, count($res)); | ||
543 | $this->assertNotContains('cartoon', $linkDB[4]['tags']); | ||
544 | } | ||
463 | } | 545 | } |
diff --git a/tests/LinkFilterTest.php b/tests/LinkFilterTest.php index 37d5ca30..d796d3a3 100644 --- a/tests/LinkFilterTest.php +++ b/tests/LinkFilterTest.php | |||
@@ -64,6 +64,11 @@ class LinkFilterTest extends PHPUnit_Framework_TestCase | |||
64 | ); | 64 | ); |
65 | 65 | ||
66 | $this->assertEquals( | 66 | $this->assertEquals( |
67 | self::$refDB->countUntaggedLinks(), | ||
68 | count(self::$linkFilter->filter(LinkFilter::$FILTER_TAG, /*$request=*/'', /*$casesensitive=*/false, /*$visibility=*/'all', /*$untaggedonly=*/true)) | ||
69 | ); | ||
70 | |||
71 | $this->assertEquals( | ||
67 | ReferenceLinkDB::$NB_LINKS_TOTAL, | 72 | ReferenceLinkDB::$NB_LINKS_TOTAL, |
68 | count(self::$linkFilter->filter(LinkFilter::$FILTER_TEXT, '')) | 73 | count(self::$linkFilter->filter(LinkFilter::$FILTER_TEXT, '')) |
69 | ); | 74 | ); |
@@ -146,7 +151,7 @@ class LinkFilterTest extends PHPUnit_Framework_TestCase | |||
146 | public function testFilterDay() | 151 | public function testFilterDay() |
147 | { | 152 | { |
148 | $this->assertEquals( | 153 | $this->assertEquals( |
149 | 3, | 154 | 4, |
150 | count(self::$linkFilter->filter(LinkFilter::$FILTER_DAY, '20121206')) | 155 | count(self::$linkFilter->filter(LinkFilter::$FILTER_DAY, '20121206')) |
151 | ); | 156 | ); |
152 | } | 157 | } |
@@ -339,7 +344,7 @@ class LinkFilterTest extends PHPUnit_Framework_TestCase | |||
339 | ); | 344 | ); |
340 | 345 | ||
341 | $this->assertEquals( | 346 | $this->assertEquals( |
342 | 7, | 347 | ReferenceLinkDB::$NB_LINKS_TOTAL - 1, |
343 | count(self::$linkFilter->filter(LinkFilter::$FILTER_TEXT, '-revolution')) | 348 | count(self::$linkFilter->filter(LinkFilter::$FILTER_TEXT, '-revolution')) |
344 | ); | 349 | ); |
345 | } | 350 | } |
@@ -399,7 +404,7 @@ class LinkFilterTest extends PHPUnit_Framework_TestCase | |||
399 | ); | 404 | ); |
400 | 405 | ||
401 | $this->assertEquals( | 406 | $this->assertEquals( |
402 | 7, | 407 | ReferenceLinkDB::$NB_LINKS_TOTAL - 1, |
403 | count(self::$linkFilter->filter(LinkFilter::$FILTER_TAG, '-free')) | 408 | count(self::$linkFilter->filter(LinkFilter::$FILTER_TAG, '-free')) |
404 | ); | 409 | ); |
405 | } | 410 | } |
@@ -429,6 +434,13 @@ class LinkFilterTest extends PHPUnit_Framework_TestCase | |||
429 | 1, | 434 | 1, |
430 | count(self::$linkFilter->filter( | 435 | count(self::$linkFilter->filter( |
431 | LinkFilter::$FILTER_TAG | LinkFilter::$FILTER_TEXT, | 436 | LinkFilter::$FILTER_TAG | LinkFilter::$FILTER_TEXT, |
437 | array(false, 'PSR-2') | ||
438 | )) | ||
439 | ); | ||
440 | $this->assertEquals( | ||
441 | 1, | ||
442 | count(self::$linkFilter->filter( | ||
443 | LinkFilter::$FILTER_TAG | LinkFilter::$FILTER_TEXT, | ||
432 | array($tags, '') | 444 | array($tags, '') |
433 | )) | 445 | )) |
434 | ); | 446 | ); |
diff --git a/tests/Updater/UpdaterTest.php b/tests/Updater/UpdaterTest.php index 11b6444a..fed175df 100644 --- a/tests/Updater/UpdaterTest.php +++ b/tests/Updater/UpdaterTest.php | |||
@@ -470,46 +470,6 @@ $GLOBALS[\'privateLinkByDefault\'] = true;'; | |||
470 | } | 470 | } |
471 | 471 | ||
472 | /** | 472 | /** |
473 | * Test updateMethodDefaultThemeVintage with the default theme enabled. | ||
474 | */ | ||
475 | public function testSetDefaultThemeToVintage() | ||
476 | { | ||
477 | $sandboxConf = 'sandbox/config'; | ||
478 | copy(self::$configFile . '.json.php', $sandboxConf . '.json.php'); | ||
479 | $this->conf = new ConfigManager($sandboxConf); | ||
480 | |||
481 | $this->conf->set('resource.theme', 'default'); | ||
482 | $updater = new Updater([], [], $this->conf, true); | ||
483 | $this->assertTrue($updater->updateMethodDefaultThemeVintage()); | ||
484 | $this->assertEquals('vintage', $this->conf->get('resource.theme')); | ||
485 | |||
486 | // reload from file | ||
487 | $this->conf = new ConfigManager($sandboxConf); | ||
488 | $this->assertEquals('vintage', $this->conf->get('resource.theme')); | ||
489 | } | ||
490 | |||
491 | /** | ||
492 | * Test updateMethodDefaultThemeVintage with custom theme enabled => nothing to do. | ||
493 | */ | ||
494 | public function testSetDefaultThemeNothingToDo() | ||
495 | { | ||
496 | $sandboxConf = 'sandbox/config'; | ||
497 | copy(self::$configFile . '.json.php', $sandboxConf . '.json.php'); | ||
498 | $this->conf = new ConfigManager($sandboxConf); | ||
499 | |||
500 | $theme = 'myawesometheme'; | ||
501 | $this->conf->set('resource.theme', $theme); | ||
502 | $this->conf->write(true); | ||
503 | $updater = new Updater([], [], $this->conf, true); | ||
504 | $this->assertTrue($updater->updateMethodDefaultThemeVintage()); | ||
505 | $this->assertEquals($theme, $this->conf->get('resource.theme')); | ||
506 | |||
507 | // reload from file | ||
508 | $this->conf = new ConfigManager($sandboxConf); | ||
509 | $this->assertEquals($theme, $this->conf->get('resource.theme')); | ||
510 | } | ||
511 | |||
512 | /** | ||
513 | * Test updateMethodEscapeMarkdown with markdown plugin enabled | 473 | * Test updateMethodEscapeMarkdown with markdown plugin enabled |
514 | * => setting markdown_escape set to false. | 474 | * => setting markdown_escape set to false. |
515 | */ | 475 | */ |
diff --git a/tests/Url/WhitelistProtocolsTest.php b/tests/Url/WhitelistProtocolsTest.php new file mode 100644 index 00000000..a3156804 --- /dev/null +++ b/tests/Url/WhitelistProtocolsTest.php | |||
@@ -0,0 +1,63 @@ | |||
1 | <?php | ||
2 | |||
3 | require_once 'application/Url.php'; | ||
4 | |||
5 | use Shaarli\Config\ConfigManager; | ||
6 | |||
7 | /** | ||
8 | * Class WhitelistProtocolsTest | ||
9 | * | ||
10 | * Test whitelist_protocols() function of Url. | ||
11 | */ | ||
12 | class WhitelistProtocolsTest extends PHPUnit_Framework_TestCase | ||
13 | { | ||
14 | /** | ||
15 | * Test whitelist_protocols() on a note (relative URL). | ||
16 | */ | ||
17 | public function testWhitelistProtocolsRelative() | ||
18 | { | ||
19 | $whitelist = ['ftp', 'magnet']; | ||
20 | $url = '?12443564'; | ||
21 | $this->assertEquals($url, whitelist_protocols($url, $whitelist)); | ||
22 | $url = '/path.jpg'; | ||
23 | $this->assertEquals($url, whitelist_protocols($url, $whitelist)); | ||
24 | } | ||
25 | |||
26 | /** | ||
27 | * Test whitelist_protocols() on a note (relative URL). | ||
28 | */ | ||
29 | public function testWhitelistProtocolMissing() | ||
30 | { | ||
31 | $whitelist = ['ftp', 'magnet']; | ||
32 | $url = 'test.tld/path/?query=value#hash'; | ||
33 | $this->assertEquals('http://'. $url, whitelist_protocols($url, $whitelist)); | ||
34 | } | ||
35 | |||
36 | /** | ||
37 | * Test whitelist_protocols() with allowed protocols. | ||
38 | */ | ||
39 | public function testWhitelistAllowedProtocol() | ||
40 | { | ||
41 | $whitelist = ['ftp', 'magnet']; | ||
42 | $url = 'http://test.tld/path/?query=value#hash'; | ||
43 | $this->assertEquals($url, whitelist_protocols($url, $whitelist)); | ||
44 | $url = 'https://test.tld/path/?query=value#hash'; | ||
45 | $this->assertEquals($url, whitelist_protocols($url, $whitelist)); | ||
46 | $url = 'ftp://test.tld/path/?query=value#hash'; | ||
47 | $this->assertEquals($url, whitelist_protocols($url, $whitelist)); | ||
48 | $url = 'magnet:test.tld/path/?query=value#hash'; | ||
49 | $this->assertEquals($url, whitelist_protocols($url, $whitelist)); | ||
50 | } | ||
51 | |||
52 | /** | ||
53 | * Test whitelist_protocols() with allowed protocols. | ||
54 | */ | ||
55 | public function testWhitelistDisallowedProtocol() | ||
56 | { | ||
57 | $whitelist = ['ftp', 'magnet']; | ||
58 | $url = 'javascript:alert("xss");'; | ||
59 | $this->assertEquals('http://alert("xss");', whitelist_protocols($url, $whitelist)); | ||
60 | $url = 'other://test.tld/path/?query=value#hash'; | ||
61 | $this->assertEquals('http://test.tld/path/?query=value#hash', whitelist_protocols($url, $whitelist)); | ||
62 | } | ||
63 | } | ||
diff --git a/tests/UtilsTest.php b/tests/UtilsTest.php index d6a0aad5..3d1aa653 100644 --- a/tests/UtilsTest.php +++ b/tests/UtilsTest.php | |||
@@ -417,4 +417,116 @@ class UtilsTest extends PHPUnit_Framework_TestCase | |||
417 | $this->assertEquals('1048576', get_max_upload_size('1m', '2m', false)); | 417 | $this->assertEquals('1048576', get_max_upload_size('1m', '2m', false)); |
418 | $this->assertEquals('100', get_max_upload_size(100, 100, false)); | 418 | $this->assertEquals('100', get_max_upload_size(100, 100, false)); |
419 | } | 419 | } |
420 | |||
421 | /** | ||
422 | * Test alphabetical_sort by value, not reversed, with php-intl. | ||
423 | */ | ||
424 | public function testAlphabeticalSortByValue() | ||
425 | { | ||
426 | $arr = [ | ||
427 | 'zZz', | ||
428 | 'éee', | ||
429 | 'éae', | ||
430 | 'eee', | ||
431 | 'A', | ||
432 | 'a', | ||
433 | 'zzz', | ||
434 | ]; | ||
435 | $expected = [ | ||
436 | 'a', | ||
437 | 'A', | ||
438 | 'éae', | ||
439 | 'eee', | ||
440 | 'éee', | ||
441 | 'zzz', | ||
442 | 'zZz', | ||
443 | ]; | ||
444 | |||
445 | alphabetical_sort($arr); | ||
446 | $this->assertEquals($expected, $arr); | ||
447 | } | ||
448 | |||
449 | /** | ||
450 | * Test alphabetical_sort by value, reversed, with php-intl. | ||
451 | */ | ||
452 | public function testAlphabeticalSortByValueReversed() | ||
453 | { | ||
454 | $arr = [ | ||
455 | 'zZz', | ||
456 | 'éee', | ||
457 | 'éae', | ||
458 | 'eee', | ||
459 | 'A', | ||
460 | 'a', | ||
461 | 'zzz', | ||
462 | ]; | ||
463 | $expected = [ | ||
464 | 'zZz', | ||
465 | 'zzz', | ||
466 | 'éee', | ||
467 | 'eee', | ||
468 | 'éae', | ||
469 | 'A', | ||
470 | 'a', | ||
471 | ]; | ||
472 | |||
473 | alphabetical_sort($arr, true); | ||
474 | $this->assertEquals($expected, $arr); | ||
475 | } | ||
476 | |||
477 | /** | ||
478 | * Test alphabetical_sort by keys, not reversed, with php-intl. | ||
479 | */ | ||
480 | public function testAlphabeticalSortByKeys() | ||
481 | { | ||
482 | $arr = [ | ||
483 | 'zZz' => true, | ||
484 | 'éee' => true, | ||
485 | 'éae' => true, | ||
486 | 'eee' => true, | ||
487 | 'A' => true, | ||
488 | 'a' => true, | ||
489 | 'zzz' => true, | ||
490 | ]; | ||
491 | $expected = [ | ||
492 | 'a' => true, | ||
493 | 'A' => true, | ||
494 | 'éae' => true, | ||
495 | 'eee' => true, | ||
496 | 'éee' => true, | ||
497 | 'zzz' => true, | ||
498 | 'zZz' => true, | ||
499 | ]; | ||
500 | |||
501 | alphabetical_sort($arr, true, true); | ||
502 | $this->assertEquals($expected, $arr); | ||
503 | } | ||
504 | |||
505 | /** | ||
506 | * Test alphabetical_sort by keys, reversed, with php-intl. | ||
507 | */ | ||
508 | public function testAlphabeticalSortByKeysReversed() | ||
509 | { | ||
510 | $arr = [ | ||
511 | 'zZz' => true, | ||
512 | 'éee' => true, | ||
513 | 'éae' => true, | ||
514 | 'eee' => true, | ||
515 | 'A' => true, | ||
516 | 'a' => true, | ||
517 | 'zzz' => true, | ||
518 | ]; | ||
519 | $expected = [ | ||
520 | 'zZz' => true, | ||
521 | 'zzz' => true, | ||
522 | 'éee' => true, | ||
523 | 'eee' => true, | ||
524 | 'éae' => true, | ||
525 | 'A' => true, | ||
526 | 'a' => true, | ||
527 | ]; | ||
528 | |||
529 | alphabetical_sort($arr, true, true); | ||
530 | $this->assertEquals($expected, $arr); | ||
531 | } | ||
420 | } | 532 | } |
diff --git a/tests/api/controllers/GetLinksTest.php b/tests/api/controllers/GetLinksTest.php index 84ae7f7a..4cb70224 100644 --- a/tests/api/controllers/GetLinksTest.php +++ b/tests/api/controllers/GetLinksTest.php | |||
@@ -95,7 +95,7 @@ class GetLinksTest extends \PHPUnit_Framework_TestCase | |||
95 | $this->assertEquals($this->refDB->countLinks(), count($data)); | 95 | $this->assertEquals($this->refDB->countLinks(), count($data)); |
96 | 96 | ||
97 | // Check order | 97 | // Check order |
98 | $order = [41, 8, 6, 7, 0, 1, 4, 42]; | 98 | $order = [41, 8, 6, 7, 0, 1, 9, 4, 42]; |
99 | $cpt = 0; | 99 | $cpt = 0; |
100 | foreach ($data as $link) { | 100 | foreach ($data as $link) { |
101 | $this->assertEquals(self::NB_FIELDS_LINK, count($link)); | 101 | $this->assertEquals(self::NB_FIELDS_LINK, count($link)); |
@@ -164,7 +164,7 @@ class GetLinksTest extends \PHPUnit_Framework_TestCase | |||
164 | $data = json_decode((string) $response->getBody(), true); | 164 | $data = json_decode((string) $response->getBody(), true); |
165 | $this->assertEquals($this->refDB->countLinks(), count($data)); | 165 | $this->assertEquals($this->refDB->countLinks(), count($data)); |
166 | // Check order | 166 | // Check order |
167 | $order = [41, 8, 6, 7, 0, 1, 4, 42]; | 167 | $order = [41, 8, 6, 7, 0, 1, 9, 4, 42]; |
168 | $cpt = 0; | 168 | $cpt = 0; |
169 | foreach ($data as $link) { | 169 | foreach ($data as $link) { |
170 | $this->assertEquals(self::NB_FIELDS_LINK, count($link)); | 170 | $this->assertEquals(self::NB_FIELDS_LINK, count($link)); |
diff --git a/tests/api/controllers/InfoTest.php b/tests/api/controllers/InfoTest.php index e85eb281..f7e63bfa 100644 --- a/tests/api/controllers/InfoTest.php +++ b/tests/api/controllers/InfoTest.php | |||
@@ -81,7 +81,7 @@ class InfoTest extends \PHPUnit_Framework_TestCase | |||
81 | $this->assertEquals(200, $response->getStatusCode()); | 81 | $this->assertEquals(200, $response->getStatusCode()); |
82 | $data = json_decode((string) $response->getBody(), true); | 82 | $data = json_decode((string) $response->getBody(), true); |
83 | 83 | ||
84 | $this->assertEquals(8, $data['global_counter']); | 84 | $this->assertEquals(\ReferenceLinkDB::$NB_LINKS_TOTAL, $data['global_counter']); |
85 | $this->assertEquals(2, $data['private_counter']); | 85 | $this->assertEquals(2, $data['private_counter']); |
86 | $this->assertEquals('Shaarli', $data['settings']['title']); | 86 | $this->assertEquals('Shaarli', $data['settings']['title']); |
87 | $this->assertEquals('?', $data['settings']['header_link']); | 87 | $this->assertEquals('?', $data['settings']['header_link']); |
@@ -104,7 +104,7 @@ class InfoTest extends \PHPUnit_Framework_TestCase | |||
104 | $this->assertEquals(200, $response->getStatusCode()); | 104 | $this->assertEquals(200, $response->getStatusCode()); |
105 | $data = json_decode((string) $response->getBody(), true); | 105 | $data = json_decode((string) $response->getBody(), true); |
106 | 106 | ||
107 | $this->assertEquals(8, $data['global_counter']); | 107 | $this->assertEquals(\ReferenceLinkDB::$NB_LINKS_TOTAL, $data['global_counter']); |
108 | $this->assertEquals(2, $data['private_counter']); | 108 | $this->assertEquals(2, $data['private_counter']); |
109 | $this->assertEquals($title, $data['settings']['title']); | 109 | $this->assertEquals($title, $data['settings']['title']); |
110 | $this->assertEquals($headerLink, $data['settings']['header_link']); | 110 | $this->assertEquals($headerLink, $data['settings']['header_link']); |
diff --git a/tests/plugins/PluginMarkdownTest.php b/tests/plugins/PluginMarkdownTest.php index d8180ad6..96891f1f 100644 --- a/tests/plugins/PluginMarkdownTest.php +++ b/tests/plugins/PluginMarkdownTest.php | |||
@@ -26,6 +26,7 @@ class PluginMarkdownTest extends PHPUnit_Framework_TestCase | |||
26 | { | 26 | { |
27 | PluginManager::$PLUGINS_PATH = 'plugins'; | 27 | PluginManager::$PLUGINS_PATH = 'plugins'; |
28 | $this->conf = new ConfigManager('tests/utils/config/configJson'); | 28 | $this->conf = new ConfigManager('tests/utils/config/configJson'); |
29 | $this->conf->set('security.allowed_protocols', ['ftp', 'magnet']); | ||
29 | } | 30 | } |
30 | 31 | ||
31 | /** | 32 | /** |
@@ -183,15 +184,19 @@ class PluginMarkdownTest extends PHPUnit_Framework_TestCase | |||
183 | } | 184 | } |
184 | 185 | ||
185 | /** | 186 | /** |
186 | * Test hashtag links processed with markdown. | 187 | * Make sure that the generated HTML match the reference HTML file. |
187 | */ | 188 | */ |
188 | public function testMarkdownHashtagLinks() | 189 | public function testMarkdownGlobalProcessDescription() |
189 | { | 190 | { |
190 | $md = file_get_contents('tests/plugins/resources/markdown.md'); | 191 | $md = file_get_contents('tests/plugins/resources/markdown.md'); |
191 | $md = format_description($md); | 192 | $md = format_description($md); |
192 | $html = file_get_contents('tests/plugins/resources/markdown.html'); | 193 | $html = file_get_contents('tests/plugins/resources/markdown.html'); |
193 | 194 | ||
194 | $data = process_markdown($md); | 195 | $data = process_markdown( |
196 | $md, | ||
197 | $this->conf->get('security.markdown_escape', true), | ||
198 | $this->conf->get('security.allowed_protocols') | ||
199 | ); | ||
195 | $this->assertEquals($html, $data); | 200 | $this->assertEquals($html, $data); |
196 | } | 201 | } |
197 | 202 | ||
diff --git a/tests/plugins/resources/markdown.html b/tests/plugins/resources/markdown.html index 07a5a32e..844a6f31 100644 --- a/tests/plugins/resources/markdown.html +++ b/tests/plugins/resources/markdown.html | |||
@@ -21,4 +21,13 @@ | |||
21 | next #foo</code></pre> | 21 | next #foo</code></pre> |
22 | <p>Block:</p> | 22 | <p>Block:</p> |
23 | <pre><code>lorem ipsum #foobar http://link.tld | 23 | <pre><code>lorem ipsum #foobar http://link.tld |
24 | #foobar http://link.tld</code></pre></div> \ No newline at end of file | 24 | #foobar http://link.tld</code></pre> |
25 | <p><a href="?123456">link</a><br /> | ||
26 | <img src="/img/train.png" alt="link" /><br /> | ||
27 | <a href="http://test.tld/path/?query=value#hash">link</a><br /> | ||
28 | <a href="http://test.tld/path/?query=value#hash">link</a><br /> | ||
29 | <a href="https://test.tld/path/?query=value#hash">link</a><br /> | ||
30 | <a href="ftp://test.tld/path/?query=value#hash">link</a><br /> | ||
31 | <a href="magnet:test.tld/path/?query=value#hash">link</a><br /> | ||
32 | <a href="http://alert('xss')">link</a><br /> | ||
33 | <a href="http://test.tld/path/?query=value#hash">link</a></p></div> \ No newline at end of file | ||
diff --git a/tests/plugins/resources/markdown.md b/tests/plugins/resources/markdown.md index 0b8be7c5..b8ebd934 100644 --- a/tests/plugins/resources/markdown.md +++ b/tests/plugins/resources/markdown.md | |||
@@ -21,4 +21,14 @@ Block: | |||
21 | ``` | 21 | ``` |
22 | lorem ipsum #foobar http://link.tld | 22 | lorem ipsum #foobar http://link.tld |
23 | #foobar http://link.tld | 23 | #foobar http://link.tld |
24 | ``` \ No newline at end of file | 24 | ``` |
25 | |||
26 | [link](?123456) | ||
27 | ![link](/img/train.png) | ||
28 | [link](test.tld/path/?query=value#hash) | ||
29 | [link](http://test.tld/path/?query=value#hash) | ||
30 | [link](https://test.tld/path/?query=value#hash) | ||
31 | [link](ftp://test.tld/path/?query=value#hash) | ||
32 | [link](magnet:test.tld/path/?query=value#hash) | ||
33 | [link](javascript:alert('xss')) | ||
34 | [link](other://test.tld/path/?query=value#hash) \ No newline at end of file | ||
diff --git a/tests/utils/ReferenceLinkDB.php b/tests/utils/ReferenceLinkDB.php index 1f4b3063..f09eebc1 100644 --- a/tests/utils/ReferenceLinkDB.php +++ b/tests/utils/ReferenceLinkDB.php | |||
@@ -4,7 +4,7 @@ | |||
4 | */ | 4 | */ |
5 | class ReferenceLinkDB | 5 | class ReferenceLinkDB |
6 | { | 6 | { |
7 | public static $NB_LINKS_TOTAL = 8; | 7 | public static $NB_LINKS_TOTAL = 9; |
8 | 8 | ||
9 | private $_links = array(); | 9 | private $_links = array(); |
10 | private $_publicCount = 0; | 10 | private $_publicCount = 0; |
@@ -38,6 +38,16 @@ class ReferenceLinkDB | |||
38 | ); | 38 | ); |
39 | 39 | ||
40 | $this->addLink( | 40 | $this->addLink( |
41 | 9, | ||
42 | 'PSR-2: Coding Style Guide', | ||
43 | 'http://www.php-fig.org/psr/psr-2/', | ||
44 | 'This guide extends and expands on PSR-1, the basic coding standard.', | ||
45 | 0, | ||
46 | DateTime::createFromFormat(LinkDB::LINK_DATE_FORMAT, '20121206_152312'), | ||
47 | '' | ||
48 | ); | ||
49 | |||
50 | $this->addLink( | ||
41 | 8, | 51 | 8, |
42 | 'Free as in Freedom 2.0 @website', | 52 | 'Free as in Freedom 2.0 @website', |
43 | 'https://static.fsf.org/nosvn/faif-2.0.pdf', | 53 | 'https://static.fsf.org/nosvn/faif-2.0.pdf', |
@@ -161,6 +171,20 @@ class ReferenceLinkDB | |||
161 | return $this->_privateCount; | 171 | return $this->_privateCount; |
162 | } | 172 | } |
163 | 173 | ||
174 | /** | ||
175 | * Returns the number of links without tag | ||
176 | */ | ||
177 | public function countUntaggedLinks() | ||
178 | { | ||
179 | $cpt = 0; | ||
180 | foreach ($this->_links as $link) { | ||
181 | if (empty($link['tags'])) { | ||
182 | ++$cpt; | ||
183 | } | ||
184 | } | ||
185 | return $cpt; | ||
186 | } | ||
187 | |||
164 | public function getLinks() | 188 | public function getLinks() |
165 | { | 189 | { |
166 | return $this->_links; | 190 | return $this->_links; |