Completed
Push — master ( 036b0a...0ab8bd )
by Garion
15s queued 11s
created

testSetDefaultRegisteredMethodThrowsExceptionWhenSettingSomeoneElsesMethodAsDefault()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 11
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
cc 1
eloc 6
c 1
b 0
f 1
nc 1
nop 0
dl 0
loc 11
rs 10
1
<?php
2
3
namespace SilverStripe\MFA\Tests\Extension;
4
5
use SilverStripe\Dev\SapphireTest;
6
use SilverStripe\MFA\BackupCode\Method;
7
use SilverStripe\MFA\Extension\MemberExtension;
8
use SilverStripe\MFA\Service\RegisteredMethodManager;
9
use SilverStripe\Security\Member;
10
11
class MemberExtensionTest extends SapphireTest
12
{
13
    protected static $fixture_file = 'MemberExtensionTest.yml';
14
15
    public function testAdminUserCanViewButNotEditOthersMFAConfig()
16
    {
17
        /** @var Member&MemberExtension $targetMember */
18
        $targetMember = $this->objFromFixture(Member::class, 'squib');
19
20
        $this->logInAs('admin');
21
22
        $this->assertTrue($targetMember->currentUserCanViewMFAConfig(), 'Can View');
23
        $this->assertFalse($targetMember->currentUserCanEditMFAConfig(), 'Can Edit');
24
    }
25
26
    public function testAdminUserCanViewAndEditTheirOwnMFAConfig()
27
    {
28
        /** @var Member&MemberExtension $targetMember */
29
        $targetMember = $this->objFromFixture(Member::class, 'admin');
30
31
        $this->logInAs($targetMember);
32
33
        $this->assertTrue($targetMember->currentUserCanViewMFAConfig(), 'Can View');
34
        $this->assertTrue($targetMember->currentUserCanEditMFAConfig(), 'Can Edit');
35
    }
36
37
    public function testStandardUserCannotViewOrEditOthersMFAConfig()
38
    {
39
        /** @var Member&MemberExtension $targetMember */
40
        $targetMember = $this->objFromFixture(Member::class, 'admin');
41
42
        $this->logInAs('squib');
43
44
        $this->assertFalse($targetMember->currentUserCanViewMFAConfig(), 'Can View');
45
        $this->assertFalse($targetMember->currentUserCanEditMFAConfig(), 'Can Edit');
46
    }
47
48
    public function testStandardUserCanViewAndEditTheirOwnMFAConfig()
49
    {
50
        /** @var Member&MemberExtension $targetMember */
51
        $targetMember = $this->objFromFixture(Member::class, 'squib');
52
53
        $this->logInAs($targetMember);
54
55
        $this->assertTrue($targetMember->currentUserCanViewMFAConfig(), 'Can View');
56
        $this->assertTrue($targetMember->currentUserCanEditMFAConfig(), 'Can Edit');
57
    }
58
59
    /**
60
     * @expectedException \SilverStripe\MFA\Exception\InvalidMethodException
61
     * @expectedExceptionMessage The provided method does not belong to this member
62
     */
63
    public function testSetDefaultRegisteredMethodThrowsExceptionWhenSettingSomeoneElsesMethodAsDefault()
64
    {
65
        /** @var Member&MemberExtension $targetMember */
66
        $targetMember = $this->objFromFixture(Member::class, 'admin');
67
        $method = new Method();
68
        RegisteredMethodManager::singleton()->registerForMember($targetMember, $method, ['foo' => 'bar']);
69
        $registeredMethod = RegisteredMethodManager::singleton()->getFromMember($targetMember, $method);
70
71
        /** @var Member&MemberExtension $anotherMember */
72
        $anotherMember = $this->objFromFixture(Member::class, 'squib');
73
        $anotherMember->setDefaultRegisteredMethod($registeredMethod);
74
    }
75
}
76