Completed
Push — master ( 73f5bc...8eee41 )
by
unknown
9s
created

SubsiteAdminTest::setUp()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 2
nc 1
nop 0
dl 0
loc 5
rs 9.4285
c 0
b 0
f 0
1
<?php
2
3
namespace SilverStripe\Subsites\Tests;
4
5
use SilverStripe\CMS\Controllers\CMSMain;
6
use SilverStripe\Control\Director;
7
use SilverStripe\Control\Session;
8
use SilverStripe\Core\Config\Config;
9
use SilverStripe\Security\Member;
10
use SilverStripe\Subsites\Model\Subsite;
11
12
class SubsiteAdminTest extends BaseSubsiteTest
13
{
14
    protected static $fixture_file = 'SubsiteTest.yml';
15
16
    protected function setUp()
17
    {
18
        parent::setUp();
19
20
        Config::modify()->set(Subsite::class, 'write_hostmap', false);
21
    }
22
23
    protected function adminLoggedInSession()
24
    {
25
        return new Session([
26
            'loggedInAs' => $this->idFromFixture(Member::class, 'admin')
27
        ]);
28
    }
29
30
    /**
31
     * Test generation of the view
32
     */
33
    public function testBasicView()
34
    {
35
        $subsite1ID = $this->objFromFixture(Subsite::class, 'domaintest1')->ID;
36
37
        // Open the admin area logged in as admin
38
        $response1 = Director::test('admin/subsites/', null, $this->adminLoggedInSession());
39
40
        // Confirm that this URL gets you the entire page, with the edit form loaded
41
        $response2 = Director::test(
42
            "admin/subsites/SilverStripe-Subsites-Model-Subsite/EditForm/field/SilverStripe-Subsites-Model-Subsite/item/$subsite1ID/edit",
43
            null,
44
            $this->adminLoggedInSession()
45
        );
46
        $this->assertTrue(
47
            strpos($response2->getBody(), 'id="Form_ItemEditForm_ID"') !== false,
48
            'Testing Form_ItemEditForm_ID exists'
49
        );
50
        $this->assertTrue(strpos($response2->getBody(), '<head') !== false, 'Testing <head> exists');
51
    }
52
53
54
    /**
55
     * Test that the main-site user with ADMIN permissions can access all subsites, regardless
56
     * of whether he is in a subsite-specific group or not.
57
     */
58
    public function testMainsiteAdminCanAccessAllSubsites()
59
    {
60
        $this->logInAs('admin');
61
62
        $cmsMain = new CMSMain();
63
        foreach ($cmsMain->Subsites() as $subsite) {
64
            $ids[$subsite->ID] = true;
65
        }
66
67
        $this->assertArrayHasKey(0, $ids, 'Main site accessible');
68
        $this->assertArrayHasKey($this->idFromFixture(Subsite::class, 'main'), $ids, 'Site with no groups inaccesible');
69
        $this->assertArrayHasKey(
70
            $this->idFromFixture(Subsite::class, 'subsite1'),
71
            $ids,
72
            'Subsite1 Template inaccessible'
73
        );
74
        $this->assertArrayHasKey(
75
            $this->idFromFixture(Subsite::class, 'subsite2'),
76
            $ids,
77
            'Subsite2 Template inaccessible'
78
        );
79
    }
80
}
81