testAnnotatePermissionChecker()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 6
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 4
nc 1
nop 0
dl 0
loc 6
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace SilverLeague\IDEAnnotator\Tests;
4
5
use SilverLeague\IDEAnnotator\DataObjectAnnotator;
6
use SilverLeague\IDEAnnotator\Helpers\AnnotatePermissionChecker;
7
use SilverStripe\Assets\File;
8
use SilverStripe\Control\Director;
9
use SilverStripe\Core\Config\Config;
10
use SilverStripe\Core\Injector\Injector;
11
use SilverStripe\Dev\SapphireTest;
12
use SilverStripe\ORM\DataObject;
13
14
/**
15
 * Class DataObjectAnnotatorTest
16
 *
17
 * @mixin \PHPUnit_Framework_TestCase
18
 */
19
class AnnotatePermissionCheckerTest extends SapphireTest
20
{
21
22
    /**
23
     * @var AnnotatePermissionChecker $permissionChecker
24
     */
25
    private $permissionChecker = null;
26
27
    /**
28
     * @var MockDataObjectAnnotator
29
     */
30
    private $annotator;
31
32
    /**
33
     * Check if we're enabled
34
     */
35
    public function testIsEnabled()
36
    {
37
        $this->assertTrue($this->permissionChecker->isEnabled());
38
39
        Config::modify()->set(DataObjectAnnotator::class, 'enabled', false);
40
        $this->assertFalse($this->permissionChecker->isEnabled());
41
        // Set everything back to normal
42
        Config::modify()->set(DataObjectAnnotator::class, 'enabled', true);
43
    }
44
45
    public function testAnnotatePermissionChecker()
46
    {
47
        Config::modify()->set(DataObjectAnnotator::class, 'enabled', false);
48
        $this->assertFalse($this->permissionChecker->environmentIsAllowed());
49
        Config::modify()->set(DataObjectAnnotator::class, 'enabled', true);
50
        $this->assertTrue($this->permissionChecker->environmentIsAllowed());
51
    }
52
53
    /**
54
     * Test is a module name is in the @Config enabled_modules
55
     * and will be seen as allowed or disallowed correctly
56
     */
57
    public function testModuleIsAllowed()
58
    {
59
        $this->assertFalse($this->permissionChecker->moduleIsAllowed('framework'));
60
        $this->assertTrue($this->permissionChecker->moduleIsAllowed('mysite'));
61
        $this->assertTrue($this->permissionChecker->moduleIsAllowed('app'));
62
        $this->assertTrue($this->permissionChecker->moduleIsAllowed('silverleague/ideannotator'));
63
    }
64
65
    /**
66
     * Test if a DataObject is in an allowed module name
67
     * and will be seen as allowed or disallowed correctly
68
     */
69
    public function testDataObjectIsAllowed()
70
    {
71
        $this->assertTrue($this->permissionChecker->classNameIsAllowed(Team::class));
72
        $this->assertTrue($this->permissionChecker->classNameIsAllowed(Team_Extension::class));
73
74
        $this->assertFalse($this->permissionChecker->classNameIsAllowed(DataObject::class));
75
        $this->assertFalse($this->permissionChecker->classNameIsAllowed(File::class));
76
77
        Config::modify()->remove(DataObjectAnnotator::class, 'enabled_modules');
78
        Config::modify()->set(DataObjectAnnotator::class, 'enabled_modules', ['mysite', 'app']);
79
80
        $this->assertFalse($this->permissionChecker->classNameIsAllowed(Team::class));
81
    }
82
83
    protected function tearDown(): void
84
    {
85
        parent::tearDown();
86
    }
87
88
    /**
89
     * Setup Defaults
90
     */
91
    protected function setUp(): void
92
    {
93
        parent::setUp();
94
        Config::modify()->set(Director::class, 'environment_type', 'dev');
95
        Config::modify()->set(DataObjectAnnotator::class, 'enabled', true);
96
        Config::modify()->set(DataObjectAnnotator::class, 'enabled_modules', ['silverleague/ideannotator', 'mysite', 'app']);
97
98
        Config::modify()->merge(Team::class, 'extensions', [Team_Extension::class]);
99
100
        $this->annotator = Injector::inst()->get(MockDataObjectAnnotator::class);
101
        $this->permissionChecker = Injector::inst()->get(AnnotatePermissionChecker::class);
102
    }
103
}
104