diff options
-rw-r--r-- | application/Url.php | 5 | ||||
-rw-r--r-- | index.php | 8 | ||||
-rw-r--r-- | tests/Url/CleanupUrlTest.php | 102 |
3 files changed, 76 insertions, 39 deletions
diff --git a/application/Url.php b/application/Url.php index c5c7dd18..25a62a8a 100644 --- a/application/Url.php +++ b/application/Url.php | |||
@@ -94,7 +94,10 @@ class Url | |||
94 | 'utm_', | 94 | 'utm_', |
95 | 95 | ||
96 | // ATInternet | 96 | // ATInternet |
97 | 'xtor=' | 97 | 'xtor=', |
98 | |||
99 | // Other | ||
100 | 'campaign_' | ||
98 | ); | 101 | ); |
99 | 102 | ||
100 | private static $annoyingFragments = array( | 103 | private static $annoyingFragments = array( |
@@ -1949,8 +1949,8 @@ function install($conf) | |||
1949 | $conf->set( | 1949 | $conf->set( |
1950 | 'api.secret', | 1950 | 'api.secret', |
1951 | generate_api_secret( | 1951 | generate_api_secret( |
1952 | $this->conf->get('credentials.login'), | 1952 | $conf->get('credentials.login'), |
1953 | $this->conf->get('credentials.salt') | 1953 | $conf->get('credentials.salt') |
1954 | ) | 1954 | ) |
1955 | ); | 1955 | ); |
1956 | try { | 1956 | try { |
@@ -2231,8 +2231,8 @@ $app = new \Slim\App($container); | |||
2231 | 2231 | ||
2232 | // REST API routes | 2232 | // REST API routes |
2233 | $app->group('/api/v1', function() { | 2233 | $app->group('/api/v1', function() { |
2234 | $this->get('/info', '\Api\Controllers\Info:getInfo'); | 2234 | $this->get('/info', '\Shaarli\Api\Controllers\Info:getInfo'); |
2235 | })->add('\Api\ApiMiddleware'); | 2235 | })->add('\Shaarli\Api\ApiMiddleware'); |
2236 | 2236 | ||
2237 | $response = $app->run(true); | 2237 | $response = $app->run(true); |
2238 | // Hack to make Slim and Shaarli router work together: | 2238 | // Hack to make Slim and Shaarli router work together: |
diff --git a/tests/Url/CleanupUrlTest.php b/tests/Url/CleanupUrlTest.php index ba9a0437..1407d7d2 100644 --- a/tests/Url/CleanupUrlTest.php +++ b/tests/Url/CleanupUrlTest.php | |||
@@ -8,7 +8,13 @@ require_once 'application/Url.php'; | |||
8 | class CleanupUrlTest extends PHPUnit_Framework_TestCase | 8 | class CleanupUrlTest extends PHPUnit_Framework_TestCase |
9 | { | 9 | { |
10 | /** | 10 | /** |
11 | * Clean empty UrlThanks for building nothing | 11 | * @var string reference URL |
12 | */ | ||
13 | protected $ref = 'http://domain.tld:3000'; | ||
14 | |||
15 | |||
16 | /** | ||
17 | * Clean empty URL | ||
12 | */ | 18 | */ |
13 | public function testCleanupUrlEmpty() | 19 | public function testCleanupUrlEmpty() |
14 | { | 20 | { |
@@ -16,59 +22,87 @@ class CleanupUrlTest extends PHPUnit_Framework_TestCase | |||
16 | } | 22 | } |
17 | 23 | ||
18 | /** | 24 | /** |
19 | * Clean an already cleaned Url | 25 | * Clean an already cleaned URL |
20 | */ | 26 | */ |
21 | public function testCleanupUrlAlreadyClean() | 27 | public function testCleanupUrlAlreadyClean() |
22 | { | 28 | { |
23 | $ref = 'http://domain.tld:3000'; | 29 | $this->assertEquals($this->ref, cleanup_url($this->ref)); |
24 | $this->assertEquals($ref, cleanup_url($ref)); | 30 | $this->ref2 = $this->ref.'/path/to/dir/'; |
25 | $ref = $ref.'/path/to/dir/'; | 31 | $this->assertEquals($this->ref2, cleanup_url($this->ref2)); |
26 | $this->assertEquals($ref, cleanup_url($ref)); | 32 | } |
33 | |||
34 | /** | ||
35 | * Clean URL fragments | ||
36 | */ | ||
37 | public function testCleanupUrlFragment() | ||
38 | { | ||
39 | $this->assertEquals($this->ref, cleanup_url($this->ref.'#tk.rss_all')); | ||
40 | $this->assertEquals($this->ref, cleanup_url($this->ref.'#xtor=RSS-')); | ||
41 | $this->assertEquals($this->ref, cleanup_url($this->ref.'#xtor=RSS-U3ht0tkc4b')); | ||
42 | } | ||
43 | |||
44 | /** | ||
45 | * Clean URL query - single annoying parameter | ||
46 | */ | ||
47 | public function testCleanupUrlQuerySingle() | ||
48 | { | ||
49 | $this->assertEquals($this->ref, cleanup_url($this->ref.'?action_object_map=junk')); | ||
50 | $this->assertEquals($this->ref, cleanup_url($this->ref.'?action_ref_map=Cr4p!')); | ||
51 | $this->assertEquals($this->ref, cleanup_url($this->ref.'?action_type_map=g4R84g3')); | ||
52 | |||
53 | $this->assertEquals($this->ref, cleanup_url($this->ref.'?fb_stuff=v41u3')); | ||
54 | $this->assertEquals($this->ref, cleanup_url($this->ref.'?fb=71m3w4573')); | ||
55 | |||
56 | $this->assertEquals($this->ref, cleanup_url($this->ref.'?utm_campaign=zomg')); | ||
57 | $this->assertEquals($this->ref, cleanup_url($this->ref.'?utm_medium=numnum')); | ||
58 | $this->assertEquals($this->ref, cleanup_url($this->ref.'?utm_source=c0d3')); | ||
59 | $this->assertEquals($this->ref, cleanup_url($this->ref.'?utm_term=1n4l')); | ||
60 | |||
61 | $this->assertEquals($this->ref, cleanup_url($this->ref.'?xtor=some-url')); | ||
62 | |||
63 | $this->assertEquals($this->ref, cleanup_url($this->ref.'?campaign_name=junk')); | ||
64 | $this->assertEquals($this->ref, cleanup_url($this->ref.'?campaign_start=junk')); | ||
65 | $this->assertEquals($this->ref, cleanup_url($this->ref.'?campaign_item_index=junk')); | ||
27 | } | 66 | } |
28 | 67 | ||
29 | /** | 68 | /** |
30 | * Clean Url needing cleaning | 69 | * Clean URL query - multiple annoying parameters |
31 | */ | 70 | */ |
32 | public function testCleanupUrlNeedClean() | 71 | public function testCleanupUrlQueryMultiple() |
33 | { | 72 | { |
34 | $ref = 'http://domain.tld:3000'; | 73 | $this->assertEquals($this->ref, cleanup_url($this->ref.'?xtor=some-url&fb=som3th1ng')); |
35 | $this->assertEquals($ref, cleanup_url($ref.'#tk.rss_all')); | 74 | |
36 | $this->assertEquals($ref, cleanup_url($ref.'#xtor=RSS-')); | 75 | $this->assertEquals($this->ref, cleanup_url( |
37 | $this->assertEquals($ref, cleanup_url($ref.'#xtor=RSS-U3ht0tkc4b')); | 76 | $this->ref.'?fb=stuff&utm_campaign=zomg&utm_medium=numnum&utm_source=c0d3' |
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 | )); | 77 | )); |
55 | $this->assertEquals($ref, cleanup_url( | 78 | |
56 | $ref.'?xtor=some-url&fb=som3th1ng#tk.rss_all' | 79 | $this->assertEquals($this->ref, cleanup_url( |
80 | $this->ref.'?campaign_start=zomg&campaign_name=numnum' | ||
81 | )); | ||
82 | } | ||
83 | |||
84 | /** | ||
85 | * Clean URL query - multiple annoying parameters and fragment | ||
86 | */ | ||
87 | public function testCleanupUrlQueryFragment() | ||
88 | { | ||
89 | $this->assertEquals($this->ref, cleanup_url( | ||
90 | $this->ref.'?xtor=some-url&fb=som3th1ng#tk.rss_all' | ||
57 | )); | 91 | )); |
58 | 92 | ||
59 | // ditch annoying query params and fragment, keep useful params | 93 | // ditch annoying query params and fragment, keep useful params |
60 | $this->assertEquals( | 94 | $this->assertEquals( |
61 | $ref.'?my=stuff&is=kept', | 95 | $this->ref.'?my=stuff&is=kept', |
62 | cleanup_url( | 96 | cleanup_url( |
63 | $ref.'?fb=zomg&my=stuff&utm_medium=numnum&is=kept#tk.rss_all' | 97 | $this->ref.'?fb=zomg&my=stuff&utm_medium=numnum&is=kept#tk.rss_all' |
64 | ) | 98 | ) |
65 | ); | 99 | ); |
66 | 100 | ||
67 | // ditch annoying query params, keep useful params and fragment | 101 | // ditch annoying query params, keep useful params and fragment |
68 | $this->assertEquals( | 102 | $this->assertEquals( |
69 | $ref.'?my=stuff&is=kept#again', | 103 | $this->ref.'?my=stuff&is=kept#again', |
70 | cleanup_url( | 104 | cleanup_url( |
71 | $ref.'?fb=zomg&my=stuff&utm_medium=numnum&is=kept#again' | 105 | $this->ref.'?fb=zomg&my=stuff&utm_medium=numnum&is=kept#again' |
72 | ) | 106 | ) |
73 | ); | 107 | ); |
74 | } | 108 | } |