Last active
April 11, 2021 06:49
-
-
Save farindra/a62871fab3e2c14359d76b8852d0e7a3 to your computer and use it in GitHub Desktop.
Lumen Jwtauth Part 1 - Test User Auth
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
use Laravel\Lumen\Testing\DatabaseMigrations; | |
class UserAuthTest extends TestCase | |
{ | |
use DatabaseMigrations; | |
/** | |
* user token | |
*/ | |
public $token = null; | |
/** | |
* test validate wrong user or password login | |
* | |
* @return void | |
*/ | |
public function test_validate_wrong_user_or_password() | |
{ | |
/* wrong user */ | |
$request = $this->post('/v1/login', [ | |
'email' => '[email protected]', | |
'password' => 'secret', | |
]); | |
$request->response->assertJson([ | |
'error' => 'Please check your email or password !' | |
])->assertStatus(400); | |
/* wrong password */ | |
$request = $this->post('/v1/login', [ | |
'email' => '[email protected]', | |
'password' => 'secreto', | |
]); | |
$request->response->assertJson([ | |
'error' => 'Please check your email or password !' | |
])->assertStatus(400); | |
} | |
/** | |
* test unauthorized route auth middleware | |
* | |
* @return void | |
*/ | |
public function test_unauthorized_access_auth_middleware() | |
{ | |
$request = $this->get('/v1/profile'); | |
$request->response->assertJson([ | |
'error' => 'Unauthorized' | |
])->assertStatus(401); | |
} | |
/** | |
* test validate valid login | |
* | |
* @return void | |
*/ | |
public function test_valid_login() | |
{ | |
/* valid register */ | |
$request = $this->post('/v1/register', [ | |
'firstname' => 'John', | |
'lastname' => 'Doe', | |
'email' => '[email protected]', | |
'password' => 'secret', | |
]); | |
$request->response->assertJson([ | |
'success' => 'Account created successfully!' | |
])->assertStatus(200); | |
/* valid login */ | |
$request = $this->post('/v1/login', [ | |
'email' => '[email protected]', | |
'password' => 'secret', | |
]); | |
$data = $request->response->decodeResponseJson()?? []; | |
if ($data['success'] ?? false) { | |
$this->token = $data['data']['token'] ?? ''; | |
} | |
$request->response->assertJson([ | |
'success' => 'Successfully login' | |
])->assertStatus(200); | |
} | |
/** | |
* test authorized route auth middleware | |
* | |
* @return void | |
*/ | |
public function test_authorized_access_auth_middleware() | |
{ | |
$this->setToken(); | |
$request = $this->get('/v1/profile'); | |
$request->response->assertStatus(200); | |
} | |
/** | |
* set token for auth | |
* | |
* @return void | |
*/ | |
private function setToken() { | |
/* valid register */ | |
$request = $this->post('/v1/register', [ | |
'firstname' => 'John', | |
'lastname' => 'Doe', | |
'email' => '[email protected]', | |
'password' => 'secret', | |
]); | |
/* valid login */ | |
$this->post('/v1/login', [ | |
'email' => '[email protected]', | |
'password' => 'secret', | |
]); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment