Passed
Pull Request — master (#13)
by Simon
02:01
created

YubikeyAuthProviderTest::setUp()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 5
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 2
nc 1
nop 0
1
<?php
2
3
namespace Firesphere\YubiAuth\Tests;
4
5
use Firesphere\YubiAuth\Providers\YubikeyAuthProvider;
6
use SilverStripe\Core\Config\Config;
7
use SilverStripe\Core\Injector\Injector;
8
use SilverStripe\Dev\Debug;
9
use SilverStripe\Dev\SapphireTest;
10
use SilverStripe\ORM\ValidationResult;
11
use SilverStripe\Security\Member;
12
13
class YubikeyAuthProviderTest extends SapphireTest
14
{
15
16
    protected static $fixture_file = '../fixtures/Member.yml';
17
18
    /**
19
     * @var YubikeyAuthProvider
20
     */
21
    protected $provider;
22
23
    protected function setUp()
24
    {
25
        $this->provider = Injector::inst()->get(YubikeyAuthProvider::class);
26
27
        return parent::setUp();
28
    }
29
30
    public function testCheckNoYubikeyDaysZero()
31
    {
32
        Config::modify()->set(YubikeyAuthProvider::class, 'MaxNoYubiLoginDays', 0);
33
        /** @var Member $member */
34
        $member = Member::get()->filter(['Email' => '[email protected]'])->first();
35
        $member->Created = date('Y-m-d', strtotime('-1 year'));
36
        $member->YubiAuthEnabled = false;
37
        $member->write();
38
39
        $result = $this->provider->checkNoYubiDays($member);
40
        $this->assertInstanceOf(Member::class, $result);
41
    }
42
43
    public function testCheckNoYubikeyDaysError()
44
    {
45
        /** @var Member $member */
46
        $member = Member::get()->filter(['Email' => '[email protected]'])->first();
47
        $member->Created = date('Y-m-d', strtotime('-1 year'));
48
        $member->YubiAuthEnabled = false;
49
        $member->write();
50
51
        $result = $this->provider->checkNoYubiDays($member);
52
        $this->assertInstanceOf(ValidationResult::class, $result);
53
    }
54
55
    public function testValidateYubikeyDuplicate()
56
    {
57
        $member1 = Member::create(['Email' => '[email protected]', 'Yubikey' => '1234567890']);
58
        $member1->write();
59
        $member2 = Member::create(['Email' => '[email protected]', 'Yubikey' => '1234567890']);
60
        $member2->write();
61
62
        $result = $this->provider->validateYubikey($member1, '1234567890');
63
64
        $this->assertInstanceOf(ValidationResult::class, $result);
65
        $this->assertFalse($result->isValid());
66
    }
67
68
    public function testValidateYubikeyID()
69
    {
70
        $member1 = Member::create(['Email' => '[email protected]', 'Yubikey' => '0987654321']);
71
        $member1->write();
72
        $member2 = Member::create(['Email' => '[email protected]', 'Yubikey' => '1234567890']);
73
        $member2->write();
74
75
        $result = $this->provider->validateYubikey($member1, '1234567890');
76
77
        $this->assertInstanceOf(ValidationResult::class, $result);
78
        $this->assertFalse($result->isValid());
79
    }
80
81
    public function testValidateYubikeyNotMatchesMember()
82
    {
83
        $member1 = Member::create(['Email' => '[email protected]', 'Yubikey' => '0987654321']);
84
        $member1->write();
85
86
        $result = $this->provider->validateYubikey($member1, '12344567890');
87
88
        $this->assertInstanceOf(ValidationResult::class, $result);
89
        $this->assertFalse($result->isValid());
90
    }
91
92
    public function testValidateYubikeyUnique()
93
    {
94
        $member1 = Member::create(['Email' => '[email protected]', 'Yubikey' => 'abcdefghij']);
95
        $member1->write();
96
        $member2 = Member::create(['Email' => '[email protected]', 'Yubikey' => '1234567890']);
97
        $member2->write();
98
99
        $result = $this->provider->validateYubikey($member1, 'abcdefghij');
100
101
        Debug::dump($result->getMessages());
102
        $this->assertInstanceOf(ValidationResult::class, $result);
103
        $this->assertTrue($result->isValid());
104
    }
105
}
106