Passed
Branch master (acb862)
by Simon
03:16
created

MemberExtensionTest   A

Complexity

Total Complexity 2

Size/Duplication

Total Lines 35
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 17
dl 0
loc 35
rs 10
c 0
b 0
f 0
wmc 2

1 Method

Rating   Name   Duplication   Size   Complexity  
A testUpdateCMSFields() 0 23 1
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->assertNotContains('If the error says that you "have been Pwnd", ', $fields->forTemplate());
26
        $this->assertNull($fields->fieldByName('Root.HaveIBeenPwned'));
27
        $this->assertInstanceOf(CheckboxField::class, $fields->dataFieldByName('PwndDisabled'));
28
29
        $this->member->BreachedSites = '000error, test';
30
31
        $fields = $this->member->getCMSFields();
32
33
        /** @var MemberExtension $extension */
34
        $extension = Injector::inst()->get(MemberExtension::class);
35
        $extension->setOwner($this->member);
36
        $extension->updateCMSFields($fields);
37
38
        $this->assertInstanceOf(Tab::class, $fields->fieldByName('Root.HaveIBeenPwned'));
39
        $this->assertInstanceOf(ReadonlyField::class, $fields->dataFieldByName('BreachedSites'));
40
41
        $this->assertContains('Breached sites', $fields->forTemplate());
42
        $this->assertContains('If the error says that you "have been Pwnd", ', $fields->forTemplate());
43
    }
44
45
    protected function setUp()
46
    {
47
        $this->member = Member::create([
48
            'Email'          => '[email protected]',
49
            'PasswordIsPwnd' => 0,
50
            'Password'       => '1234567890', // I is good password
51
            'BreachedSites'  => ''
52
        ]);
53
54
        return parent::setUp();
55
    }
56
}
57