我第一次开始尝试测试框架,而且我知道要为安全功能实现什么样的测试。假设一个基本的博客应用程序,只有授权用户才能创建新帖子。
对于“帖子”测试,是否只有授权用户可以创建新帖子的事实应该由功能中的黄瓜或带有controller_spec的rspec进行测试?我知道两者都可以完成,但在黄瓜功能中进行测试看起来有点矫枉过正,不是吗?
对我来说,似乎“客人不应该能够创建新帖子”不是一个功能,而是系统的限制,所以它不应该是黄瓜功能,而是一个rspec测试。在最终应用程序中,没有从访客页面到“创建帖子”功能的链接,所以我真正测试的是他们没有输入URL /posts/new
。
我的理解是对的吗?
答案 0 :(得分:2)
任何用户都可以尝试破解您的网站,只需将原始数据发送到您的应用程序即可。你必须为此做好准备。我建议您检查一个测试用例,如果未经授权的用户尝试创建新帖子(发布/创建),则会出现错误屏幕,并且不会创建任何数据库条目。你也可以检查这个新动作,但它不是一个输入动作,所以这是一个较小的错误。尝试覆盖所有无法使用的操作,因此不会发生数据库操作,并且测试用例会导致错误页面或其他内容。
实际上,页面的安全性是一个功能,对于博客应用程序来说可能不是最重要的,但它很重要。而且不只是直接攻击,但你必须期待意外的尝试,例如有人开始在一个标签上写一个帖子,然后在另一个标签上登出。
确切的方法取决于你,它认为。
更新: 我认为你应该使用Rspec控制器测试。
答案 1 :(得分:1)
就个人而言,我使用rspec测试我的控制器以检查用户访问权限。我使用FactoryGirl在rspec的
before {}
中创建了几个用户,然后使用其中一个用户登录并测试其他用户无法访问当前用户的页面。设置可能需要一些工作,但如果您可以在创建页面时测试访问安全性,那么这是值得的。