Files
nairobi/spec/system/sessions_spec.rb
Javi Martín 83e4633643 Don't redirect to POST request URLs after sign out
Sometimes we define URLs for POST requests which are not defined for GET
requests, such as "/residence", so redirecting to it after signing out
results in a routing error.

So instead of using the request referer, we're using the stored location
devise uses, and we're not storing locations in POST requests.
2020-08-11 18:19:48 +02:00

64 lines
1.9 KiB
Ruby

require "rails_helper"
describe "Sessions" do
scenario "Staying in the same page after doing login/logout" do
user = create(:user, sign_in_count: 10)
debate = create(:debate)
visit debate_path(debate)
click_link "Sign in"
fill_in "user_login", with: user.email
fill_in "user_password", with: user.password
click_button "Enter"
expect(page).to have_content("You have been signed in successfully")
expect(page).to have_current_path(debate_path(debate))
click_link "Sign out"
expect(page).to have_content("You have been signed out successfully")
expect(page).to have_current_path(debate_path(debate))
end
scenario "Sign in redirects keeping GET parameters" do
create(:user, :level_two, email: "dev@consul.dev", password: "consuldev")
heading = create(:budget_heading, name: "outskirts")
visit budget_investments_path(heading.budget, heading_id: "outskirts")
click_link "Sign in"
fill_in "user_login", with: "dev@consul.dev"
fill_in "user_password", with: "consuldev"
click_button "Enter"
expect(page).to have_current_path budget_investments_path(heading.budget, heading_id: "outskirts")
end
scenario "Sign in redirects to the homepage if the user was there" do
user = create(:user, :level_two)
visit debates_path
visit "/"
click_link "Sign in"
fill_in "user_login", with: user.email
fill_in "user_password", with: user.password
click_button "Enter"
expect(page).to have_current_path "/"
end
scenario "Sign out does not redirect to POST requests URLs" do
login_as(create(:user))
visit account_path
click_link "Verify my account"
click_button "Verify residence"
expect(page).to have_content(/errors prevented the verification of your residence/)
click_link "Sign out"
expect(page).to have_content "You must sign in or register to continue."
expect(page).to have_current_path new_user_session_path
end
end