mirror of
https://github.com/phpbb/phpbb.git
synced 2025-08-09 18:26:32 +02:00
Merge branch '3.2.x'
* 3.2.x: [ticket/14733] Make sure detect_algorithm() works correctly and add tests [ticket/14733] Extend passwords driver_interface in rehashable_driver_interface [ticket/14733] Use new interface to preserve backwards compatibility [ticket/14733] Use default cost factor in bcrypt constructor [ticket/14733] Support increasing hashing cost factor
This commit is contained in:
@@ -23,8 +23,8 @@ class phpbb_passwords_helper_test extends \phpbb_test_case
|
||||
$php_ext = 'php';
|
||||
|
||||
$this->passwords_drivers = array(
|
||||
'passwords.driver.bcrypt_2y' => new \phpbb\passwords\driver\bcrypt_2y($config, $this->driver_helper),
|
||||
'passwords.driver.bcrypt' => new \phpbb\passwords\driver\bcrypt($config, $this->driver_helper),
|
||||
'passwords.driver.bcrypt_2y' => new \phpbb\passwords\driver\bcrypt_2y($config, $this->driver_helper, 10),
|
||||
'passwords.driver.bcrypt' => new \phpbb\passwords\driver\bcrypt($config, $this->driver_helper, 10),
|
||||
'passwords.driver.salted_md5' => new \phpbb\passwords\driver\salted_md5($config, $this->driver_helper),
|
||||
'passwords.driver.phpass' => new \phpbb\passwords\driver\phpass($config, $this->driver_helper),
|
||||
'passwords.driver.sha1_smf' => new \phpbb\passwords\driver\sha1_smf($config, $this->driver_helper),
|
||||
@@ -413,4 +413,23 @@ class phpbb_passwords_helper_test extends \phpbb_test_case
|
||||
);
|
||||
return strtr($string, $transform);
|
||||
}
|
||||
|
||||
public function data_needs_rehash()
|
||||
{
|
||||
return array(
|
||||
array('passwords.driver.bcrypt_2y', '$2y$10$somerandomhash', false),
|
||||
array('passwords.driver.bcrypt', '$2a$10$somerandomhash', false),
|
||||
array('passwords.driver.salted_md5', 'foobar', false),
|
||||
array('passwords.driver.bcrypt_2y', '$2y$9$somerandomhash', true),
|
||||
array('passwords.driver.bcrypt', '$2a$04$somerandomhash', true),
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider data_needs_rehash
|
||||
*/
|
||||
public function test_needs_rehash($driver, $hash, $expected)
|
||||
{
|
||||
$this->assertSame($this->passwords_drivers[$driver]->needs_rehash($hash), $expected);
|
||||
}
|
||||
}
|
||||
|
@@ -29,8 +29,8 @@ class phpbb_passwords_manager_test extends \phpbb_test_case
|
||||
$php_ext = 'php';
|
||||
|
||||
$this->passwords_drivers = array(
|
||||
'passwords.driver.bcrypt_2y' => new \phpbb\passwords\driver\bcrypt_2y($config, $this->driver_helper),
|
||||
'passwords.driver.bcrypt' => new \phpbb\passwords\driver\bcrypt($config, $this->driver_helper),
|
||||
'passwords.driver.bcrypt_2y' => new \phpbb\passwords\driver\bcrypt_2y($config, $this->driver_helper, 10),
|
||||
'passwords.driver.bcrypt' => new \phpbb\passwords\driver\bcrypt($config, $this->driver_helper, 10),
|
||||
'passwords.driver.salted_md5' => new \phpbb\passwords\driver\salted_md5($config, $this->driver_helper),
|
||||
'passwords.driver.phpass' => new \phpbb\passwords\driver\phpass($config, $this->driver_helper),
|
||||
'passwords.driver.convert_password' => new \phpbb\passwords\driver\convert_password($config, $this->driver_helper),
|
||||
@@ -344,4 +344,54 @@ class phpbb_passwords_manager_test extends \phpbb_test_case
|
||||
{
|
||||
$this->assertSame($expected, $this->driver_helper->string_compare($a, $b));
|
||||
}
|
||||
|
||||
public function data_driver_interface_driver()
|
||||
{
|
||||
return array(
|
||||
array(false, false, false),
|
||||
array(true, false, false),
|
||||
array(true, true, true),
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider data_driver_interface_driver
|
||||
*/
|
||||
public function test_driver_interface_driver($use_new_interface, $needs_rehash, $expected)
|
||||
{
|
||||
if ($use_new_interface)
|
||||
{
|
||||
$test_driver = $this->getMock('\phpbb\passwords\driver\rehashable_driver_interface', array('needs_rehash', 'get_prefix', 'check', 'is_supported', 'is_legacy', 'hash', 'get_settings_only'));
|
||||
$test_driver->method('needs_rehash')
|
||||
->willReturn($needs_rehash);
|
||||
}
|
||||
else
|
||||
{
|
||||
$test_driver = $this->getMock('\phpbb\passwords\driver\driver_interface', array('get_prefix', 'check', 'is_supported', 'is_legacy', 'hash', 'get_settings_only'));
|
||||
}
|
||||
$config = new \phpbb\config\config(array());
|
||||
|
||||
$test_driver->method('is_supported')
|
||||
->willReturn(true);
|
||||
$test_driver->method('get_prefix')
|
||||
->willReturn('$test$');
|
||||
$test_driver->method('check')
|
||||
->with($this->anything())
|
||||
->willReturn(true);
|
||||
$passwords_drivers = array(
|
||||
'passwords.driver.foobar' => $test_driver,
|
||||
'passwords.driver.bcrypt_2y' => new \phpbb\passwords\driver\bcrypt_2y($config, $this->driver_helper, 10),
|
||||
);
|
||||
// Set up another manager
|
||||
$foobar_manager = new \phpbb\passwords\manager($config, $passwords_drivers, $this->helper, array('passwords.driver.foobar'));
|
||||
|
||||
$this->assertTrue($foobar_manager->check('foobar', '$test$somerandomstuff'));
|
||||
$this->assertEquals($expected, $foobar_manager->convert_flag);
|
||||
|
||||
// Should always return true in case a different driver is default
|
||||
$foobar_manager = new \phpbb\passwords\manager($config, $passwords_drivers, $this->helper, array('passwords.driver.bcrypt_2y', 'passwords.driver.foobar'));
|
||||
|
||||
$this->assertTrue($foobar_manager->check('foobar', '$test$somerandomstuff'));
|
||||
$this->assertTrue($foobar_manager->convert_flag);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user