Passed
Pull Request — master (#32)
by Robbie
02:04
created

SchemaGeneratorTest::testGetSchema()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 22
Code Lines 14

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 14
nc 1
nop 0
dl 0
loc 22
rs 9.7998
c 0
b 0
f 0
1
<?php
2
3
namespace SilverStripe\MFA\Tests\Service;
4
5
use SilverStripe\Dev\SapphireTest;
6
use SilverStripe\MFA\Service\MethodRegistry;
7
use SilverStripe\MFA\Service\SchemaGenerator;
8
use SilverStripe\MFA\Tests\Stub\BasicMath\Method as BasicMathMethod;
9
use SilverStripe\Security\Member;
10
11
class SchemaGeneratorTest extends SapphireTest
12
{
13
    protected static $fixture_file = 'SchemaGeneratorTest.yml';
14
15
    /**
16
     * @var SchemaGenerator
17
     */
18
    protected $generator;
19
20
    protected function setUp()
21
    {
22
        parent::setUp();
23
24
        MethodRegistry::config()->set('methods', [
25
            BasicMathMethod::class,
26
        ]);
27
28
        $this->generator = new SchemaGenerator();
29
    }
30
31
    public function testGetSchema()
32
    {
33
        /** @var Member $member */
34
        $member = $this->objFromFixture(Member::class, 'sally_smith');
35
        $this->logInAs($member);
36
37
        $schema = $this->generator->getSchema($member);
38
39
        $this->assertArrayHasKey('registeredMethods', $schema);
40
        $this->assertNotEmpty($schema['registeredMethods']);
41
        $this->assertSame('backup-codes', $schema['registeredMethods'][0]['urlSegment']);
42
43
        $this->assertArrayHasKey('availableMethods', $schema);
44
        $this->assertNotEmpty($schema['availableMethods']);
45
        $this->assertSame('basic-math', $schema['availableMethods'][0]['urlSegment']);
46
47
        $this->assertArrayHasKey('defaultMethod', $schema);
48
        $this->assertNotEmpty($schema['defaultMethod']);
49
        $this->assertSame('backup-codes', $schema['defaultMethod']);
50
51
        $this->assertArrayHasKey('canSkip', $schema);
52
        $this->assertArrayHasKey('shouldRedirect', $schema);
53
    }
54
}
55