URL cleanup: add 'campaign_' to the annoying parameters

Closes https://github.com/shaarli/Shaarli/issues/735

Signed-off-by: VirtualTam <virtualtam@flibidi.net>
This commit is contained in:
VirtualTam 2017-01-03 17:04:18 +01:00
parent 67a1d5d823
commit eaf2524887
2 changed files with 69 additions and 32 deletions

View file

@ -94,7 +94,10 @@ class Url
'utm_', 'utm_',
// ATInternet // ATInternet
'xtor=' 'xtor=',
// Other
'campaign_'
); );
private static $annoyingFragments = array( private static $annoyingFragments = array(

View file

@ -8,7 +8,13 @@
class CleanupUrlTest extends PHPUnit_Framework_TestCase class CleanupUrlTest extends PHPUnit_Framework_TestCase
{ {
/** /**
* Clean empty UrlThanks for building nothing * @var string reference URL
*/
protected $ref = 'http://domain.tld:3000';
/**
* Clean empty URL
*/ */
public function testCleanupUrlEmpty() public function testCleanupUrlEmpty()
{ {
@ -16,59 +22,87 @@ public function testCleanupUrlEmpty()
} }
/** /**
* Clean an already cleaned Url * Clean an already cleaned URL
*/ */
public function testCleanupUrlAlreadyClean() public function testCleanupUrlAlreadyClean()
{ {
$ref = 'http://domain.tld:3000'; $this->assertEquals($this->ref, cleanup_url($this->ref));
$this->assertEquals($ref, cleanup_url($ref)); $this->ref2 = $this->ref.'/path/to/dir/';
$ref = $ref.'/path/to/dir/'; $this->assertEquals($this->ref2, cleanup_url($this->ref2));
$this->assertEquals($ref, cleanup_url($ref));
} }
/** /**
* Clean Url needing cleaning * Clean URL fragments
*/ */
public function testCleanupUrlNeedClean() public function testCleanupUrlFragment()
{ {
$ref = 'http://domain.tld:3000'; $this->assertEquals($this->ref, cleanup_url($this->ref.'#tk.rss_all'));
$this->assertEquals($ref, cleanup_url($ref.'#tk.rss_all')); $this->assertEquals($this->ref, cleanup_url($this->ref.'#xtor=RSS-'));
$this->assertEquals($ref, cleanup_url($ref.'#xtor=RSS-')); $this->assertEquals($this->ref, cleanup_url($this->ref.'#xtor=RSS-U3ht0tkc4b'));
$this->assertEquals($ref, cleanup_url($ref.'#xtor=RSS-U3ht0tkc4b')); }
$this->assertEquals($ref, cleanup_url($ref.'?action_object_map=junk'));
$this->assertEquals($ref, cleanup_url($ref.'?action_ref_map=Cr4p!'));
$this->assertEquals($ref, cleanup_url($ref.'?action_type_map=g4R84g3'));
$this->assertEquals($ref, cleanup_url($ref.'?fb_stuff=v41u3')); /**
$this->assertEquals($ref, cleanup_url($ref.'?fb=71m3w4573')); * Clean URL query - single annoying parameter
*/
public function testCleanupUrlQuerySingle()
{
$this->assertEquals($this->ref, cleanup_url($this->ref.'?action_object_map=junk'));
$this->assertEquals($this->ref, cleanup_url($this->ref.'?action_ref_map=Cr4p!'));
$this->assertEquals($this->ref, cleanup_url($this->ref.'?action_type_map=g4R84g3'));
$this->assertEquals($ref, cleanup_url($ref.'?utm_campaign=zomg')); $this->assertEquals($this->ref, cleanup_url($this->ref.'?fb_stuff=v41u3'));
$this->assertEquals($ref, cleanup_url($ref.'?utm_medium=numnum')); $this->assertEquals($this->ref, cleanup_url($this->ref.'?fb=71m3w4573'));
$this->assertEquals($ref, cleanup_url($ref.'?utm_source=c0d3'));
$this->assertEquals($ref, cleanup_url($ref.'?utm_term=1n4l'));
$this->assertEquals($ref, cleanup_url($ref.'?xtor=some-url')); $this->assertEquals($this->ref, cleanup_url($this->ref.'?utm_campaign=zomg'));
$this->assertEquals($ref, cleanup_url($ref.'?xtor=some-url&fb=som3th1ng')); $this->assertEquals($this->ref, cleanup_url($this->ref.'?utm_medium=numnum'));
$this->assertEquals($ref, cleanup_url( $this->assertEquals($this->ref, cleanup_url($this->ref.'?utm_source=c0d3'));
$ref.'?fb=stuff&utm_campaign=zomg&utm_medium=numnum&utm_source=c0d3' $this->assertEquals($this->ref, cleanup_url($this->ref.'?utm_term=1n4l'));
$this->assertEquals($this->ref, cleanup_url($this->ref.'?xtor=some-url'));
$this->assertEquals($this->ref, cleanup_url($this->ref.'?campaign_name=junk'));
$this->assertEquals($this->ref, cleanup_url($this->ref.'?campaign_start=junk'));
$this->assertEquals($this->ref, cleanup_url($this->ref.'?campaign_item_index=junk'));
}
/**
* Clean URL query - multiple annoying parameters
*/
public function testCleanupUrlQueryMultiple()
{
$this->assertEquals($this->ref, cleanup_url($this->ref.'?xtor=some-url&fb=som3th1ng'));
$this->assertEquals($this->ref, cleanup_url(
$this->ref.'?fb=stuff&utm_campaign=zomg&utm_medium=numnum&utm_source=c0d3'
)); ));
$this->assertEquals($ref, cleanup_url(
$ref.'?xtor=some-url&fb=som3th1ng#tk.rss_all' $this->assertEquals($this->ref, cleanup_url(
$this->ref.'?campaign_start=zomg&campaign_name=numnum'
));
}
/**
* Clean URL query - multiple annoying parameters and fragment
*/
public function testCleanupUrlQueryFragment()
{
$this->assertEquals($this->ref, cleanup_url(
$this->ref.'?xtor=some-url&fb=som3th1ng#tk.rss_all'
)); ));
// ditch annoying query params and fragment, keep useful params // ditch annoying query params and fragment, keep useful params
$this->assertEquals( $this->assertEquals(
$ref.'?my=stuff&is=kept', $this->ref.'?my=stuff&is=kept',
cleanup_url( cleanup_url(
$ref.'?fb=zomg&my=stuff&utm_medium=numnum&is=kept#tk.rss_all' $this->ref.'?fb=zomg&my=stuff&utm_medium=numnum&is=kept#tk.rss_all'
) )
); );
// ditch annoying query params, keep useful params and fragment // ditch annoying query params, keep useful params and fragment
$this->assertEquals( $this->assertEquals(
$ref.'?my=stuff&is=kept#again', $this->ref.'?my=stuff&is=kept#again',
cleanup_url( cleanup_url(
$ref.'?fb=zomg&my=stuff&utm_medium=numnum&is=kept#again' $this->ref.'?fb=zomg&my=stuff&utm_medium=numnum&is=kept#again'
) )
); );
} }