首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >第9章授权测试失败

第9章授权测试失败
EN

Stack Overflow用户
提问于 2012-03-23 02:33:50
回答 3查看 408关注 0票数 1

在Michael Hartl的新Rails教程书(3.2)的9.2.1节中,定义了一个测试,以确保如果一个用户登录,他们不能更新(放置)对另一个用户的更改。如果尝试这样做,则应将用户重定向到主页。因为网页不能直接发出PUT,所以RSPEC测试使用:

在{ put user_path(wrong_user) }{ response.should redirect_to(root_path) }之前

此测试用例失败,并查看它似乎正在退出的日志,因为UserController中的第一个before_filter (signed_in_user)正在重定向到登录页面。

这是我的github示例应用程序的页面:https://github.com/treetopvt/sample_app

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-03-25 05:43:31

在第8章中,有一个从cookies切换到会话的练习。在我的SessionsHelper模块中

代码语言:javascript
复制
cookies.permanent[:remember_token] = user.remember_token

使用

代码语言:javascript
复制
session[:remember_token] = user.remember_token

迁移到sessions运行良好,但因为我不再“永久”存储cookie,所以测试失败。我撤销了第8章中的练习更改,回到cookies,所有测试都通过了。现在,关于如何在使用会话时更改授权测试以使其正常工作,您有什么想法吗?这是我目前的测试:

代码语言:javascript
复制
            describe "as wrong user" do
            let(:user) { FactoryGirl.create(:user) }
            let(:wrong_user) { FactoryGirl.create(:user, email:"wrong@example.com") }
            before { sign_in user }

            describe "Visiting Users#edit page" do
                before { visit edit_user_path(wrong_user) }
                it { should have_selector('title', text: full_title('')) }
            end

            describe "submitting a PUT request to the Users#update action" do
                before { put user_path(wrong_user) } #put is an update?
                specify{ response.should redirect_to(root_path) }
            end
        end
票数 1
EN

Stack Overflow用户

发布于 2012-03-23 02:48:57

我想你搞混了,9.2.1是关于注销的用户尝试使用更新操作,9.2.2是关于登录的用户试图对其他用户使用更新操作。您可能需要检查规范中的before块,以确保您测试的是正确的场景。

例如:在9.2.2中使用before { sign_in user }来设置一个登录的用户,然后在尝试更新另一个用户的配置文件时,该用户将被重定向到根路径。看起来您根本没有登录的用户,所以身份验证筛选器停止流并重定向到登录页面。

票数 0
EN

Stack Overflow用户

发布于 2012-05-16 16:56:39

请检查此Stack Overflow comment。我也遇到了同样的问题,并替换了sign_in测试助手中的这一行(正如"@Aldo 'xoen‘Giambelluca“所提到的那样)解决了这个问题。只有当一个人尝试并解决了第8章中的练习时,才会面临这个问题。正如@Hoang Pham所指出的,如果书中提到那些做练习的人将面临这个问题,那就更好了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9828393

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档