-
-
Notifications
You must be signed in to change notification settings - Fork 1.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Question] Generate a Token when testing with PHPunit #28
Comments
Hi. Did you managed to get your tests working ? I have the same problem and could use some help. |
Not OP, but here's how I did this in my code. For most tests, I need to be logged in but I don't want to test auth, so I have this function in my base protected function login($user_id = 1)
{
$user = User::find($user_id);
$this->token = JWTAuth::fromUser($user);
JWTAuth::setToken($this->token);
Auth::login($user);
} Every time I call a route, I then pass in the token in the headers: protected function callRoute($method, $route, $data = [], $headers = [])
{
if ($this->token && !isset($headers['Authorization'])) {
$headers['HTTP_Authorization'] = "Bearer: $this->token";
}
return $this->call(
$method,
"/api$route",
[],
[],
[],
$headers,
json_encode($data)
);
} For testing auth itself, I do this: public function testLogin()
{
$this->seed('UserSeeder');
// callRoute's parameters: 1. Method 2. Url 3. Data 4. Headers
$resp = $this->callRoute('POST', '/auth', ['email' => 'test@test.com', 'password' => 'password']);
$this->assertOk($resp);
// Get the token
$data = json_decode($resp->getContent(), true);
$this->assertArrayHasKey('token', $data);
// At this point, I could call another api endpoint and pass in the token. Something like this:
// $this->callRoute('POST', '/example', $data, ['HTTP_Authorization' => 'Bearer: ' . $data['token']]);
}
|
Thank you @denaje for the code. That helped a ton. Here is a slightly revised version that functions more like the parent Extend the TestCase class with:
Then use in tests like any other method:
|
…inimal-versions-illuminate-database increased minimal versions for illuminate/database
Hello,
I would like to know if you can give a little hand here. Im using your package (L5 branch) to secure some of my API uri's.
So now decided to dive in the testing world(nood here) and I can't seem to get this right when testing a protected uri.
If I hard code the token in the call method it works fine but off course I first wanna get a User from my testing DB and then generate a token to pass it the call method(if this even make sense for a test)
Do you have a small example on how to this or point me in some direction?
Thanks in advance,
Helder
The text was updated successfully, but these errors were encountered: