From 6b8f008cfe4958f253a5e278886b825fc13ef8ed Mon Sep 17 00:00:00 2001 From: Dan Cryer Date: Wed, 23 Jul 2014 16:11:47 +0100 Subject: [PATCH] Adding some tests for the UserService class. --- Tests/PHPCI/Service/UserServiceTest.php | 116 ++++++++++++++++++++++++ 1 file changed, 116 insertions(+) create mode 100644 Tests/PHPCI/Service/UserServiceTest.php diff --git a/Tests/PHPCI/Service/UserServiceTest.php b/Tests/PHPCI/Service/UserServiceTest.php new file mode 100644 index 00000000..1358bd7b --- /dev/null +++ b/Tests/PHPCI/Service/UserServiceTest.php @@ -0,0 +1,116 @@ + + */ +class UserServiceTest extends \PHPUnit_Framework_TestCase +{ + + /** + * @var UserService $testedService + */ + protected $testedService; + + /** + * @var \ $mockBuildStore + */ + protected $mockUserStore; + + public function setUp() + { + $this->mockUserStore = $this->getMock('PHPCI\Store\UserStore'); + $this->mockUserStore->expects($this->any()) + ->method('save') + ->will($this->returnArgument(0)); + + $this->testedService = new UserService($this->mockUserStore); + } + + /** + * @covers PHPUnit::execute + */ + public function testExecute_CreateNonAdminUser() + { + $user = $this->testedService->createUser('Test', 'test@example.com', 'testing', 0); + + $this->assertEquals('Test', $user->getName()); + $this->assertEquals('test@example.com', $user->getEmail()); + $this->assertEquals(0, $user->getIsAdmin()); + $this->assertTrue(password_verify('testing', $user->getHash())); + } + + /** + * @covers PHPUnit::execute + */ + public function testExecute_CreateAdminUser() + { + $user = $this->testedService->createUser('Test', 'test@example.com', 'testing', 1); + $this->assertEquals(1, $user->getIsAdmin()); + } + + /** + * @covers PHPUnit::execute + */ + public function testExecute_RevokeAdminStatus() + { + $user = new User(); + $user->setEmail('test@example.com'); + $user->setName('Test'); + $user->setIsAdmin(1); + + $user = $this->testedService->updateUser($user, 'Test', 'test@example.com', 'testing', 0); + $this->assertEquals(0, $user->getIsAdmin()); + } + + /** + * @covers PHPUnit::execute + */ + public function testExecute_GrantAdminStatus() + { + $user = new User(); + $user->setEmail('test@example.com'); + $user->setName('Test'); + $user->setIsAdmin(0); + + $user = $this->testedService->updateUser($user, 'Test', 'test@example.com', 'testing', 1); + $this->assertEquals(1, $user->getIsAdmin()); + } + + /** + * @covers PHPUnit::execute + */ + public function testExecute_ChangesPasswordIfNotEmpty() + { + $user = new User(); + $user->setHash(password_hash('testing', PASSWORD_DEFAULT)); + + $user = $this->testedService->updateUser($user, 'Test', 'test@example.com', 'newpassword', 0); + $this->assertFalse(password_verify('testing', $user->getHash())); + $this->assertTrue(password_verify('newpassword', $user->getHash())); + } + + /** + * @covers PHPUnit::execute + */ + public function testExecute_DoesNotChangePasswordIfEmpty() + { + $user = new User(); + $user->setHash(password_hash('testing', PASSWORD_DEFAULT)); + + $user = $this->testedService->updateUser($user, 'Test', 'test@example.com', '', 0); + $this->assertTrue(password_verify('testing', $user->getHash())); + } +}