diff --git a/tests/GeneratePasswordTest.php b/tests/GeneratePasswordTest.php new file mode 100644 index 00000000..adbf5062 --- /dev/null +++ b/tests/GeneratePasswordTest.php @@ -0,0 +1,21 @@ +assertNotEquals($one, $two); + $this->assertNotEmpty($one); + $this->assertNotEmpty($two); + + + } +} diff --git a/tests/PacryptTest.php b/tests/PacryptTest.php index 55bb86e2..c8d02263 100644 --- a/tests/PacryptTest.php +++ b/tests/PacryptTest.php @@ -2,8 +2,10 @@ require_once('common.php'); -class PaCryptTest extends PHPUnit_Framework_TestCase { - public function testMd5Crypt() { +class PaCryptTest extends PHPUnit_Framework_TestCase +{ + public function testMd5Crypt() + { $hash = _pacrypt_md5crypt('test', ''); $this->assertNotEmpty($hash); @@ -12,19 +14,21 @@ class PaCryptTest extends PHPUnit_Framework_TestCase { $this->assertEquals($hash, _pacrypt_md5crypt('test', $hash)); } - public function testCrypt() { + public function testCrypt() + { // E_NOTICE if we pass in '' for the salt $hash = _pacrypt_crypt('test', 'sa'); - $this->assertNotEmpty($hash); $this->assertNotEquals('test', $hash); $this->assertEquals($hash, _pacrypt_crypt('test', $hash)); + } - public function testMySQLEncrypt() { + public function testMySQLEncrypt() + { if (!db_mysql()) { $this->markTestSkipped('Not using MySQL'); } @@ -35,7 +39,7 @@ class PaCryptTest extends PHPUnit_Framework_TestCase { $this->assertNotEquals('test', $hash); $this->assertEquals($hash, _pacrypt_mysql_encrypt('test', $hash)); - + $hash2 = _pacrypt_mysql_encrypt('test', 'salt'); $this->assertNotEmpty($hash2); @@ -44,14 +48,15 @@ class PaCryptTest extends PHPUnit_Framework_TestCase { $this->assertEquals($hash2, _pacrypt_mysql_encrypt('test', 'salt')); } - public function testAuthlib() { - + public function testAuthlib() + { + // too many options! foreach ( ['md5raw' => '098f6bcd4621d373cade4e832627b4f6', - 'md5' => 'CY9rzUYh03PK3k6DJie09g==', - // crypt requires salt ... - 'SHA' => 'qUqP5cyxm6YcTAhz05Hph5gvu9M='] as $flavour => $hash) { + 'md5' => 'CY9rzUYh03PK3k6DJie09g==', + // crypt requires salt ... + 'SHA' => 'qUqP5cyxm6YcTAhz05Hph5gvu9M='] as $flavour => $hash) { $CONF['authlib_default_flavour'] = $flavour; $stored = "{" . $flavour . "}$hash"; @@ -62,7 +67,8 @@ class PaCryptTest extends PHPUnit_Framework_TestCase { } } - public function testPacryptDovecot() { + public function testPacryptDovecot() + { global $CONF; if (!file_exists('/usr/bin/doveadm')) { $this->markTestSkipped("No /usr/bin/doveadm"); @@ -77,6 +83,40 @@ class PaCryptTest extends PHPUnit_Framework_TestCase { $this->assertEquals($expected_hash, _pacrypt_dovecot('test', $expected_hash)); } + + public function testPhpCrypt() + { + global $CONF; + + $config = Config::getInstance(); + Config::write('encrypt', 'php_crypt:MD5'); + + + $CONF = Config::getInstance()->getAll(); + + $expected = '$1$z2DG4z9d$jBu3Cl3BPQZrkNqnflnSO.'; + + $enc = _pacrypt_php_crypt('foo', $expected); + + $this->assertEquals($enc, $expected); + + $fail = _pacrypt_php_crypt('bar', $expected); + + + $this->assertNotEquals($fail, $expected); + + } + + public function testPhpCryptRandomString(){ + $str1 = _php_crypt_random_string('abcdefg123456789', 2); + $str2 = _php_crypt_random_string('abcdefg123456789', 2); + + $this->assertNotEmpty($str1); + $this->assertNotEmpty($str2); + $this->assertNotEquals($str1, $str2); + + + } } /* vim: set expandtab softtabstop=4 tabstop=4 shiftwidth=4: */ diff --git a/tests/ValidatePasswordTest.php b/tests/ValidatePasswordTest.php new file mode 100644 index 00000000..94d06f49 --- /dev/null +++ b/tests/ValidatePasswordTest.php @@ -0,0 +1,25 @@ + '$PALANG key (optional: + parameter)', + '/.{5}/' => 'password_too_short 5', # minimum length 5 characters + '/([a-zA-Z].*){3}/' => 'password_no_characters 3', # must contain at least 3 characters + '/([0-9].*){2}/' => 'password_no_digits 2', # must contain at least 2 digits + )); + + $this->assertEmpty(validate_password('fishSheep01')); + $this->assertEmpty(validate_password('Password01')); + $this->assertNotEmpty(validate_password('pas')); // notEmpty == fail + $this->assertNotEmpty(validate_password('pa1')); + } +}