gpt4 book ai didi

ruby-on-rails - 如何有效测试未认证用户流量?

转载 作者:行者123 更新时间:2023-11-28 20:00:10 27 4
gpt4 key购买 nike

给定一个具有大量 Controller 和路由的重要 Rails 应用程序,只有经过身份验证的用户才能访问,即使这样,也只能由获得授权的用户访问,测试未经身份验证的用户和未经授权的用户被拒绝访问的最明智的方法是什么?

目前,我通常通过功能测试经过身份验证的用户流,然后回退到 Controller 测试以测试未经授权或未经身份验证的用户无法访问路由。

显然,确保未经身份验证的用户获得 401 很容易测试,但测试授权是另一回事。对访问权限进行精细测试是有意义的——我想知道我所做的事情是否无意中让访客有能力破坏用户——但是为每个根添加这样的测试会大大增加测试的数量。

我应该如何处理这个问题?

最佳答案

这取决于你如何授权。您只需要编写与编写授权代码块一样多的测试。

如果您编写特定代码来检查每个使用资源的地方的授权,那么除了为每次检查编写测试(可能是 Controller 规范)之外别无选择。我还会编写一个 Cucumber 场景来指定用户在授权被拒绝时看到的内容,并对整个堆栈进行集成测试。

如果您将您的授权转移到一个框架中,无论是像 Cancan 还是您自己的框架,只需要每个 Controller 在一个地方调用该框架(例如 CanCan 的 load_and_authorize_resource),那么您只需要为每个 Controller 再写一个规范(一个表明一些经过身份验证但未经授权的用户无法访问资源的规范)来确定正在调用授权框架。如果框架将授权逻辑移动到一组新的类(例如 CanCan::Ability 子类),您将需要对这些类进行单元测试,但您可能能够使用每个这样的类在不止一个地方上课,因此他们需要的测试数量不会成倍增加,而且他们的测试将比 Controller 规范更简单。

同样,如果您的授权框架完全由配置驱动,并且您只能在应用程序的一个地方调用它,那么您只需要编写一个 Cucumber 场景。

您可能会想到不同的架构会导致不同的测试要求,但我认为这些示例展示了总体思路。

关于ruby-on-rails - 如何有效测试未认证用户流量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23981251/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com