Completed
Push — master ( e81144...a25954 )
by Robbie
15s queued 15s
created

SiteConfigExtensionTest::testSaveEnforceMFA()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 15
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 7
nc 1
nop 0
dl 0
loc 15
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace Firesphere\BootstrapMFA\Tests;
4
5
use Firesphere\BootstrapMFA\Extensions\SiteConfigExtension;
6
use SilverStripe\Dev\SapphireTest;
7
use SilverStripe\Forms\CheckboxField;
8
use SilverStripe\Forms\FieldList;
9
use SilverStripe\ORM\FieldType\DBDatetime;
10
use SilverStripe\SiteConfig\SiteConfig;
11
12
class SiteConfigExtensionTest extends SapphireTest
13
{
14
    public function testUpdateCMSFields()
15
    {
16
        $fields = SiteConfig::current_site_config()->getCMSFields();
17
18
        $this->assertInstanceOf(CheckboxField::class, $fields->dataFieldByName('EnforceMFA'));
19
        $this->assertNull($fields->dataFieldByName('ForceMFA'));
20
21
        $config = SiteConfig::current_site_config();
22
23
        $config->ForceMFA = DBDatetime::now()->Format(DBDatetime::ISO_DATE);
24
25
        $config->write();
26
27
        $fields = SiteConfig::current_site_config()->getCMSFields();
28
29
        $this->assertInstanceOf(CheckboxField::class, $fields->dataFieldByName('EnforceMFA'));
30
        $this->assertContains('MFA enforced since ', $fields->dataFieldByName('EnforceMFA')->getDescription());
31
    }
32
33
    public function testUpdateCheckboxDescription()
34
    {
35
        /** @var SiteConfig|SiteConfigExtension $config */
36
        $config = SiteConfig::current_site_config();
37
        $config->ForceMFA = null;
38
39
        $this->assertNull($config->updateCheckboxDescription());
40
        $this->assertEmpty($config->getCMSFields()->dataFieldByName('EnforceMFA')->getDescription());
41
42
        $config->ForceMFA = DBDatetime::now()->Format(DBDatetime::ISO_DATE);
43
44
        $fields = FieldList::create([
45
            CheckboxField::create(
46
                'EnforceMFA',
47
                _t(self::class . '.ENFORCEMFA', 'Enforce MFA on all users')
48
            )
49
        ]);
50
        $config->updateCheckboxDescription($fields);
51
52
        $this->assertContains('MFA enforced since ', $fields->dataFieldByName('EnforceMFA')->getDescription());
53
    }
54
55
    public function testSaveEnforceMFA()
56
    {
57
        /** @var SiteConfig|SiteConfigExtension $config */
58
        $config = SiteConfig::current_site_config();
59
        $config->ForceMFA = null;
60
61
        $date = DBDatetime::now()->Format(DBDatetime::ISO_DATE);
62
63
        $config->saveEnforceMFA($date);
64
65
        $this->assertEquals($date, $config->ForceMFA);
66
67
        $config->saveEnforceMFA(false);
68
69
        $this->assertNull($config->ForceMFA);
70
    }
71
}
72