Passed
Pull Request — master (#91)
by Robbie
01:53
created

BackupCodeGeneratorTest::testGenerate()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 9
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 6
nc 2
nop 0
dl 0
loc 9
rs 10
c 0
b 0
f 0
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