AuthUserComponentTest.php 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. <?php
  2. namespace Tools\Test\TestCase\Controller\Component;
  3. use Cake\Controller\ComponentRegistry;
  4. use Cake\Controller\Component\AuthComponent;
  5. use Cake\Controller\Controller;
  6. use Cake\Network\Request;
  7. use Tools\Controller\Component\AuthUserComponent;
  8. use Tools\TestSuite\TestCase;
  9. /**
  10. * AuthUserComponent class
  11. */
  12. class AuthUserComponentTest extends TestCase {
  13. /**
  14. * @var array
  15. */
  16. public $fixtures = ['core.sessions'];
  17. /**
  18. * @var \Tools\Controller\Component\AuthUserComponent
  19. */
  20. public $AuthUser;
  21. /**
  22. * @var \Cake\Controller\ComponentRegistry
  23. */
  24. public $ComponentRegistry;
  25. /**
  26. * @return void
  27. */
  28. public function setUp() {
  29. parent::setUp();
  30. $controller = new Controller(new Request());
  31. $this->ComponentRegistry = new ComponentRegistry($controller);
  32. $this->AuthUser = new AuthUserComponent($this->ComponentRegistry);
  33. $this->AuthUser->Auth = $this->getMockBuilder(AuthComponent::class)
  34. ->setMethods(['user'])
  35. ->setConstructorArgs([$this->ComponentRegistry])
  36. ->getMock();
  37. }
  38. /**
  39. * @return void
  40. */
  41. public function tearDown() {
  42. parent::tearDown();
  43. }
  44. /**
  45. * @return void
  46. */
  47. public function testEmptyAuthSession() {
  48. $this->assertNull($this->AuthUser->id());
  49. $this->assertFalse($this->AuthUser->isMe(null));
  50. $this->assertFalse($this->AuthUser->isMe(''));
  51. $this->assertFalse($this->AuthUser->isMe(0));
  52. $this->assertFalse($this->AuthUser->isMe(1));
  53. }
  54. /**
  55. * @return void
  56. */
  57. public function testId() {
  58. $this->AuthUser->Auth->expects($this->once())
  59. ->method('user')
  60. ->with(null)
  61. ->will($this->returnValue(['id' => '1']));
  62. $this->assertSame('1', $this->AuthUser->id());
  63. }
  64. /**
  65. * @return void
  66. */
  67. public function testIsMe() {
  68. $this->AuthUser->Auth->expects($this->any())
  69. ->method('user')
  70. ->with(null)
  71. ->will($this->returnValue(['id' => '1']));
  72. $this->assertFalse($this->AuthUser->isMe(null));
  73. $this->assertFalse($this->AuthUser->isMe(''));
  74. $this->assertFalse($this->AuthUser->isMe(0));
  75. $this->assertTrue($this->AuthUser->isMe('1'));
  76. $this->assertTrue($this->AuthUser->isMe(1));
  77. }
  78. /**
  79. * @return void
  80. */
  81. public function testUser() {
  82. $this->AuthUser->Auth->expects($this->any())
  83. ->method('user')
  84. ->with(null)
  85. ->will($this->returnValue(['id' => '1', 'username' => 'foo']));
  86. $this->assertSame(['id' => '1', 'username' => 'foo'], $this->AuthUser->user());
  87. $this->assertSame('foo', $this->AuthUser->user('username'));
  88. $this->assertNull($this->AuthUser->user('foofoo'));
  89. }
  90. /**
  91. * @return void
  92. */
  93. public function testRoles() {
  94. $this->AuthUser->Auth->expects($this->once())
  95. ->method('user')
  96. ->with(null)
  97. ->will($this->returnValue(['id' => '1', 'Roles' => ['1', '2']]));
  98. $this->assertSame(['1', '2'], $this->AuthUser->roles());
  99. }
  100. /**
  101. * @return void
  102. */
  103. public function testRolesDeep() {
  104. $this->AuthUser->Auth->expects($this->once())
  105. ->method('user')
  106. ->with(null)
  107. ->will($this->returnValue(['id' => '1', 'Roles' => [['id' => '1'], ['id' => '2']]]));
  108. $this->assertSame(['1', '2'], $this->AuthUser->roles());
  109. }
  110. /**
  111. * @return void
  112. */
  113. public function testHasRole() {
  114. $this->AuthUser->Auth->expects($this->exactly(3))
  115. ->method('user')
  116. ->with(null)
  117. ->will($this->returnValue(['id' => '1', 'Roles' => [['id' => '1'], ['id' => '2']]]));
  118. $this->assertTrue($this->AuthUser->hasRole(2));
  119. $this->assertTrue($this->AuthUser->hasRole('2'));
  120. $this->assertFalse($this->AuthUser->hasRole(3));
  121. $this->assertTrue($this->AuthUser->hasRole(3, [1, 3]));
  122. $this->assertFalse($this->AuthUser->hasRole(3, [2, 4]));
  123. }
  124. /**
  125. * @return void
  126. */
  127. public function testHasRoles() {
  128. $this->AuthUser->Auth->expects($this->exactly(6))
  129. ->method('user')
  130. ->with(null)
  131. ->will($this->returnValue(['id' => '1', 'Roles' => [['id' => '1'], ['id' => '2']]]));
  132. $this->assertTrue($this->AuthUser->hasRoles([2]));
  133. $this->assertTrue($this->AuthUser->hasRoles('2'));
  134. $this->assertFalse($this->AuthUser->hasRoles([3, 4]));
  135. $this->assertTrue($this->AuthUser->hasRoles([1, 2], false));
  136. $this->assertTrue($this->AuthUser->hasRoles([1, 6], [1, 3, 5]));
  137. $this->assertFalse($this->AuthUser->hasRoles([3, 4], [2, 4]));
  138. $this->assertFalse($this->AuthUser->hasRoles([1, 3, 5], false, [1, 3]));
  139. $this->assertTrue($this->AuthUser->hasRoles([1, 3, 5], false, [1, 3, 5]));
  140. }
  141. }