есть метод контроллера
public function update(Request $request, string $id)
{
$productToUpdate = Product::find($id);
if (!$productToUpdate){
return response()->json(["message"=>"Product id $id not found"],404);
}
$this->authorize("update",$productToUpdate);
$isUpdated = $productToUpdate->update($request->all());
if($isUpdated){
return response()->json(["message"=>"Product id $id has been updated"],200);
}else{
return response()->json(["message"=>"Error has occured during the product id $id update"],400);
}
}
Написал под него тест -
public function test_user_without_permissions_cant_update_product(): void
{
$this->seed(PermissionsTableSeeder::class);
$this->seed(RolesTableSeeder::class);
$productToPatch = Product::factory()->create();
$user=User::factory()->create();
$user->assignRole('site_user');
$this->actingAs($user);
$newData = [
"name"=>"updated name"
];
$response = $this->patch("/api/products/$productToPatch->id",$newData)->json();
}
тест обозначается как failed: This action is unauthorized.
Причем как видите я убрал все проверки, но тест все равно валится. до этого пробовал expectException(AuthorizationException::class);, $response->assertStatus(403),но ведь проблема в том что он в любом случае заваливается. Не совсем понимаю логику происходящего.