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
This commit is contained in:
parent
0a813cfd7c
commit
ef591e7ee2
7 changed files with 179 additions and 34 deletions
76
tests/Url/CleanupUrlTest.php
Normal file
76
tests/Url/CleanupUrlTest.php
Normal file
|
@ -0,0 +1,76 @@
|
|||
<?php
|
||||
/**
|
||||
* Unitary tests for cleanup_url()
|
||||
*/
|
||||
|
||||
require_once 'application/Url.php';
|
||||
|
||||
class CleanupUrlTest extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
/**
|
||||
* Clean empty UrlThanks for building nothing
|
||||
*/
|
||||
public function testCleanupUrlEmpty()
|
||||
{
|
||||
$this->assertEquals('', cleanup_url(''));
|
||||
}
|
||||
|
||||
/**
|
||||
* Clean an already cleaned Url
|
||||
*/
|
||||
public function testCleanupUrlAlreadyClean()
|
||||
{
|
||||
$ref = 'http://domain.tld:3000';
|
||||
$this->assertEquals($ref, cleanup_url($ref));
|
||||
$ref = $ref.'/path/to/dir/';
|
||||
$this->assertEquals($ref, cleanup_url($ref));
|
||||
}
|
||||
|
||||
/**
|
||||
* Clean Url needing cleaning
|
||||
*/
|
||||
public function testCleanupUrlNeedClean()
|
||||
{
|
||||
$ref = 'http://domain.tld:3000';
|
||||
$this->assertEquals($ref, cleanup_url($ref.'#tk.rss_all'));
|
||||
$this->assertEquals($ref, cleanup_url($ref.'#xtor=RSS-'));
|
||||
$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'));
|
||||
|
||||
$this->assertEquals($ref, cleanup_url($ref.'?utm_campaign=zomg'));
|
||||
$this->assertEquals($ref, cleanup_url($ref.'?utm_medium=numnum'));
|
||||
$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($ref, cleanup_url($ref.'?xtor=some-url&fb=som3th1ng'));
|
||||
$this->assertEquals($ref, cleanup_url(
|
||||
$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'
|
||||
));
|
||||
|
||||
// ditch annoying query params and fragment, keep useful params
|
||||
$this->assertEquals(
|
||||
$ref.'?my=stuff&is=kept',
|
||||
cleanup_url(
|
||||
$ref.'?fb=zomg&my=stuff&utm_medium=numnum&is=kept#tk.rss_all'
|
||||
)
|
||||
);
|
||||
|
||||
// ditch annoying query params, keep useful params and fragment
|
||||
$this->assertEquals(
|
||||
$ref.'?my=stuff&is=kept#again',
|
||||
cleanup_url(
|
||||
$ref.'?fb=zomg&my=stuff&utm_medium=numnum&is=kept#again'
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
31
tests/Url/GetUrlSchemeTest.php
Normal file
31
tests/Url/GetUrlSchemeTest.php
Normal file
|
@ -0,0 +1,31 @@
|
|||
<?php
|
||||
/**
|
||||
* Unitary tests for get_url_scheme()
|
||||
*/
|
||||
|
||||
require_once 'application/Url.php';
|
||||
|
||||
class GetUrlSchemeTest extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
/**
|
||||
* Get empty scheme string for empty Url
|
||||
*/
|
||||
public function testGetUrlSchemeEmpty()
|
||||
{
|
||||
$this->assertEquals('', get_url_scheme(''));
|
||||
}
|
||||
|
||||
/**
|
||||
* Get normal scheme of Url
|
||||
*/
|
||||
public function testGetUrlScheme()
|
||||
{
|
||||
$this->assertEquals('http', get_url_scheme('http://domain.tld:3000'));
|
||||
$this->assertEquals('https', get_url_scheme('https://domain.tld:3000'));
|
||||
$this->assertEquals('http', get_url_scheme('domain.tld'));
|
||||
$this->assertEquals('ssh', get_url_scheme('ssh://domain.tld'));
|
||||
$this->assertEquals('ftp', get_url_scheme('ftp://domain.tld'));
|
||||
$this->assertEquals('git', get_url_scheme('git://domain.tld/push?pull=clone#checkout'));
|
||||
}
|
||||
}
|
||||
|
31
tests/Url/UnparseUrlTest.php
Normal file
31
tests/Url/UnparseUrlTest.php
Normal file
|
@ -0,0 +1,31 @@
|
|||
<?php
|
||||
/**
|
||||
* Unpares Url's tests
|
||||
*/
|
||||
|
||||
require_once 'application/Url.php';
|
||||
|
||||
/**
|
||||
* Unitary tests for unparse_url()
|
||||
*/
|
||||
class UnparseUrlTest extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
/**
|
||||
* Thanks for building nothing
|
||||
*/
|
||||
public function testUnparseEmptyArray()
|
||||
{
|
||||
$this->assertEquals('', unparse_url(array()));
|
||||
}
|
||||
|
||||
/**
|
||||
* Rebuild a full-featured URL
|
||||
*/
|
||||
public function testUnparseFull()
|
||||
{
|
||||
$ref = 'http://username:password@hostname:9090/path'
|
||||
.'?arg1=value1&arg2=value2#anchor';
|
||||
$this->assertEquals($ref, unparse_url(parse_url($ref)));
|
||||
}
|
||||
}
|
||||
|
|
@ -5,30 +5,6 @@
|
|||
|
||||
require_once 'application/Url.php';
|
||||
|
||||
/**
|
||||
* Unitary tests for unparse_url()
|
||||
*/
|
||||
class UnparseUrlTest extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
/**
|
||||
* Thanks for building nothing
|
||||
*/
|
||||
public function testUnparseEmptyArray()
|
||||
{
|
||||
$this->assertEquals('', unparse_url(array()));
|
||||
}
|
||||
|
||||
/**
|
||||
* Rebuild a full-featured URL
|
||||
*/
|
||||
public function testUnparseFull()
|
||||
{
|
||||
$ref = 'http://username:password@hostname:9090/path'
|
||||
.'?arg1=value1&arg2=value2#anchor';
|
||||
$this->assertEquals($ref, unparse_url(parse_url($ref)));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Unitary tests for URL utilities
|
||||
*/
|
||||
|
@ -44,7 +20,7 @@ class UrlTest extends PHPUnit_Framework_TestCase
|
|||
{
|
||||
$url = new Url(self::$baseUrl.$query.$fragment);
|
||||
$url->cleanup();
|
||||
$this->assertEquals(self::$baseUrl, $url->__toString());
|
||||
$this->assertEquals(self::$baseUrl, $url->toString());
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -52,7 +28,8 @@ class UrlTest extends PHPUnit_Framework_TestCase
|
|||
*/
|
||||
public function testEmptyConstruct()
|
||||
{
|
||||
$this->assertEquals('', new Url(''));
|
||||
$url = new Url('');
|
||||
$this->assertEquals('', $url->toString());
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -62,7 +39,8 @@ class UrlTest extends PHPUnit_Framework_TestCase
|
|||
{
|
||||
$ref = 'http://username:password@hostname:9090/path'
|
||||
.'?arg1=value1&arg2=value2#anchor';
|
||||
$this->assertEquals($ref, new Url($ref));
|
||||
$url = new Url($ref);
|
||||
$this->assertEquals($ref, $url->toString());
|
||||
}
|
||||
|
||||
/**
|
Loading…
Add table
Add a link
Reference in a new issue