Completed
Push — master ( 2a5db5...7f8ee2 )
by Robbie
11s
created

SubsitesReportTest::testSourceRecords()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
c 0
b 0
f 0
dl 0
loc 4
rs 10
cc 1
eloc 2
nc 1
nop 0
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
            $this->markTestSkipped("Please install Subsites to run this test");
38
        }
39
40
        parent::setUp();
41
42
        $reports = Report::get_reports();
43
        $report = $reports[UserSecurityReport::class];
44
        $this->records = $report->sourceRecords()->toArray();
45
    }
46
47
    public function testSourceRecords()
48
    {
49
        $this->assertNotEmpty($this->records);
50
    }
51
52
    public function testGetMemberGroups()
53
    {
54
55
        // Admin
56
        $admin = $this->objFromFixture(Member::class, 'memberadmin');
57
        $subsites = $admin->SubsiteDescription;
58
        $this->assertContains('TestMainSite', $subsites);
59
        $this->assertContains('TestSubsite1', $subsites);
60
        $this->assertContains('TestSubsite2', $subsites);
61
62
        // Editor
63
        $membereditor = $this->objFromFixture(Member::class, 'membereditor');
64
        $subsites = $membereditor->SubsiteDescription;
65
        $this->assertContains('TestMainSite', $subsites);
66
        $this->assertContains('TestSubsite1', $subsites);
67
        $this->assertContains('TestSubsite2', $subsites);
68
69
        // First User
70
        $membersubsite1 = $this->objFromFixture(Member::class, 'membersubsite1');
71
        $subsites = $membersubsite1->SubsiteDescription;
72
        $this->assertNotContains('TestMainSite', $subsites);
73
        $this->assertContains('TestSubsite1', $subsites);
74
        $this->assertNotContains('TestSubsite2', $subsites);
75
76
        // Second user
77
        $memberallsubsites = $this->objFromFixture(Member::class, 'memberallsubsites');
78
        $subsites = $memberallsubsites->SubsiteDescription;
79
        $this->assertNotContains('TestMainSite', $subsites);
80
        $this->assertContains('TestSubsite1', $subsites);
81
        $this->assertContains('TestSubsite2', $subsites);
82
    }
83
}
84