Completed
Push — master ( 91fdab...75a7b9 )
by
unknown
13:37
created

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

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 PHPUnit_Framework_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
}
178