]> git.immae.eu Git - github/shaarli/Shaarli.git/blob - tests/plugins/PluginArchiveorgTest.php
Compatibility with PHPUnit 9
[github/shaarli/Shaarli.git] / tests / plugins / PluginArchiveorgTest.php
1 <?php
2
3 namespace Shaarli\Plugin\Archiveorg;
4
5 /**
6 * PluginArchiveorgTest.php
7 */
8
9 use Shaarli\Plugin\PluginManager;
10 use Shaarli\TestCase;
11
12 require_once 'plugins/archiveorg/archiveorg.php';
13
14 /**
15 * Class PluginArchiveorgTest
16 * Unit test for the archiveorg plugin
17 */
18 class PluginArchiveorgTest extends TestCase
19 {
20 protected $savedScriptName;
21
22 /**
23 * Reset plugin path
24 */
25 public function setUp(): void
26 {
27 PluginManager::$PLUGINS_PATH = 'plugins';
28
29 // plugins manipulate global vars
30 $_SERVER['SERVER_PORT'] = '80';
31 $_SERVER['SERVER_NAME'] = 'shaarli.shaarli';
32 $this->savedScriptName = $_SERVER['SCRIPT_NAME'] ?? null;
33 $_SERVER['SCRIPT_NAME'] = '/index.php';
34 }
35
36 public function tearDown(): void
37 {
38 unset($_SERVER['SERVER_PORT']);
39 unset($_SERVER['SERVER_NAME']);
40 $_SERVER['SCRIPT_NAME'] = $this->savedScriptName;
41 }
42
43 /**
44 * Test render_linklist hook on external bookmarks.
45 */
46 public function testArchiveorgLinklistOnExternalLinks(): void
47 {
48 $str = 'http://randomstr.com/test';
49
50 $data = array(
51 'title' => $str,
52 'links' => array(
53 array(
54 'url' => $str,
55 'private' => 0,
56 'real_url' => $str
57 )
58 )
59 );
60
61 $data = hook_archiveorg_render_linklist($data);
62
63 $link = $data['links'][0];
64 // data shouldn't be altered
65 $this->assertEquals($str, $data['title']);
66 $this->assertEquals($str, $link['url']);
67
68 // plugin data
69 $this->assertEquals(1, count($link['link_plugin']));
70 $this->assertNotFalse(strpos($link['link_plugin'][0], $str));
71 }
72
73 /**
74 * Test render_linklist hook on internal bookmarks.
75 */
76 public function testArchiveorgLinklistOnInternalLinks(): void
77 {
78 $internalLink1 = 'http://shaarli.shaarli/shaare/qvMAqg';
79 $internalLinkRealURL1 = '/shaare/qvMAqg';
80
81 $internalLink2 = 'http://shaarli.shaarli/shaare/2_7zww';
82 $internalLinkRealURL2 = '/shaare/2_7zww';
83
84 $internalLink3 = 'http://shaarli.shaarli/shaare/z7u-_Q';
85 $internalLinkRealURL3 = '/shaare/z7u-_Q';
86
87 $data = array(
88 'title' => $internalLink1,
89 'links' => array(
90 array(
91 'url' => $internalLink1,
92 'private' => 0,
93 'real_url' => $internalLinkRealURL1
94 ),
95 array(
96 'url' => $internalLink1,
97 'private' => 1,
98 'real_url' => $internalLinkRealURL1
99 ),
100 array(
101 'url' => $internalLink2,
102 'private' => 0,
103 'real_url' => $internalLinkRealURL2
104 ),
105 array(
106 'url' => $internalLink2,
107 'private' => 1,
108 'real_url' => $internalLinkRealURL2
109 ),
110 array(
111 'url' => $internalLink3,
112 'private' => 0,
113 'real_url' => $internalLinkRealURL3
114 ),
115 array(
116 'url' => $internalLink3,
117 'private' => 1,
118 'real_url' => $internalLinkRealURL3
119 )
120 )
121 );
122
123 $data = hook_archiveorg_render_linklist($data);
124
125 // Case n°1: first link type, public
126 $link = $data['links'][0];
127
128 $this->assertEquals(1, count($link['link_plugin']));
129 $this->assertNotFalse(strpos($link['link_plugin'][0], $internalLink1));
130
131 // Case n°2: first link type, private
132 $link = $data['links'][1];
133
134 $this->assertArrayNotHasKey('link_plugin', $link);
135
136 // Case n°3: second link type, public
137 $link = $data['links'][2];
138
139 $this->assertEquals(1, count($link['link_plugin']));
140 $this->assertNotFalse(strpos($link['link_plugin'][0], $internalLink2));
141
142 // Case n°4: second link type, private
143 $link = $data['links'][3];
144
145 $this->assertArrayNotHasKey('link_plugin', $link);
146
147 // Case n°5: third link type, public
148 $link = $data['links'][4];
149
150 $this->assertEquals(1, count($link['link_plugin']));
151 $this->assertNotFalse(strpos($link['link_plugin'][0], $internalLink3));
152
153 // Case n°6: third link type, private
154 $link = $data['links'][5];
155
156 $this->assertArrayNotHasKey('link_plugin', $link);
157 }
158 }