mirror of
https://github.com/phpbb/phpbb.git
synced 2025-01-19 07:08:09 +01:00
[feature/passwords] Increase test coverage to 100% of methods
Obsolete code that is impossible to hit has been removed and the logic of the salted md5 driver has been changed to correctly implement the phpBB 3.0 phpbb_hash() function. PHPBB3-11610
This commit is contained in:
parent
cd74fb0946
commit
fdf9ae7c18
@ -41,7 +41,13 @@ class salted_md5 extends \phpbb\passwords\driver\base
|
||||
{
|
||||
if (($settings = $this->get_hash_settings($setting)) === false)
|
||||
{
|
||||
return false;
|
||||
// Return md5 of password if settings do not
|
||||
// comply with our standards. This will only
|
||||
// happen if pre-determined settings are
|
||||
// directly passed to the driver. The manager
|
||||
// will not do this. Same as the old hashing
|
||||
// implementatio in phpBB 3.0
|
||||
return md5($password);
|
||||
}
|
||||
}
|
||||
else
|
||||
@ -59,13 +65,7 @@ class salted_md5 extends \phpbb\passwords\driver\base
|
||||
$output = $settings['full'];
|
||||
$output .= $this->helper->hash_encode64($hash, 16);
|
||||
|
||||
if (strlen($output) == 34)
|
||||
{
|
||||
return $output;
|
||||
}
|
||||
|
||||
// Should we really just return the md5 of the password? O.o
|
||||
return md5($password);
|
||||
return $output;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -149,17 +149,28 @@ class phpbb_passwords_manager_test extends PHPUnit_Framework_TestCase
|
||||
$this->assertEquals($expected, $this->manager->check($password, $hash));
|
||||
}
|
||||
|
||||
public function test_hash_password_length()
|
||||
public function data_hash_password_length()
|
||||
{
|
||||
foreach ($this->passwords_drivers as $driver)
|
||||
{
|
||||
$this->assertEquals(false, $driver->hash('foobar', 'foobar'));
|
||||
}
|
||||
return array(
|
||||
array('passwords.driver.bcrypt', false),
|
||||
array('passwords.driver.bcrypt_2y', false),
|
||||
array('passwords.driver.salted_md5', '3858f62230ac3c915f300c664312c63f'),
|
||||
array('passwords.driver.phpass', '3858f62230ac3c915f300c664312c63f'),
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider data_hash_password_length
|
||||
*/
|
||||
public function test_hash_password_length($driver, $expected)
|
||||
{
|
||||
$this->assertEquals($expected, $this->passwords_drivers[$driver]->hash('foobar', 'foobar'));
|
||||
}
|
||||
|
||||
public function test_hash_password_8bit_bcrypt()
|
||||
{
|
||||
$this->assertEquals(false, $this->manager->hash('foobar𝄞', 'passwords.driver.bcrypt'));
|
||||
$this->assertNotEquals(false, $this->manager->hash('foobar𝄞', 'passwords.driver.bcrypt_2y'));
|
||||
}
|
||||
|
||||
public function test_combined_hash_data()
|
||||
|
Loading…
x
Reference in New Issue
Block a user