4 require_once($CFG->dirroot . '/lib/password_compat/lib/password.php');
6 class PasswordHashTest extends PHPUnit_Framework_TestCase {
8 public function testFuncExists() {
9 $this->assertTrue(function_exists('password_hash'));
12 public function testStringLength() {
13 $this->assertEquals(60, strlen(password_hash('foo', PASSWORD_BCRYPT)));
16 public function testHash() {
17 $hash = password_hash('foo', PASSWORD_BCRYPT);
18 $this->assertEquals($hash, crypt('foo', $hash));
21 public function testKnownSalt() {
22 $hash = password_hash("rasmuslerdorf", PASSWORD_BCRYPT, array("cost" => 7, "salt" => "usesomesillystringforsalt"));
23 $this->assertEquals('$2y$07$usesomesillystringfore2uDLvp1Ii2e./U9C8sBjqp8I90dH6hi', $hash);
26 public function testRawSalt() {
27 $hash = password_hash("test", PASSWORD_BCRYPT, array("salt" => "123456789012345678901" . chr(0)));
28 if (version_compare(PHP_VERSION, '5.5.0', '<')) {
29 $this->assertEquals('$2y$10$KRGxLBS0Lxe3KBCwKxOzLexLDeu0ZfqJAKTubOfy7O/yL2hjimw3u', $hash);
31 $this->assertEquals('$2y$10$MTIzNDU2Nzg5MDEyMzQ1Nej0NmcAWSLR.oP7XOR9HD/vjUuOj100y', $hash);
36 * @expectedException PHPUnit_Framework_Error
38 public function testInvalidAlgo() {
39 password_hash('foo', array());
43 * @expectedException PHPUnit_Framework_Error
45 public function testInvalidAlgo2() {
46 password_hash('foo', 2);
50 * @expectedException PHPUnit_Framework_Error
52 public function testInvalidPassword() {
53 password_hash(array(), 1);
57 * @expectedException PHPUnit_Framework_Error
59 public function testInvalidSalt() {
60 password_hash('foo', PASSWORD_BCRYPT, array('salt' => array()));
64 * @expectedException PHPUnit_Framework_Error
66 public function testInvalidBcryptCostLow() {
67 password_hash('foo', PASSWORD_BCRYPT, array('cost' => 3));
71 * @expectedException PHPUnit_Framework_Error
73 public function testInvalidBcryptCostHigh() {
74 password_hash('foo', PASSWORD_BCRYPT, array('cost' => 32));
78 * @expectedException PHPUnit_Framework_Error
80 public function testInvalidBcryptCostInvalid() {
81 password_hash('foo', PASSWORD_BCRYPT, array('cost' => 'foo'));
85 * @expectedException PHPUnit_Framework_Error
87 public function testInvalidBcryptSaltShort() {
88 password_hash('foo', PASSWORD_BCRYPT, array('salt' => 'abc'));