SudoModeServiceTest::testCheckWithoutActivation()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 2
c 1
b 0
f 0
nc 1
nop 0
dl 0
loc 4
rs 10
1
<?php
2
3
declare(strict_types=1);
4
5
namespace SilverStripe\SecurityExtensins\Tests\Service;
6
7
use SilverStripe\Control\Session;
8
use SilverStripe\Dev\SapphireTest;
9
use SilverStripe\ORM\FieldType\DBDatetime;
10
use SilverStripe\SecurityExtensions\Service\SudoModeService;
11
12
class SudoModeServiceTest extends SapphireTest
13
{
14
    /**
15
     * @var Session
16
     */
17
    private $session;
18
19
    /**
20
     * @var SudoModeService
21
     */
22
    private $service;
23
24
    protected function setUp()
25
    {
26
        parent::setUp();
27
28
        $this->session = new Session([]);
29
        $this->service = new SudoModeService();
30
31
        DBDatetime::set_mock_now('2019-03-01 12:00:00');
32
        SudoModeService::config()->set('lifetime_minutes', 180);
33
    }
34
35
    public function testCheckWithoutActivation()
36
    {
37
        $this->session->clearAll();
38
        $this->assertFalse($this->service->check($this->session));
39
    }
40
41
    public function testCheckWithLastActivationOutsideLifetimeWindow()
42
    {
43
        // 240 minutes ago
44
        $lastActivated = DBDatetime::now()->getTimestamp() - 240 * 60;
45
        $this->session->set('sudo-mode-last-activated', $lastActivated);
46
        $this->assertFalse($this->service->check($this->session));
47
    }
48
49
    public function testCheckWithLastActivationInsideLifetimeWindow()
50
    {
51
        // 25 minutes ago
52
        $lastActivated = DBDatetime::now()->getTimestamp() - 25 * 60;
53
        $this->session->set('sudo-mode-last-activated', $lastActivated);
54
        $this->assertTrue($this->service->check($this->session));
55
    }
56
57
    public function testActivateAndCheckImmediately()
58
    {
59
        $this->service->activate($this->session);
60
        $this->assertTrue($this->service->check($this->session));
61
    }
62
}
63