SubsitesReportTest   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 67
Duplicated Lines 0 %

Coupling/Cohesion

Components 2
Dependencies 2

Importance

Changes 0
Metric Value
wmc 4
lcom 2
cbo 2
dl 0
loc 67
rs 10
c 0
b 0
f 0

3 Methods

Rating   Name   Duplication   Size   Complexity  
A setUp() 0 15 2
A testSourceRecords() 0 4 1
A testGetMemberGroups() 0 31 1
1
<?php
2
3
namespace SilverStripe\SecurityReport\Tests;
4
5
use SilverStripe\Dev\SapphireTest;
6
use SilverStripe\Reports\Report;
7
use SilverStripe\Security\Member;
8
use SilverStripe\SecurityReport\MemberReportExtension;
9
use SilverStripe\SecurityReport\Subsites\SubsiteMemberReportExtension;
10
use SilverStripe\SecurityReport\UserSecurityReport;
11
use SilverStripe\Subsites\Model\Subsite;
12
13
/**
14
 * User Security Report Tests.
15
 *
16
 * @author Damian Mooyman <[email protected]>
17
 */
18
class SubsitesReportTest extends SapphireTest
19
{
20
21
    protected static $fixture_file = 'SubsitesReportTest.yml';
22
23
    protected $records;
24
25
    protected static $required_extensions = [
26
        Member::class => [
27
            MemberReportExtension::class,
28
            SubsiteMemberReportExtension::class,
29
        ],
30
    ];
31
32
    protected function setUp()
33
    {
34
        if (!class_exists(Subsite::class)) {
35
            // Don't break the parent:setUp() when failing to create Subsite fixtures
36
            static::$fixture_file = null;
37
            parent::setUp();
38
            $this->markTestSkipped("Please install Subsites to run this test");
39
        }
40
41
        parent::setUp();
42
43
        $reports = Report::get_reports();
44
        $report = $reports[UserSecurityReport::class];
45
        $this->records = $report->sourceRecords()->toArray();
46
    }
47
48
    public function testSourceRecords()
49
    {
50
        $this->assertNotEmpty($this->records);
51
    }
52
53
    public function testGetMemberGroups()
54
    {
55
56
        // Admin
57
        $admin = $this->objFromFixture(Member::class, 'memberadmin');
58
        $subsites = $admin->SubsiteDescription;
59
        $this->assertContains('TestMainSite', $subsites);
60
        $this->assertContains('TestSubsite1', $subsites);
61
        $this->assertContains('TestSubsite2', $subsites);
62
63
        // Editor
64
        $membereditor = $this->objFromFixture(Member::class, 'membereditor');
65
        $subsites = $membereditor->SubsiteDescription;
66
        $this->assertContains('TestMainSite', $subsites);
67
        $this->assertContains('TestSubsite1', $subsites);
68
        $this->assertContains('TestSubsite2', $subsites);
69
70
        // First User
71
        $membersubsite1 = $this->objFromFixture(Member::class, 'membersubsite1');
72
        $subsites = $membersubsite1->SubsiteDescription;
73
        $this->assertNotContains('TestMainSite', $subsites);
74
        $this->assertContains('TestSubsite1', $subsites);
75
        $this->assertNotContains('TestSubsite2', $subsites);
76
77
        // Second user
78
        $memberallsubsites = $this->objFromFixture(Member::class, 'memberallsubsites');
79
        $subsites = $memberallsubsites->SubsiteDescription;
80
        $this->assertNotContains('TestMainSite', $subsites);
81
        $this->assertContains('TestSubsite1', $subsites);
82
        $this->assertContains('TestSubsite2', $subsites);
83
    }
84
}
85