Completed
Push — master ( aba493...5356ed )
by Ruud
315:38 queued 305:00
created

Helper/Security/Acl/Permission/MaskBuilderTest.php (1 issue)

Checks whether return doc types can be made more specific.

Documentation Informational

Upgrade to new PHP Analysis Engine

These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more

1
<?php
2
3
namespace Kunstmaan\AdminBundle\Tests\Helper\Security\Acl\Permission;
4
5
use Exception;
6
use Kunstmaan\AdminBundle\Helper\Security\Acl\Permission\MaskBuilder;
7
use PHPUnit\Framework\TestCase;
8
9
/**
10
 * MaskBuilderTest
11
 */
12
class MaskBuilderTest extends TestCase
13
{
14
    /**
15
     * @param mixed $invalidMask
16
     *
17
     * @expectedException \InvalidArgumentException
18
     * @dataProvider getInvalidConstructorData
19
     */
20
    public function testSlugify($invalidMask)
21
    {
22
        new MaskBuilder($invalidMask);
23
    }
24
25
    public function testGetCodeThrowsException()
26
    {
27
        $this->expectException(Exception::class);
28
        $builder = new MaskBuilder();
29
        $builder->getCode(MaskBuilder::MASK_IDDQD);
30
    }
31
32
    public function testResolveMaskThrowsException()
33
    {
34
        $this->expectException(Exception::class);
35
        $builder = new MaskBuilder();
36
        $builder->resolveMask('fail!');
37
    }
38
39
    /**
40
     * Provides data to the {@link testSlugify} function
41
     *
42
     * @return array
0 ignored issues
show
Consider making the return type a bit more specific; maybe use array[].

This check looks for the generic type array as a return type and suggests a more specific type. This type is inferred from the actual code.

Loading history...
43
     */
44
    public function getInvalidConstructorData()
45
    {
46
        return array(
47
            array(234.463),
48
            array('asdgasdf'),
49
            array(array()),
50
            array(new \stdClass()),
51
        );
52
    }
53
54
    public function testConstructorWithoutArguments()
55
    {
56
        $builder = new MaskBuilder();
57
58
        $this->assertEquals(0, $builder->get());
59
    }
60
61
    public function testConstructor()
62
    {
63
        $builder = new MaskBuilder(123456);
64
65
        $this->assertEquals(123456, $builder->get());
66
    }
67
68
    public function testAddAndRemove()
69
    {
70
        $builder = new MaskBuilder();
71
72
        $builder
73
            ->add('view')
74
            ->add('eDiT')
75
            ->add('puBLisH');
76
        $mask = $builder->get();
77
78
        $this->assertEquals(MaskBuilder::MASK_VIEW, $mask & MaskBuilder::MASK_VIEW);
79
        $this->assertEquals(MaskBuilder::MASK_EDIT, $mask & MaskBuilder::MASK_EDIT);
80
        $this->assertEquals(MaskBuilder::MASK_PUBLISH, $mask & MaskBuilder::MASK_PUBLISH);
81
        $this->assertEquals(0, $mask & MaskBuilder::MASK_DELETE);
82
        $this->assertEquals(0, $mask & MaskBuilder::MASK_UNPUBLISH);
83
84
        $builder->remove('edit')->remove('PUblish');
85
        $mask = $builder->get();
86
        $this->assertEquals(0, $mask & MaskBuilder::MASK_EDIT);
87
        $this->assertEquals(0, $mask & MaskBuilder::MASK_PUBLISH);
88
        $this->assertEquals(MaskBuilder::MASK_VIEW, $mask & MaskBuilder::MASK_VIEW);
89
    }
90
91
    public function testGetPattern()
92
    {
93
        $builder = new MaskBuilder();
94
        $this->assertEquals(MaskBuilder::ALL_OFF, $builder->getPattern());
95
96
        $builder->add('view');
97
        $this->assertEquals(str_repeat('.', 31).'V', $builder->getPattern());
98
99
        $builder->add('publish');
100
        $this->assertEquals(str_repeat('.', 27).'P...V', $builder->getPattern());
101
102
        $builder->add(1 << 10);
103
        $this->assertEquals(str_repeat('.', 21).MaskBuilder::ON.'.....P...V', $builder->getPattern());
104
    }
105
106
    public function testReset()
107
    {
108
        $builder = new MaskBuilder();
109
        $this->assertEquals(0, $builder->get());
110
111
        $builder->add('view');
112
        $this->assertTrue($builder->get() > 0);
113
114
        $builder->reset();
115
        $this->assertEquals(0, $builder->get());
116
    }
117
118
    /**
119
     * @expectedException \InvalidArgumentException
120
     */
121
    public function testAddWithInvalidMask()
122
    {
123
        $builder = new MaskBuilder();
124
        $builder->add(null);
125
    }
126
127
    /**
128
     * @expectedException \InvalidArgumentException
129
     */
130
    public function testRemoveWithInvalidMask()
131
    {
132
        $builder = new MaskBuilder();
133
        $builder->remove(null);
134
    }
135
136
    public function testGetCode()
137
    {
138
        $code = MaskBuilder::getCode(MaskBuilder::MASK_DELETE);
139
        $this->assertEquals(MaskBuilder::CODE_DELETE, $code);
140
141
        $code = MaskBuilder::getCode(MaskBuilder::MASK_UNPUBLISH);
142
        $this->assertEquals(MaskBuilder::CODE_UNPUBLISH, $code);
143
    }
144
145
    /**
146
     * @expectedException \InvalidArgumentException
147
     */
148
    public function testGetCodeWithInvalidMask()
149
    {
150
        MaskBuilder::getCode(null);
151
    }
152
153
    public function testHas()
154
    {
155
        $builder = new MaskBuilder();
156
        $builder->add('edit')
157
            ->add('view');
158
159
        $this->assertEquals(true, $builder->has(MaskBuilder::MASK_EDIT));
160
        $this->assertEquals(true, $builder->has('view'));
161
        $this->assertEquals(false, $builder->has(MaskBuilder::MASK_UNPUBLISH));
162
        $this->assertEquals(false, $builder->has('publish'));
163
    }
164
165
    /**
166
     * @expectedException \InvalidArgumentException
167
     */
168
    public function testHasWithInvalidMask()
169
    {
170
        $builder = new MaskBuilder();
171
        $builder->add('edit')
172
            ->add('view');
173
174
        $builder->has(null);
175
    }
176
}
177