【发布时间】:2017-08-30 10:56:18
【问题描述】:
我有控制器 Post 使用典型的 CRUD 方法。
我有一个 PostPolicy,其中:
public function destroy(User $user, Post $post)
{
$user->id === $post->author_id;
}
我想为此编写测试。当我检查用户是否删除他自己的帖子时 - 一切正常。
但是当我测试其他用户是否可以删除不是他自己的帖子时,laravel 测试发送错误:
Illuminate\Auth\Access\AuthorizationException: This action is unauthorized.
如何绕过它或者哪个有另一种方法来编写这个测试?
代码
<?php
namespace Tests\Feature;
use Tests\TestCase;
use App\Models\Feeds\Feed;
use App\Models\User;
use Tests\SphinxConnection;
use Illuminate\Foundation\Testing\DatabaseMigrations;
class PolicyTest extends TestCase
{
use DatabaseMigrations,
SphinxConnection;
public function testFeedPolicy()
{
$this->expectException(\Illuminate\Auth\Access\AuthorizationException::class);
$user1 = factory(User::class)->create([
'id' => 1,
]);
$user2 = factory(User::class)->create([
'id' => 2,
]);
factory(Post::class)->create([
'id' => 27,
'editor_id' => 2,
]);
factory(Post::class)->create([
'id' => 30,
'editor_id' => 2,
]);
$this->delete('/api/feeds/27', [], [
'authorization' => "Bearer {$user2->api_token}",
'accept' => 'application/json',
])->assertJson([
]);;
$this->delete('/api/feeds/30', [], [
'authorization' => "Bearer {$user1->api_token}",
'accept' => 'application/json',
])->assertJson([
]);;
}
}
【问题讨论】:
-
你能展示你的测试代码吗?
-
更新帖子....
-
你使用的是什么版本的 Laravel 5?
标签: php laravel laravel-5 php-7