123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227 |
- <?php
- /**
- * Utilities' tests
- */
- require_once 'application/Utils.php';
- require_once 'tests/utils/ReferenceSessionIdHashes.php';
- // Initialize reference data before PHPUnit starts a session
- ReferenceSessionIdHashes::genAllHashes();
- /**
- * Unitary tests for Shaarli utilities
- */
- class UtilsTest extends PHPUnit_Framework_TestCase
- {
- // Session ID hashes
- protected static $sidHashes = null;
- /**
- * Assign reference data
- */
- public static function setUpBeforeClass()
- {
- self::$sidHashes = ReferenceSessionIdHashes::getHashes();
- }
- /**
- * Represent a link by its hash
- */
- public function testSmallHash()
- {
- $this->assertEquals('CyAAJw', smallHash('http://test.io'));
- $this->assertEquals(6, strlen(smallHash('https://github.com')));
- }
- /**
- * Look for a substring at the beginning of a string
- */
- public function testStartsWithCaseInsensitive()
- {
- $this->assertTrue(startsWith('Lorem ipsum', 'lorem', false));
- $this->assertTrue(startsWith('Lorem ipsum', 'LoReM i', false));
- }
- /**
- * Look for a substring at the beginning of a string (case-sensitive)
- */
- public function testStartsWithCaseSensitive()
- {
- $this->assertTrue(startsWith('Lorem ipsum', 'Lorem', true));
- $this->assertFalse(startsWith('Lorem ipsum', 'lorem', true));
- $this->assertFalse(startsWith('Lorem ipsum', 'LoReM i', true));
- }
- /**
- * Look for a substring at the beginning of a string (Unicode)
- */
- public function testStartsWithSpecialChars()
- {
- $this->assertTrue(startsWith('å!ùµ', 'å!', false));
- $this->assertTrue(startsWith('µ$åù', 'µ$', true));
- }
- /**
- * Look for a substring at the end of a string
- */
- public function testEndsWithCaseInsensitive()
- {
- $this->assertTrue(endsWith('Lorem ipsum', 'ipsum', false));
- $this->assertTrue(endsWith('Lorem ipsum', 'm IpsUM', false));
- }
- /**
- * Look for a substring at the end of a string (case-sensitive)
- */
- public function testEndsWithCaseSensitive()
- {
- $this->assertTrue(endsWith('lorem Ipsum', 'Ipsum', true));
- $this->assertFalse(endsWith('lorem Ipsum', 'ipsum', true));
- $this->assertFalse(endsWith('lorem Ipsum', 'M IPsuM', true));
- }
- /**
- * Look for a substring at the end of a string (Unicode)
- */
- public function testEndsWithSpecialChars()
- {
- $this->assertTrue(endsWith('å!ùµ', 'ùµ', false));
- $this->assertTrue(endsWith('µ$åù', 'åù', true));
- }
- /**
- * Check valid date strings, according to a DateTime format
- */
- public function testCheckValidDateFormat()
- {
- $this->assertTrue(checkDateFormat('Ymd', '20150627'));
- $this->assertTrue(checkDateFormat('Y-m-d', '2015-06-27'));
- }
- /**
- * Check erroneous date strings, according to a DateTime format
- */
- public function testCheckInvalidDateFormat()
- {
- $this->assertFalse(checkDateFormat('Ymd', '2015'));
- $this->assertFalse(checkDateFormat('Y-m-d', '2015-06'));
- $this->assertFalse(checkDateFormat('Ymd', 'DeLorean'));
- }
- /**
- * Test generate location with valid data.
- */
- public function testGenerateLocation() {
- $ref = 'http://localhost/?test';
- $this->assertEquals($ref, generateLocation($ref, 'localhost'));
- $ref = 'http://localhost:8080/?test';
- $this->assertEquals($ref, generateLocation($ref, 'localhost:8080'));
- $ref = '?localreferer#hash';
- $this->assertEquals($ref, generateLocation($ref, 'localhost:8080'));
- }
- /**
- * Test generate location - anti loop.
- */
- public function testGenerateLocationLoop() {
- $ref = 'http://localhost/?test';
- $this->assertEquals('?', generateLocation($ref, 'localhost', array('test')));
- }
- /**
- * Test generate location - from other domain.
- */
- public function testGenerateLocationOut() {
- $ref = 'http://somewebsite.com/?test';
- $this->assertEquals('?', generateLocation($ref, 'localhost'));
- }
- /**
- * Test is_session_id_valid with a valid ID - TEST ALL THE HASHES!
- *
- * This tests extensively covers all hash algorithms / bit representations
- */
- public function testIsAnyHashSessionIdValid()
- {
- foreach (self::$sidHashes as $algo => $bpcs) {
- foreach ($bpcs as $bpc => $hash) {
- $this->assertTrue(is_session_id_valid($hash));
- }
- }
- }
- /**
- * Test is_session_id_valid with a valid ID - SHA-1 hashes
- */
- public function testIsSha1SessionIdValid()
- {
- $this->assertTrue(is_session_id_valid(sha1('shaarli')));
- }
- /**
- * Test is_session_id_valid with a valid ID - SHA-256 hashes
- */
- public function testIsSha256SessionIdValid()
- {
- $this->assertTrue(is_session_id_valid(hash('sha256', 'shaarli')));
- }
- /**
- * Test is_session_id_valid with a valid ID - SHA-512 hashes
- */
- public function testIsSha512SessionIdValid()
- {
- $this->assertTrue(is_session_id_valid(hash('sha512', 'shaarli')));
- }
- /**
- * Test is_session_id_valid with invalid IDs.
- */
- public function testIsSessionIdInvalid()
- {
- $this->assertFalse(is_session_id_valid(''));
- $this->assertFalse(is_session_id_valid(array()));
- $this->assertFalse(
- is_session_id_valid('c0ZqcWF3VFE2NmJBdm1HMVQ0ZHJ3UmZPbTFsNGhkNHI=')
- );
- }
- /**
- * Test text2clickable without a redirector being set.
- */
- public function testText2clickableWithoutRedirector()
- {
- $text = 'stuff http://hello.there/is=someone#here otherstuff';
- $expectedText = 'stuff <a href="http://hello.there/is=someone#here">http://hello.there/is=someone#here</a> otherstuff';
- $processedText = text2clickable($text, '');
- $this->assertEquals($expectedText, $processedText);
- }
- /**
- * Test text2clickable a redirector set.
- */
- public function testText2clickableWithRedirector()
- {
- $text = 'stuff http://hello.there/is=someone#here otherstuff';
- $redirector = 'http://redirector.to';
- $expectedText = 'stuff <a href="'.
- $redirector .
- urlencode('http://hello.there/is=someone#here') .
- '">http://hello.there/is=someone#here</a> otherstuff';
- $processedText = text2clickable($text, $redirector);
- $this->assertEquals($expectedText, $processedText);
- }
- /**
- * Test testSpace2nbsp.
- */
- public function testSpace2nbsp()
- {
- $text = ' Are you thrilled by flags ?'. PHP_EOL .' Really?';
- $expectedText = ' Are you thrilled by flags ?'. PHP_EOL .' Really?';
- $processedText = space2nbsp($text);
- $this->assertEquals($expectedText, $processedText);
- }
- }
|