MaskBuilderTest.php 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. <?php
  2. namespace Symfony\Tests\Component\Security\Acl\Util;
  3. use Symfony\Component\Security\Acl\Permission\MaskBuilder;
  4. class MaskBuilderTest extends \PHPUnit_Framework_TestCase
  5. {
  6. /**
  7. * @expectedException \InvalidArgumentException
  8. * @dataProvider getInvalidConstructorData
  9. */
  10. public function testConstructorWithNonInteger($invalidMask)
  11. {
  12. new MaskBuilder($invalidMask);
  13. }
  14. public function getInvalidConstructorData()
  15. {
  16. return array(
  17. array(234.463),
  18. array('asdgasdf'),
  19. array(array()),
  20. array(new \stdClass()),
  21. );
  22. }
  23. public function testConstructorWithoutArguments()
  24. {
  25. $builder = new MaskBuilder();
  26. $this->assertEquals(0, $builder->get());
  27. }
  28. public function testConstructor()
  29. {
  30. $builder = new MaskBuilder(123456);
  31. $this->assertEquals(123456, $builder->get());
  32. }
  33. public function testAddAndRemove()
  34. {
  35. $builder = new MaskBuilder();
  36. $builder
  37. ->add('view')
  38. ->add('eDiT')
  39. ->add('ownEr')
  40. ;
  41. $mask = $builder->get();
  42. $this->assertEquals(MaskBuilder::MASK_VIEW, $mask & MaskBuilder::MASK_VIEW);
  43. $this->assertEquals(MaskBuilder::MASK_EDIT, $mask & MaskBuilder::MASK_EDIT);
  44. $this->assertEquals(MaskBuilder::MASK_OWNER, $mask & MaskBuilder::MASK_OWNER);
  45. $this->assertEquals(0, $mask & MaskBuilder::MASK_MASTER);
  46. $this->assertEquals(0, $mask & MaskBuilder::MASK_CREATE);
  47. $this->assertEquals(0, $mask & MaskBuilder::MASK_DELETE);
  48. $this->assertEquals(0, $mask & MaskBuilder::MASK_UNDELETE);
  49. $builder->remove('edit')->remove('OWner');
  50. $mask = $builder->get();
  51. $this->assertEquals(0, $mask & MaskBuilder::MASK_EDIT);
  52. $this->assertEquals(0, $mask & MaskBuilder::MASK_OWNER);
  53. $this->assertEquals(MaskBuilder::MASK_VIEW, $mask & MaskBuilder::MASK_VIEW);
  54. }
  55. public function testGetPattern()
  56. {
  57. $builder = new MaskBuilder;
  58. $this->assertEquals(MaskBuilder::ALL_OFF, $builder->getPattern());
  59. $builder->add('view');
  60. $this->assertEquals(str_repeat('.', 31).'V', $builder->getPattern());
  61. $builder->add('owner');
  62. $this->assertEquals(str_repeat('.', 24).'N......V', $builder->getPattern());
  63. $builder->add(1 << 10);
  64. $this->assertEquals(str_repeat('.', 21).MaskBuilder::ON.'..N......V', $builder->getPattern());
  65. }
  66. public function testReset()
  67. {
  68. $builder = new MaskBuilder();
  69. $this->assertEquals(0, $builder->get());
  70. $builder->add('view');
  71. $this->assertTrue($builder->get() > 0);
  72. $builder->reset();
  73. $this->assertEquals(0, $builder->get());
  74. }
  75. }