AuthUserComponentTest.php 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  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. * testSessionReadWrite method
  46. *
  47. * @return void
  48. */
  49. public function testEmptyAuthSession() {
  50. $this->assertNull($this->AuthUser->id());
  51. $this->assertFalse($this->AuthUser->isMe(null));
  52. $this->assertFalse($this->AuthUser->isMe(''));
  53. $this->assertFalse($this->AuthUser->isMe(0));
  54. $this->assertFalse($this->AuthUser->isMe(1));
  55. }
  56. /**
  57. * @return void
  58. */
  59. public function testId() {
  60. $this->AuthUser->Auth->expects($this->once())
  61. ->method('user')
  62. ->with(null)
  63. ->will($this->returnValue(['id' => '1']));
  64. $this->assertSame('1', $this->AuthUser->id());
  65. }
  66. /**
  67. * @return void
  68. */
  69. public function testIsMe() {
  70. $this->AuthUser->Auth->expects($this->any())
  71. ->method('user')
  72. ->with(null)
  73. ->will($this->returnValue(['id' => '1']));
  74. $this->assertFalse($this->AuthUser->isMe(null));
  75. $this->assertFalse($this->AuthUser->isMe(''));
  76. $this->assertFalse($this->AuthUser->isMe(0));
  77. $this->assertTrue($this->AuthUser->isMe('1'));
  78. $this->assertTrue($this->AuthUser->isMe(1));
  79. }
  80. /**
  81. * @return void
  82. */
  83. public function testUser() {
  84. $this->AuthUser->Auth->expects($this->any())
  85. ->method('user')
  86. ->with(null)
  87. ->will($this->returnValue(['id' => '1', 'username' => 'foo']));
  88. $this->assertSame(['id' => '1', 'username' => 'foo'], $this->AuthUser->user());
  89. $this->assertSame('foo', $this->AuthUser->user('username'));
  90. $this->assertNull($this->AuthUser->user('foofoo'));
  91. }
  92. /**
  93. * @return void
  94. */
  95. public function testRoles() {
  96. $this->AuthUser->Auth->expects($this->once())
  97. ->method('user')
  98. ->with(null)
  99. ->will($this->returnValue(['id' => '1', 'Roles' => ['1', '2']]));
  100. $this->assertSame(['1', '2'], $this->AuthUser->roles());
  101. }
  102. /**
  103. * @return void
  104. */
  105. public function testRolesDeep() {
  106. $this->AuthUser->Auth->expects($this->once())
  107. ->method('user')
  108. ->with(null)
  109. ->will($this->returnValue(['id' => '1', 'Roles' => [['id' => '1'], ['id' => '2']]]));
  110. $this->assertSame(['1', '2'], $this->AuthUser->roles());
  111. }
  112. /**
  113. * @return void
  114. */
  115. public function testHasRole() {
  116. $this->AuthUser->Auth->expects($this->exactly(3))
  117. ->method('user')
  118. ->with(null)
  119. ->will($this->returnValue(['id' => '1', 'Roles' => [['id' => '1'], ['id' => '2']]]));
  120. $this->assertTrue($this->AuthUser->hasRole(2));
  121. $this->assertTrue($this->AuthUser->hasRole('2'));
  122. $this->assertFalse($this->AuthUser->hasRole(3));
  123. $this->assertTrue($this->AuthUser->hasRole(3, [1, 3]));
  124. $this->assertFalse($this->AuthUser->hasRole(3, [2, 4]));
  125. }
  126. /**
  127. * @return void
  128. */
  129. public function testHasRoles() {
  130. $this->AuthUser->Auth->expects($this->exactly(6))
  131. ->method('user')
  132. ->with(null)
  133. ->will($this->returnValue(['id' => '1', 'Roles' => [['id' => '1'], ['id' => '2']]]));
  134. $this->assertTrue($this->AuthUser->hasRoles([2]));
  135. $this->assertTrue($this->AuthUser->hasRoles('2'));
  136. $this->assertFalse($this->AuthUser->hasRoles([3, 4]));
  137. $this->assertTrue($this->AuthUser->hasRoles([1, 2], false));
  138. $this->assertTrue($this->AuthUser->hasRoles([1, 6], [1, 3, 5]));
  139. $this->assertFalse($this->AuthUser->hasRoles([3, 4], [2, 4]));
  140. $this->assertFalse($this->AuthUser->hasRoles([1, 3, 5], false, [1, 3]));
  141. $this->assertTrue($this->AuthUser->hasRoles([1, 3, 5], false, [1, 3, 5]));
  142. }
  143. }