diff options
author | Guillaume Virlet <github@virlet.org> | 2015-09-02 13:55:39 +0200 |
---|---|---|
committer | Guillaume Virlet <github@virlet.org> | 2015-09-08 22:00:37 +0200 |
commit | ef591e7ee21435da9314c5f7f6ea983c6f423898 (patch) | |
tree | a58c1bcaab33d42161b23d55c739737526ea17e9 /tests | |
parent | 0a813cfd7cdf3c81faba8568bf6e2e667aae6f13 (diff) | |
download | Shaarli-ef591e7ee21435da9314c5f7f6ea983c6f423898.tar.gz Shaarli-ef591e7ee21435da9314c5f7f6ea983c6f423898.tar.zst Shaarli-ef591e7ee21435da9314c5f7f6ea983c6f423898.zip |
Url: introduce global helper functions for cleanup and scheme detection
Relates to #314 & #326
Additions:
- add global `cleanup_url()` and `get_url_scheme()` functions
Modifications:
- replace `Url` usage in `index.php` by calls to global functions
- fix `Url` tests not being run: PHPUnit expects a single test class per file
- move classes to separate files
Diffstat (limited to 'tests')
-rw-r--r-- | tests/Url/CleanupUrlTest.php | 76 | ||||
-rw-r--r-- | tests/Url/GetUrlSchemeTest.php | 31 | ||||
-rw-r--r-- | tests/Url/UnparseUrlTest.php | 31 | ||||
-rwxr-xr-x | tests/Url/UrlTest.php (renamed from tests/UrlTest.php) | 32 |
4 files changed, 143 insertions, 27 deletions
diff --git a/tests/Url/CleanupUrlTest.php b/tests/Url/CleanupUrlTest.php new file mode 100644 index 00000000..ba9a0437 --- /dev/null +++ b/tests/Url/CleanupUrlTest.php | |||
@@ -0,0 +1,76 @@ | |||
1 | <?php | ||
2 | /** | ||
3 | * Unitary tests for cleanup_url() | ||
4 | */ | ||
5 | |||
6 | require_once 'application/Url.php'; | ||
7 | |||
8 | class CleanupUrlTest extends PHPUnit_Framework_TestCase | ||
9 | { | ||
10 | /** | ||
11 | * Clean empty UrlThanks for building nothing | ||
12 | */ | ||
13 | public function testCleanupUrlEmpty() | ||
14 | { | ||
15 | $this->assertEquals('', cleanup_url('')); | ||
16 | } | ||
17 | |||
18 | /** | ||
19 | * Clean an already cleaned Url | ||
20 | */ | ||
21 | public function testCleanupUrlAlreadyClean() | ||
22 | { | ||
23 | $ref = 'http://domain.tld:3000'; | ||
24 | $this->assertEquals($ref, cleanup_url($ref)); | ||
25 | $ref = $ref.'/path/to/dir/'; | ||
26 | $this->assertEquals($ref, cleanup_url($ref)); | ||
27 | } | ||
28 | |||
29 | /** | ||
30 | * Clean Url needing cleaning | ||
31 | */ | ||
32 | public function testCleanupUrlNeedClean() | ||
33 | { | ||
34 | $ref = 'http://domain.tld:3000'; | ||
35 | $this->assertEquals($ref, cleanup_url($ref.'#tk.rss_all')); | ||
36 | $this->assertEquals($ref, cleanup_url($ref.'#xtor=RSS-')); | ||
37 | $this->assertEquals($ref, cleanup_url($ref.'#xtor=RSS-U3ht0tkc4b')); | ||
38 | $this->assertEquals($ref, cleanup_url($ref.'?action_object_map=junk')); | ||
39 | $this->assertEquals($ref, cleanup_url($ref.'?action_ref_map=Cr4p!')); | ||
40 | $this->assertEquals($ref, cleanup_url($ref.'?action_type_map=g4R84g3')); | ||
41 | |||
42 | $this->assertEquals($ref, cleanup_url($ref.'?fb_stuff=v41u3')); | ||
43 | $this->assertEquals($ref, cleanup_url($ref.'?fb=71m3w4573')); | ||
44 | |||
45 | $this->assertEquals($ref, cleanup_url($ref.'?utm_campaign=zomg')); | ||
46 | $this->assertEquals($ref, cleanup_url($ref.'?utm_medium=numnum')); | ||
47 | $this->assertEquals($ref, cleanup_url($ref.'?utm_source=c0d3')); | ||
48 | $this->assertEquals($ref, cleanup_url($ref.'?utm_term=1n4l')); | ||
49 | |||
50 | $this->assertEquals($ref, cleanup_url($ref.'?xtor=some-url')); | ||
51 | $this->assertEquals($ref, cleanup_url($ref.'?xtor=some-url&fb=som3th1ng')); | ||
52 | $this->assertEquals($ref, cleanup_url( | ||
53 | $ref.'?fb=stuff&utm_campaign=zomg&utm_medium=numnum&utm_source=c0d3' | ||
54 | )); | ||
55 | $this->assertEquals($ref, cleanup_url( | ||
56 | $ref.'?xtor=some-url&fb=som3th1ng#tk.rss_all' | ||
57 | )); | ||
58 | |||
59 | // ditch annoying query params and fragment, keep useful params | ||
60 | $this->assertEquals( | ||
61 | $ref.'?my=stuff&is=kept', | ||
62 | cleanup_url( | ||
63 | $ref.'?fb=zomg&my=stuff&utm_medium=numnum&is=kept#tk.rss_all' | ||
64 | ) | ||
65 | ); | ||
66 | |||
67 | // ditch annoying query params, keep useful params and fragment | ||
68 | $this->assertEquals( | ||
69 | $ref.'?my=stuff&is=kept#again', | ||
70 | cleanup_url( | ||
71 | $ref.'?fb=zomg&my=stuff&utm_medium=numnum&is=kept#again' | ||
72 | ) | ||
73 | ); | ||
74 | } | ||
75 | } | ||
76 | |||
diff --git a/tests/Url/GetUrlSchemeTest.php b/tests/Url/GetUrlSchemeTest.php new file mode 100644 index 00000000..72d80b30 --- /dev/null +++ b/tests/Url/GetUrlSchemeTest.php | |||
@@ -0,0 +1,31 @@ | |||
1 | <?php | ||
2 | /** | ||
3 | * Unitary tests for get_url_scheme() | ||
4 | */ | ||
5 | |||
6 | require_once 'application/Url.php'; | ||
7 | |||
8 | class GetUrlSchemeTest extends PHPUnit_Framework_TestCase | ||
9 | { | ||
10 | /** | ||
11 | * Get empty scheme string for empty Url | ||
12 | */ | ||
13 | public function testGetUrlSchemeEmpty() | ||
14 | { | ||
15 | $this->assertEquals('', get_url_scheme('')); | ||
16 | } | ||
17 | |||
18 | /** | ||
19 | * Get normal scheme of Url | ||
20 | */ | ||
21 | public function testGetUrlScheme() | ||
22 | { | ||
23 | $this->assertEquals('http', get_url_scheme('http://domain.tld:3000')); | ||
24 | $this->assertEquals('https', get_url_scheme('https://domain.tld:3000')); | ||
25 | $this->assertEquals('http', get_url_scheme('domain.tld')); | ||
26 | $this->assertEquals('ssh', get_url_scheme('ssh://domain.tld')); | ||
27 | $this->assertEquals('ftp', get_url_scheme('ftp://domain.tld')); | ||
28 | $this->assertEquals('git', get_url_scheme('git://domain.tld/push?pull=clone#checkout')); | ||
29 | } | ||
30 | } | ||
31 | |||
diff --git a/tests/Url/UnparseUrlTest.php b/tests/Url/UnparseUrlTest.php new file mode 100644 index 00000000..edde73e4 --- /dev/null +++ b/tests/Url/UnparseUrlTest.php | |||
@@ -0,0 +1,31 @@ | |||
1 | <?php | ||
2 | /** | ||
3 | * Unpares Url's tests | ||
4 | */ | ||
5 | |||
6 | require_once 'application/Url.php'; | ||
7 | |||
8 | /** | ||
9 | * Unitary tests for unparse_url() | ||
10 | */ | ||
11 | class UnparseUrlTest extends PHPUnit_Framework_TestCase | ||
12 | { | ||
13 | /** | ||
14 | * Thanks for building nothing | ||
15 | */ | ||
16 | public function testUnparseEmptyArray() | ||
17 | { | ||
18 | $this->assertEquals('', unparse_url(array())); | ||
19 | } | ||
20 | |||
21 | /** | ||
22 | * Rebuild a full-featured URL | ||
23 | */ | ||
24 | public function testUnparseFull() | ||
25 | { | ||
26 | $ref = 'http://username:password@hostname:9090/path' | ||
27 | .'?arg1=value1&arg2=value2#anchor'; | ||
28 | $this->assertEquals($ref, unparse_url(parse_url($ref))); | ||
29 | } | ||
30 | } | ||
31 | |||
diff --git a/tests/UrlTest.php b/tests/Url/UrlTest.php index c848e88e..e498d79e 100755 --- a/tests/UrlTest.php +++ b/tests/Url/UrlTest.php | |||
@@ -6,30 +6,6 @@ | |||
6 | require_once 'application/Url.php'; | 6 | require_once 'application/Url.php'; |
7 | 7 | ||
8 | /** | 8 | /** |
9 | * Unitary tests for unparse_url() | ||
10 | */ | ||
11 | class UnparseUrlTest extends PHPUnit_Framework_TestCase | ||
12 | { | ||
13 | /** | ||
14 | * Thanks for building nothing | ||
15 | */ | ||
16 | public function testUnparseEmptyArray() | ||
17 | { | ||
18 | $this->assertEquals('', unparse_url(array())); | ||
19 | } | ||
20 | |||
21 | /** | ||
22 | * Rebuild a full-featured URL | ||
23 | */ | ||
24 | public function testUnparseFull() | ||
25 | { | ||
26 | $ref = 'http://username:password@hostname:9090/path' | ||
27 | .'?arg1=value1&arg2=value2#anchor'; | ||
28 | $this->assertEquals($ref, unparse_url(parse_url($ref))); | ||
29 | } | ||
30 | } | ||
31 | |||
32 | /** | ||
33 | * Unitary tests for URL utilities | 9 | * Unitary tests for URL utilities |
34 | */ | 10 | */ |
35 | class UrlTest extends PHPUnit_Framework_TestCase | 11 | class UrlTest extends PHPUnit_Framework_TestCase |
@@ -44,7 +20,7 @@ class UrlTest extends PHPUnit_Framework_TestCase | |||
44 | { | 20 | { |
45 | $url = new Url(self::$baseUrl.$query.$fragment); | 21 | $url = new Url(self::$baseUrl.$query.$fragment); |
46 | $url->cleanup(); | 22 | $url->cleanup(); |
47 | $this->assertEquals(self::$baseUrl, $url->__toString()); | 23 | $this->assertEquals(self::$baseUrl, $url->toString()); |
48 | } | 24 | } |
49 | 25 | ||
50 | /** | 26 | /** |
@@ -52,7 +28,8 @@ class UrlTest extends PHPUnit_Framework_TestCase | |||
52 | */ | 28 | */ |
53 | public function testEmptyConstruct() | 29 | public function testEmptyConstruct() |
54 | { | 30 | { |
55 | $this->assertEquals('', new Url('')); | 31 | $url = new Url(''); |
32 | $this->assertEquals('', $url->toString()); | ||
56 | } | 33 | } |
57 | 34 | ||
58 | /** | 35 | /** |
@@ -62,7 +39,8 @@ class UrlTest extends PHPUnit_Framework_TestCase | |||
62 | { | 39 | { |
63 | $ref = 'http://username:password@hostname:9090/path' | 40 | $ref = 'http://username:password@hostname:9090/path' |
64 | .'?arg1=value1&arg2=value2#anchor'; | 41 | .'?arg1=value1&arg2=value2#anchor'; |
65 | $this->assertEquals($ref, new Url($ref)); | 42 | $url = new Url($ref); |
43 | $this->assertEquals($ref, $url->toString()); | ||
66 | } | 44 | } |
67 | 45 | ||
68 | /** | 46 | /** |