Cucumber 回调重定向不保留会话
我有一个场景,当我使用真正的omniauth时效果很好,但当我使用cucumber/capybara中的mock auth运行它时失败了 在回调中,当我登录@user时,它会成功创建用户并登录<已设置代码>当前用户。但是,当我随后执行Cucumber 回调重定向不保留会话,cucumber,capybara,omniauth,omniauth-twitter,Cucumber,Capybara,Omniauth,Omniauth Twitter,我有一个场景,当我使用真正的omniauth时效果很好,但当我使用cucumber/capybara中的mock auth运行它时失败了 在回调中,当我登录@user时,它会成功创建用户并登录当前用户。但是,当我随后执行将_重定向到request.env['omniauth.origin']| | |/'时,在接下来的操作中,当前_用户现在为零 我已经通过截图/暂停浏览器确认它无法使用模拟身份验证。firefox和chrome驱动程序中也会出现同样的错误 你知道为什么会这样吗 /功能/支持/en
将_重定向到request.env['omniauth.origin']| | |/'
时,在接下来的操作中,当前_用户
现在为零
我已经通过截图/暂停浏览器确认它无法使用模拟身份验证。firefox和chrome驱动程序中也会出现同样的错误
你知道为什么会这样吗
/功能/支持/env.rb:
Cucumber::Rails::Database.javascript_策略=:截断
情景:
@javascript
Scenario:
Given I am on the home page
When I press "Login"
And I should see "Login with Twitter" in the selector "#login-modal"
Given Omniauth returns a user with provider "twitter" and uid "1" and nickname "foo"
When I login with Twitter
Then I should be logged in as "foo"
步骤定义:
Given(/^Omniauth)返回具有提供程序“(.*)”和uid“(.*)”以及昵称“(.*)”$/)的用户,提供程序,uid,昵称|
OmniAuth.config.test_mode=true
OmniAuth.config.add_mock(provider.to_sym{
:uid=>uid,
:info=>{
:name=>昵称
}
})
结束
然后(/^I应以“(.*?”$/)do|昵称身份登录|
期望(第页)。有_内容(昵称)
结束
身份验证回调:
def twitter
@user=user.from_omniauth(request.env[“omniauth.auth”])#这很有效--我得到了模拟
在@user中登录
将“>>放入身份验证回调:刚刚登录用户#{current_user.id}”
将_重定向到request.env['omniauth.origin']| |'/'
结束
控制器:
def新建
将“>>放入my_controller#new:current_user=#{current_user.id if current_user}”
结束
黄瓜产量:
Given Omniauth returns a user with provider "twitter" and uid "1" and nickname "foo"
>> in auth callback: just signed in user 1
>> in my_controller#new: current_user =
When I login with Twitter
Then I should be logged in as "foo"
expected to find text "foo" in [redacted] (RSpec::Expectations::ExpectationNotMetError)
您正在获取用户并将其收集到新变量
@user
,但是当您再次调用sign\u in
方法时,您确实使用(例如@user
)初始化了新变量user此问题的任何解决方案?你找到什么了吗?好吧,请检查请求的标题,以获取真实和模拟,可能你应该在模拟中添加一些内容