Passed
Push — master ( 0f0ffb...d41875 )
by Simon
01:40
created

MemberExtensionTest::testUpdateCMSFields()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 12
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 12
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 5
nc 1
nop 0
1
<?php
2
3
namespace Firesphere\BootstrapMFA\Tests;
4
5
use Firesphere\BootstrapMFA\Extensions\MemberExtension;
6
use Firesphere\BootstrapMFA\Models\BackupCode;
7
use SilverStripe\Control\Controller;
8
use SilverStripe\Core\Injector\Injector;
9
use SilverStripe\Dev\Debug;
10
use SilverStripe\Dev\SapphireTest;
11
use SilverStripe\Forms\FieldList;
12
use SilverStripe\Forms\Tab;
13
use SilverStripe\Forms\TabSet;
14
use SilverStripe\Security\Member;
15
16
class MemberExtensionTest extends SapphireTest
17
{
18
    protected static $fixture_file = '../fixtures/member.yml';
19
20
    public function testMemberCodesExpired()
21
    {
22
        /** @var Member $member */
23
        $member = $this->objFromFixture(Member::class, 'member1');
24
25
        $member->updateMFA = true;
26
        $member->write();
27
28
        /** @var DataList|BackupCode $codes */
29
        $codes = $member->BackupCodes();
30
31
        $member->updateMFA = true;
32
        $member->write();
33
34
        foreach ($codes as $code) {
35
            /** @var BackupCode $backup */
36
            $backup = BackupCode::get()->byID($code->ID);
37
            $this->assertNull($backup);
38
        }
39
    }
40
41
    public function testMemberCodesNotExpired()
42
    {
43
        /** @var Member $member */
44
        $member = $this->objFromFixture(Member::class, 'member1');
45
46
        $member->updateMFA = true;
47
        $member->write();
48
49
        /** @var DataList|BackupCode $codes */
50
        $codes = $member->BackupCodes();
51
52
        $member->write();
53
54
        foreach ($codes as $code) {
55
            /** @var BackupCode $backup */
56
            $backup = BackupCode::get()->byID($code->ID);
57
            $this->assertNotNull($backup);
58
        }
59
    }
60
61
    public function testUpdateCMSFields()
62
    {
63
        $fields = FieldList::create([TabSet::create('Root')]);
0 ignored issues
show
Bug introduced by
'Root' of type string is incompatible with the type array expected by parameter $args of SilverStripe\View\ViewableData::create(). ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

63
        $fields = FieldList::create([TabSet::create(/** @scrutinizer ignore-type */ 'Root')]);
Loading history...
64
65
        /** @var MemberExtension $extension */
66
        $extension = Injector::inst()->get(MemberExtension::class);
67
68
        // Something something in session
69
        Controller::curr()->getRequest()->getSession()->set('tokens', '123456');
70
        $extension->updateCMSFields($fields);
71
72
        $this->assertNull(Controller::curr()->getRequest()->getSession()->get('tokens'));
73
    }
74
75
    public function testUpdateCMSFieldsNoTokens()
76
    {
77
        $fields = FieldList::create([TabSet::create('Root')]);
0 ignored issues
show
Bug introduced by
'Root' of type string is incompatible with the type array expected by parameter $args of SilverStripe\View\ViewableData::create(). ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

77
        $fields = FieldList::create([TabSet::create(/** @scrutinizer ignore-type */ 'Root')]);
Loading history...
78
79
        $extension = Injector::inst()->get(MemberExtension::class);
80
81
        $extension->updateCMSFields($fields);
82
83
        $this->assertFalse($fields->hasField('BackupTokens'));
84
    }
85
}
86