Erro no teste (esperado 403, mas veio 401)
[Finalizado Pelo Aluno]
Criador
Tiago da Silva Brilhante
o meu teste está assim:
<?php
use App\Models\User;
use function Pest\Laravel\getJson;
beforeEach(function () {
$this->user = User::factory()->create();
$this->token = $this->user->createToken('e2e_test')->plainTextToken;
});
test('should return 403', function () {
getJson(route('users.index'), ['Authorization' => "Bearer {$this->token}"])->assertStatus(403);
});
estou recebendo:
Expected response status code [403] but received 401.
Failed asserting that 401 is identical to 403.
at vendor/laravel/framework/src/Illuminate/Testing/TestResponseAssert.php:45
at vendor/laravel/framework/src/Illuminate/Testing/TestResponse.php:160
at tests/Feature/Api/ACLApiTest.php:15
Tests: 1 failed (1 assertions)
Duration: 0.62s
Process finished with exit code 1
estou usando o Laravel 11.9 se não me engano
como resolver?
Criador
Tiago da Silva Brilhante
resolvi o problema...
public function handle(Request $request, Closure $next): Response
{
$routeName = Route::currentRouteName();
//dd($routeName);
if (!$this->userRepository->hasPermissions($request->user(), $routeName)) {
// return response()->json(['message' => 'Unauthorized'], Response::HTTP_UNAUTHORIZED);
abort(Response::HTTP_FORBIDDEN, 'Forbidden');
}
return $next($request);
}
Era o response do middleware que estava errado... (eu não peguei o do git, e sim trabalhei no da aula do Laravel de criar api
Precisa estar logado para conseguir responder a este ticket!
Clique Aqui Para Entrar!