Passed
Push — master ( 23587f...1016f0 )
by Jan
04:38 queued 10s
created

BackupCodeGeneratorTest::testLengthUpperLimit()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
cc 1
eloc 2
c 1
b 0
f 1
nc 1
nop 0
dl 0
loc 4
rs 10
1
<?php
2
/**
3
 * This file is part of Part-DB (https://github.com/Part-DB/Part-DB-symfony).
4
 *
5
 * Copyright (C) 2019 Jan Böhmer (https://github.com/jbtronics)
6
 *
7
 * This program is free software; you can redistribute it and/or
8
 * modify it under the terms of the GNU General Public License
9
 * as published by the Free Software Foundation; either version 2
10
 * of the License, or (at your option) any later version.
11
 *
12
 * This program is distributed in the hope that it will be useful,
13
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15
 * GNU General Public License for more details.
16
 *
17
 * You should have received a copy of the GNU General Public License
18
 * along with this program; if not, write to the Free Software
19
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
20
 */
21
22
namespace App\Tests\Services\TFA;
23
24
use App\Services\TFA\BackupCodeGenerator;
25
use PHPUnit\Framework\TestCase;
0 ignored issues
show
Bug introduced by
The type PHPUnit\Framework\TestCase was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
26
27
class BackupCodeGeneratorTest extends TestCase
28
{
29
    /**
30
     * Test if an exception is thrown if you are using a too high code length
31
     */
32
    public function testLengthUpperLimit()
33
    {
34
        $this->expectException(\RuntimeException::class);
35
        new BackupCodeGenerator(33, 10);
36
    }
37
38
    /**
39
     * Test if an exception is thrown if you are using a too high code length
40
     */
41
    public function testLengthLowerLimit()
42
    {
43
        $this->expectException(\RuntimeException::class);
44
        new BackupCodeGenerator(4, 10);
45
    }
46
47
48
    public function codeLengthDataProvider()
49
    {
50
        return [[6], [8], [10], [16]];
51
    }
52
53
    /**
54
     * @dataProvider  codeLengthDataProvider
55
     */
56
    public function testGenerateSingleCode(int $code_length)
57
    {
58
        $generator = new BackupCodeGenerator($code_length, 10);
59
        $this->assertRegExp("/^([a-f0-9]){{$code_length}}\$/", $generator->generateSingleCode());
60
    }
61
62
    public function codeCountDataProvider()
63
    {
64
        return [[2], [8], [10]];
65
    }
66
67
    /**
68
     * @dataProvider codeCountDataProvider
69
     */
70
    public function testGenerateCodeSet(int $code_count)
71
    {
72
        $generator = new BackupCodeGenerator(8, $code_count);
73
        $this->assertCount($code_count, $generator->generateCodeSet());
74
    }
75
}
76