登录后访问会话并在功能规范中注销

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

我希望能够在注销后测试会话无效。为此,我想检查登录后,会话存在,我想获得会话详细信息。注销后会话不再存在。

我能想到的一种方法是在登录后检查会话是否存在于redis中,并且在注销后在redis中不存在。但我不知道该怎么做。

如果有任何其他方法可以尝试,请告诉我。

这是我到目前为止:

scenario "session is invalidated on logout", js:true do
    login_page.login('[email protected]', 'usfyguysgugy')
    @user = User.find_by(email: '[email protected]')
    page.get_rack_session
end

但这会给出错误:

Failure/Error: page.get_rack_session
     Capybara::ElementNotFound:
       Unable to find visible xpath "//body/pre"

我也尝试过使用redis.keys('*'),但没有成功。

任何有关如何访问会话的线索都会有所帮助。

session rspec capybara rspec-rails capybara-webkit
1个回答
0
投票

您正在编写功能规范,您不应该直接在这些类型的测试中访问DB / redis / etc。功能测试都是关于测试用户可以做什么和不能做什么的,所以要验证注销是否结束会话,验证注销链接不再存在,并且现在存在登录链接。就像是

scenario "session is invalidated on logout", js:true do
  login_page.login('[email protected]', 'usfyguysgugy')
  click_link 'logout'
  expect(page).not_to have_link('logout')
  expect(page).to have_link('login')
end

如果您确实想要验证存储在redis中的会话的详细信息,那么可以在控制器或请求规范中完成。

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