/tests/User/UserTest.php

https://bitbucket.org/resourcemode/smodels · PHP · 269 lines · 191 code · 65 blank · 13 comment · 14 complexity · 7c1448866b0d83d553299aa81310f6bc MD5 · raw file

  1. <?php
  2. use Supa\User\NullUser;
  3. use Supa\User\Service;
  4. use Supa\User\User;
  5. /**
  6. * @backupGlobals disabled
  7. */
  8. class UserTest extends PHPUnit_Framework_TestCase {
  9. /* @var $userService \Supa\User\Service */
  10. protected $userService;
  11. public function __construct($name = NULL, array $data = array(), $dataName = '') {
  12. parent::__construct($name, $data, $dataName);
  13. $this->userService = AllTests::getService('UserService');
  14. }
  15. public function tearDown() {
  16. AllTests::truncateTables();
  17. }
  18. public function setUp() {
  19. AllTests::truncateTables();
  20. AllTests::executeSQLFile('C:/wamp/www/smodels/smodels/sql/test/user.sql');
  21. }
  22. public function testCanLoadUser() {
  23. $user = $this->userService->getByUid(1);
  24. if(!$user) {
  25. $this->fail($this->userService->getLastException()->getMessage());
  26. }
  27. $this->assertTrue($user instanceof User);
  28. $this->assertEquals('Test', $user->getFirstname());
  29. $this->assertEquals('User1', $user->getSurname());
  30. $this->assertEquals('tuser1', $user->getUsername());
  31. $this->assertEquals('tuser1@domain.com', $user->getEmail());
  32. }
  33. public function testCanLoadUserByUsername() {
  34. // User uid 1 (inserted in test_data_inserts.sql)
  35. // has username of tuser1
  36. $user = $this->userService->getUserByUsername('tuser1');
  37. if(!$user) {
  38. $this->fail('Failed loading user for given username');
  39. }
  40. $this->assertTrue($user instanceof User);
  41. $this->assertEquals(1, $user->getUID());
  42. $this->assertEquals('Test', $user->getFirstname());
  43. $this->assertEquals('User1', $user->getSurname());
  44. $this->assertEquals('tuser1@domain.com', $user->getEmail());
  45. }
  46. public function testCanLoadUserByUsernameAndPassword() {
  47. // User uid 1 (inserted in test_data_inserts.sql)
  48. // has username of tuser1 and pass of pass123
  49. $user = $this->userService->getUserByUsernameAndPassword('tuser1', 'pass123');
  50. if(!$user) {
  51. $this->fail('Failed loading user for given username and password');
  52. }
  53. $this->assertTrue($user instanceof User);
  54. $this->assertEquals(1, $user->getUID());
  55. $this->assertEquals('Test', $user->getFirstname());
  56. $this->assertEquals('User1', $user->getSurname());
  57. $this->assertEquals('tuser1@domain.com', $user->getEmail());
  58. }
  59. public function testCanCreateUser() {
  60. $data['firstname'] = 'Foo';
  61. $data['surname'] = "O'Shea";
  62. $data['username'] = 'FooBar';
  63. $data['password'] = 'fooBar123';
  64. $data['passwordVerify'] = 'fooBar123';
  65. $data['email'] = 'foo@domain.co.uk';
  66. $data['active'] = 1;
  67. $user = $this->userService->createUser($data);
  68. if(!$user) {
  69. $this->fail($this->userService->getLastException()->getMessage());
  70. }
  71. $this->assertTrue($user instanceof User);
  72. $this->assertEquals('Foo', $user->getFirstname());
  73. $this->assertEquals("O'Shea", $user->getSurname());
  74. $this->assertEquals('FooBar', $user->getUsername());
  75. $this->assertEquals('foo@domain.co.uk', $user->getEmail());
  76. }
  77. public function testCanNotCreateUserWithInvalidData() {
  78. $data['firstname'] = 'F3223oo';
  79. $data['surname'] = "3";
  80. $data['username'] = 'FooBar';
  81. $data['password'] = 'fooBar123';
  82. $data['passwordVerify'] = 'fooBar123';
  83. $data['email'] = 'foo@domain.co.uk';
  84. $data['active'] = 1;
  85. $user = $this->userService->createUser($data);
  86. if($user instanceof User) {
  87. $this->fail('createUser created a user when it should\'nt');
  88. }
  89. $this->assertTrue(true);
  90. }
  91. public function testCanChangeUserEmailAddress() {
  92. $data['uid'] = 1;
  93. $data['newIdentity'] = 'changed@domain.co.uk';
  94. $data['credential'] = 'pass123';
  95. $user = $this->userService->changeEmail($data);
  96. if(!$user) {
  97. $this->fail($this->userService->getLastException()->getMessage());
  98. }
  99. $this->assertTrue($user instanceof User);
  100. $this->assertEquals('changed@domain.co.uk', $user->getEmail());
  101. }
  102. public function testCanChangePassword() {
  103. $data['uid'] = 1;
  104. $data['newCredential'] = 'pass1234';
  105. $data['credential'] = 'pass123';
  106. $user = $this->userService->changePassword($data);
  107. if(!$user) {
  108. $this->fail($this->userService->getLastException()->getMessage());
  109. }
  110. $this->assertTrue($user instanceof User);
  111. }
  112. public function testCanUpdateUserUsername() {
  113. $data['uid'] = 1;
  114. $data['username'] = 'tuser2';
  115. $data['credential'] = 'pass123';
  116. // check
  117. $user = $this->userService->getByUid(1);
  118. $this->assertEquals('tuser1', $user->getUsername());
  119. $user = $this->userService->changeUsername($data);
  120. if(!$user) {
  121. $this->fail($this->userService->getLastException()->getMessage());
  122. }
  123. $this->assertTrue($user instanceof User);
  124. $this->assertEquals('tuser2', $user->getUsername());
  125. }
  126. public function testCanEditUser() {
  127. // updated username and surname
  128. $data['firstname'] = 'Foos';
  129. $data['surname'] = 'Bars';
  130. $data['uid'] = 1;
  131. // check
  132. $user = $this->userService->getByUid(1);
  133. $this->assertEquals('Test', $user->getFirstname());
  134. $this->assertEquals('User1', $user->getSurname());
  135. $user = $this->userService->updateUser($data);
  136. if(!$user) {
  137. var_dump($this->userService->getMessages());
  138. $this->fail($this->userService->getLastException()->getMessage());
  139. }
  140. $this->assertTrue($user instanceof User);
  141. $this->assertEquals('Foos', $user->getFirstname());
  142. $this->assertEquals('Bars', $user->getSurname());
  143. }
  144. public function testCanNotCreateUserWithSameEmailAsCurrentUser() {
  145. $data['firstname'] = 'Foo';
  146. $data['surname'] = 'Bar';
  147. $data['username'] = 'FooBar';
  148. $data['password'] = 'fooBar123';
  149. $data['passwordVerify'] = 'fooBar123';
  150. $data['email'] = 'tuser1@domain.com';
  151. $data['active'] = 1;
  152. $user = $this->userService->createUser($data);
  153. if($user instanceof User) {
  154. $this->fail($this->userService->getLastException()->getMessage());
  155. }
  156. }
  157. public function testCanNotCreateUserWithSameUsernameAsCurrentUser() {
  158. $data['firstname'] = 'Foo';
  159. $data['surname'] = 'Bar';
  160. $data['username'] = 'tuser1';
  161. $data['password'] = 'fooBar123';
  162. $data['passwordVerify'] = 'fooBar123';
  163. $data['email'] = 'tuser1@domain.com';
  164. $data['active'] = 1;
  165. $user = $this->userService->createUser($data);
  166. if($user instanceof User) {
  167. $this->fail($this->userService->getLastException()->getMessage());
  168. }
  169. }
  170. public function testCannotLoadUserByIncorrectUsername() {
  171. // User uid 1 (inserted in test_data_inserts.sql)
  172. // has username of tuser1 and pass of pass123
  173. $user = $this->userService->getUserByUsernameAndPassword('tuser1s', 'pass123');
  174. if($user instanceof User) {
  175. $this->fail('wtf? A user has been loaded in: testCannotLoadUserByIncorrectUsername');
  176. }
  177. }
  178. public function testCanGetListOfUsersAsCollection() {
  179. $users = $this->userService->getUsers();
  180. $this->assertTrue($users instanceof \Supa\User\Collection);
  181. $this->assertEquals(1, $users->count());
  182. }
  183. public function testCallingGetUsersWithNoUsersToGetWillReturnEmptyCollection() {
  184. AllTests::truncateTables();
  185. $users = $this->userService->getUsers();
  186. $this->assertTrue($users instanceof \Supa\User\Collection);
  187. $this->assertEquals(0, $users->count());
  188. }
  189. public function testCanDeleteUser() {
  190. $deleted = $this->userService->deleteUser(1);
  191. $user = $this->userService->getByUid(1);
  192. if(!$deleted || !$user instanceof \Supa\User\NullUser) {
  193. $this->fail('A user was loaded that should have been deleted.');
  194. }
  195. }
  196. public function testDeletingNonExistentUserWillReturnFalse() {
  197. $deleted = $this->userService->deleteUser(22);
  198. if($deleted) {
  199. $this->fail('wtf? A user was apparently deleted that doesn\'t exist...');
  200. }
  201. }
  202. }