summaryrefslogtreecommitdiffstats
path: root/Acl/Tests/Permission/MaskBuilderTest.php
diff options
context:
space:
mode:
Diffstat (limited to 'Acl/Tests/Permission/MaskBuilderTest.php')
-rw-r--r--Acl/Tests/Permission/MaskBuilderTest.php103
1 files changed, 103 insertions, 0 deletions
diff --git a/Acl/Tests/Permission/MaskBuilderTest.php b/Acl/Tests/Permission/MaskBuilderTest.php
new file mode 100644
index 0000000..9ec6538
--- /dev/null
+++ b/Acl/Tests/Permission/MaskBuilderTest.php
@@ -0,0 +1,103 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Security\Acl\Tests\Util;
+
+use Symfony\Component\Security\Acl\Permission\MaskBuilder;
+
+class MaskBuilderTest extends \PHPUnit_Framework_TestCase
+{
+ /**
+ * @expectedException \InvalidArgumentException
+ * @dataProvider getInvalidConstructorData
+ */
+ public function testConstructorWithNonInteger($invalidMask)
+ {
+ new MaskBuilder($invalidMask);
+ }
+
+ public function getInvalidConstructorData()
+ {
+ return array(
+ array(234.463),
+ array('asdgasdf'),
+ array(array()),
+ array(new \stdClass()),
+ );
+ }
+
+ public function testConstructorWithoutArguments()
+ {
+ $builder = new MaskBuilder();
+
+ $this->assertEquals(0, $builder->get());
+ }
+
+ public function testConstructor()
+ {
+ $builder = new MaskBuilder(123456);
+
+ $this->assertEquals(123456, $builder->get());
+ }
+
+ public function testAddAndRemove()
+ {
+ $builder = new MaskBuilder();
+
+ $builder
+ ->add('view')
+ ->add('eDiT')
+ ->add('ownEr')
+ ;
+ $mask = $builder->get();
+
+ $this->assertEquals(MaskBuilder::MASK_VIEW, $mask & MaskBuilder::MASK_VIEW);
+ $this->assertEquals(MaskBuilder::MASK_EDIT, $mask & MaskBuilder::MASK_EDIT);
+ $this->assertEquals(MaskBuilder::MASK_OWNER, $mask & MaskBuilder::MASK_OWNER);
+ $this->assertEquals(0, $mask & MaskBuilder::MASK_MASTER);
+ $this->assertEquals(0, $mask & MaskBuilder::MASK_CREATE);
+ $this->assertEquals(0, $mask & MaskBuilder::MASK_DELETE);
+ $this->assertEquals(0, $mask & MaskBuilder::MASK_UNDELETE);
+
+ $builder->remove('edit')->remove('OWner');
+ $mask = $builder->get();
+ $this->assertEquals(0, $mask & MaskBuilder::MASK_EDIT);
+ $this->assertEquals(0, $mask & MaskBuilder::MASK_OWNER);
+ $this->assertEquals(MaskBuilder::MASK_VIEW, $mask & MaskBuilder::MASK_VIEW);
+ }
+
+ public function testGetPattern()
+ {
+ $builder = new MaskBuilder;
+ $this->assertEquals(MaskBuilder::ALL_OFF, $builder->getPattern());
+
+ $builder->add('view');
+ $this->assertEquals(str_repeat('.', 31).'V', $builder->getPattern());
+
+ $builder->add('owner');
+ $this->assertEquals(str_repeat('.', 24).'N......V', $builder->getPattern());
+
+ $builder->add(1 << 10);
+ $this->assertEquals(str_repeat('.', 21).MaskBuilder::ON.'..N......V', $builder->getPattern());
+ }
+
+ public function testReset()
+ {
+ $builder = new MaskBuilder();
+ $this->assertEquals(0, $builder->get());
+
+ $builder->add('view');
+ $this->assertTrue($builder->get() > 0);
+
+ $builder->reset();
+ $this->assertEquals(0, $builder->get());
+ }
+}