доступ к сеансу после входа в систему и выхода из нее в спецификации функций - PullRequest
0 голосов
/ 25 апреля 2019

Я хочу иметь возможность проверить, что после выхода из системы сеанс является недействительным.Для этого я хочу проверить, что после входа в систему сеанс существует, и я хочу получить детали сеанса.После выхода из системы сеанс больше не существует.

Один из способов, который я могу придумать, - проверить, существует ли сеанс в redis после входа в систему и не существует в redis после выхода из системы.Но я не уверен, как это сделать.

Пожалуйста, дайте мне знать, если есть какой-то другой подход, который я могу попробовать.

Вот то, что я до сих пор:

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

Но это дает ошибку:

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

Я также пытался использовать redis.keys ('*'), но безуспешно.

Любое указание на то, какбыло бы полезно получить доступ к сеансу.

1 Ответ

0 голосов
/ 25 апреля 2019

Вы пишете спецификации функций, вы не должны обращаться к DB / redis / etc непосредственно в тестах такого типа.Функциональные тесты - это тестирование того, что пользователь может и не может сделать, поэтому убедитесь, что выход из системы завершает сеанс, убедитесь, что ссылка для выхода из системы больше не существует и теперь существует ссылка для входа.Что-то вроде

scenario "session is invalidated on logout", js:true do
  login_page.login('abcxyz@test.com', 'usfyguysgugy')
  click_link 'logout'
  expect(page).not_to have_link('logout')
  expect(page).to have_link('login')
end

Если вы действительно хотите проверить детали сеанса, сохраненного в Redis, это будет сделано в спецификации контроллера или запроса.

...