MemberExtensionTest::setUp()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 10
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 6
nc 1
nop 0
dl 0
loc 10
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace Firesphere\HaveIBeenPwned\Tests;
4
5
use Firesphere\HaveIBeenPwned\Extensions\MemberExtension;
6
use SilverStripe\Core\Injector\Injector;
7
use SilverStripe\Dev\SapphireTest;
8
use SilverStripe\Forms\CheckboxField;
9
use SilverStripe\Forms\ReadonlyField;
10
use SilverStripe\Forms\Tab;
11
use SilverStripe\Security\Member;
12
13
class MemberExtensionTest extends SapphireTest
14
{
15
    /**
16
     * @var Member
17
     */
18
    protected $member;
19
20
    public function testUpdateCMSFields()
21
    {
22
        $fields = $this->member->getCMSFields();
23
24
        $this->assertInstanceOf(ReadonlyField::class, $fields->dataFieldByName('PasswordIsPwnd'));
25
        $this->assertNull($fields->fieldByName('Root.HaveIBeenPwned'));
26
        $this->assertNull(
27
            $fields->findOrMakeTab('Root.HaveIBeenPwned')
28
                ->Fields()
29
                ->fieldByName('Helptext')
30
        );
31
        $this->assertNull($fields->fieldByName('Root.HaveIBeenPwned'));
32
        $this->assertInstanceOf(CheckboxField::class, $fields->dataFieldByName('PwndDisabled'));
33
34
        $this->member->BreachedSites = '000error, test';
35
36
        $fields = $this->member->getCMSFields();
37
38
        /** @var MemberExtension $extension */
39
        $extension = Injector::inst()->get(MemberExtension::class);
40
        $extension->setOwner($this->member);
41
        $extension->updateCMSFields($fields);
42
43
        $this->assertInstanceOf(Tab::class, $fields->fieldByName('Root.HaveIBeenPwned'));
44
        $this->assertInstanceOf(ReadonlyField::class, $fields->dataFieldByName('BreachedSites'));
45
46
        $this->assertNotNull($fields->dataFieldByName('BreachedSites'));
47
        $this->assertContains('If the error says that you "have been Pwnd", ', $fields->forTemplate());
48
        $this->assertEquals('Known breaches', $fields->dataFieldByName('BreachedSites')->Title());
49
50
        $this->assertNotNull(
51
            $fields->findOrMakeTab('Root.HaveIBeenPwned')
52
                ->Fields()
53
                ->fieldByName('Helptext')
54
        );
55
56
        $this->assertContains(
57
            'If the error says that you "have been Pwnd", ',
58
            $fields->findOrMakeTab('Root.HaveIBeenPwned')
59
                ->Fields()
60
                ->fieldByName('Helptext')
61
                ->getContent()
62
        );    }
63
64
    protected function setUp()
65
    {
66
        $this->member = Member::create([
67
            'Email'          => '[email protected]',
68
            'PasswordIsPwnd' => 0,
69
            'Password'       => '1234567890', // I is good password
70
            'BreachedSites'  => ''
71
        ]);
72
73
        return parent::setUp();
74
    }
75
}
76