X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=tests%2FUtilsTest.php;h=7f218ad5633482cf2cafc11bb70d2df27bca60ea;hb=38bedfbbcdd2a40e9f04f5753e0fd6f4fd513c21;hp=bbba99f2b686bfc6f36f7480cfb2a0a15b2881d1;hpb=ca74886f30da323f42aa4bd70461003f46ef299b;p=github%2Fshaarli%2FShaarli.git diff --git a/tests/UtilsTest.php b/tests/UtilsTest.php old mode 100644 new mode 100755 index bbba99f2..7f218ad5 --- a/tests/UtilsTest.php +++ b/tests/UtilsTest.php @@ -4,12 +4,28 @@ */ 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 */ @@ -74,5 +90,130 @@ class UtilsTest extends PHPUnit_Framework_TestCase $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')); + } + + /** + * 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')); + } + + /** + * Check supported PHP versions + */ + public function testCheckSupportedPHPVersion() + { + $minVersion = '5.3'; + checkPHPVersion($minVersion, '5.4.32'); + checkPHPVersion($minVersion, '5.5'); + checkPHPVersion($minVersion, '5.6.10'); + } + + /** + * Check a unsupported PHP version + * @expectedException Exception + * @expectedExceptionMessageRegExp /Your PHP version is obsolete/ + */ + public function testCheckSupportedPHPVersion51() + { + checkPHPVersion('5.3', '5.1.0'); + } + + /** + * Check another unsupported PHP version + * @expectedException Exception + * @expectedExceptionMessageRegExp /Your PHP version is obsolete/ + */ + public function testCheckSupportedPHPVersion52() + { + checkPHPVersion('5.3', '5.2'); + } + + /** + * 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=') + ); + } } -?>