1
|
|
|
<?php declare(strict_types=1); |
2
|
|
|
|
3
|
|
|
namespace SilverStripe\MFA\Service; |
4
|
|
|
|
5
|
|
|
use SilverStripe\Dev\SapphireTest; |
6
|
|
|
use SilverStripe\MFA\Tests\Service\BackupCodeGeneratorTest\MockHashExtension; |
7
|
|
|
|
8
|
|
|
class BackupCodeGeneratorTest extends SapphireTest |
9
|
|
|
{ |
10
|
|
|
protected static $required_extensions = [ |
11
|
|
|
BackupCodeGenerator::class => [ |
12
|
|
|
MockHashExtension::class, |
13
|
|
|
], |
14
|
|
|
]; |
15
|
|
|
|
16
|
|
|
protected function setUp() |
17
|
|
|
{ |
18
|
|
|
parent::setUp(); |
19
|
|
|
|
20
|
|
|
BackupCodeGenerator::config() |
21
|
|
|
->set('backup_code_count', 3) |
22
|
|
|
->set('backup_code_length', 6); |
23
|
|
|
} |
24
|
|
|
|
25
|
|
|
public function testHash() |
26
|
|
|
{ |
27
|
|
|
$generator = new BackupCodeGenerator(); |
28
|
|
|
$result = $generator->hash('hello world'); |
29
|
|
|
$this->assertSame('dlrow olleh', $result); |
30
|
|
|
} |
31
|
|
|
|
32
|
|
|
public function testGenerate() |
33
|
|
|
{ |
34
|
|
|
$generator = new BackupCodeGenerator(); |
35
|
|
|
$result = $generator->generate(); |
36
|
|
|
|
37
|
|
|
$this->assertCount(3, $result, 'Expected number of codes are generated'); |
38
|
|
|
foreach ($result as $code => $hash) { |
39
|
|
|
$this->assertSame(6, strlen($code), 'Generated codes are of configured length'); |
40
|
|
|
$this->assertSame(strrev($code), $hash, 'Mock hashing method is used and hash is returned'); |
41
|
|
|
} |
42
|
|
|
} |
43
|
|
|
} |
44
|
|
|
|