Skip to content

Instantly share code, notes, and snippets.

@0xMatt
Last active August 29, 2015 14:16
Show Gist options
  • Save 0xMatt/3c38c07ae129dd25fa98 to your computer and use it in GitHub Desktop.
Save 0xMatt/3c38c07ae129dd25fa98 to your computer and use it in GitHub Desktop.
User service test
<?php
use Lithe\Testing\TestCase;
class UserManagerTest extends TestCase
{
/**
*
* @var UserManager
*/
protected $userManager;
/**
* (non-PHPdoc)
*
* @see \Lithe\Testing\TestCase::setUp()
*/
public function setUp()
{
parent::setUp();
// Should mock this i suppose
$this->userManager = $this->app->make('Modules\Core\Services\UserManager');
}
/**
* Create a user
*/
public function testCreate()
{
$data = $this->getData();
$user = $this->userManage->create($data);
extract($data);
$this->assertEquals($username, $user->username);
$this->assertTrue(password_verify($this->getUser()['password'], $user->password));
$this->assertEquals($email, $user->email);
$this->assertEquals($ip, $user->ip);
$this->assertEquals($is_activated, $user->is_activated);
$this->assertInstanceOf('Modules\Core\Models\User', $user);
}
/**
* Update a user
*/
public function testUpdate()
{
$new = $this->createUser();
$update = [
'username' => 'update_test_user',
'password' => 'update_test_pass',
'email' => '[email protected]'
];
$user = $this->userManager->update($update, $new->id);
$this->assertEquals($update['username'], $user->username);
$this->assertTrue(password_verify($update['password'], $user->password));
$this->assertEquals($update['email'], $user->email);
$this->assertInstanceOf('Modules\Core\Models\User', $user);
}
/**
* Log a user in via their credentials
*/
public function testLoginViaCredentials()
{
$user = $this->createUser();
$this->assertFalse($this->app['auth']->check());
$login = $this->userManager->login([
'username' => $user->username,
'password' => $this->getUser()['password']
]);
$this->assertTrue($login);
$this->assertTrue($this->app['auth']->check());
}
/**
* Log a user in via user object
*/
public function testLoginViaModel()
{
$user = $this->createUser();
$this->assertFalse($this->app['auth']->check());
$this->userManager->loginWithUser($user);
$this->assertTrue($this->app['auth']->check());
}
/**
* Log out a user
*/
public function testLogout()
{
$user = $this->createUser();
$this->userManager->loginWithUser($user);
$this->assertTrue($this->app['auth']->check());
$this->userManager->logout();
$this->assertFalse($this->app['auth']->check());
}
/**
* Abstract creation process
*
* @return User
*/
protected function createUser()
{
$data = $this->getUser();
$user = $this->userManager->create($data);
return $user;
}
/**
* Mock user
*
* @return array
*/
protected function getUser()
{
return [
'username' => 'test_user',
'password' => 'test_pass',
'email' => '[email protected]',
'ip' => '127.0.0.1',
'is_activated' => true
];
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment