我应该测试每个Web应用程序路由的授权吗?

问题描述 投票:1回答:1

我有一个关于测试覆盖率的问题。我正在开发一个具有特定访问规则的基本CRUD应用程序。经过身份验证的用户可以创建/编辑表单,并允许其他用户编辑或查看对表单的访问权限。我想知道的是我应该为每个可能的授权方案编写功能测试,即:

  • 访客无法编辑表单
  • 用户可以编辑自己的表单
  • 用户无法编辑其他用户表单
  • 用户可以编辑具有“编辑”访问权限的其他用户表单
  • 用户无法编辑具有“查看”权限的其他用户表单

然后需要为每个功能编写这些内容,例如删除表单,查看表单的响应等。

是否所有这些都需要包括在内以确保在每个功能的适当级别应用授权?或者应该只对基本功能进行功能测试(即用户可以编辑他们的表单),然后进行单元测试以检查授权中间件并相信这足够了?

编辑:我知道如何添加我需要的授权,我只是询问是否不在每个级别测试它。

php laravel unit-testing authorization middleware
1个回答
0
投票

我的答案是为了

我正在开发一个基本的CRUD应用程序

如果您正在执行多个用户类型应用程序实现角色和权限

可以在这里找到

https://laravel-news.com/two-best-roles-permissions-packages

或实施自己的

其他

问题1:

访客无法编辑表单

Route::middleware(['web', 'auth'])->group(function () 
{
    //authenticated user functions
    Route::get('testmiddleware',function(){return 'user is loggend in';});
    Route::get('/posts/{post}/edit',  'PostController@edit')->name('posts.edit');
    Route::put('/posts/{post}',  'PostController@update')->name('post.update');

});

问题2和3:

用户可以编辑自己的表单AND用户无法编辑其他用户表单

例如,考虑我在posts表中的post中有一个提交的user_id

public function edit($id,Post $Post)
    {
       $post = Post::findOrFail($id);        

        if ($post->user_id != auth()->user()->id) 
        {
            abort(401);
        }

        $viewShare = ['post'];
        return view('post.edit',compact($viewShare));
    }

问题4和5:

用户可以编辑具有“编辑”访问权限的其他用户表单

用户无法编辑具有“查看”权限的其他用户表单

我不知道这样做,但您可以通过基于角色的访问控制来实现。

© www.soinside.com 2019 - 2024. All rights reserved.