From fbe7645c0ec355d492ed2a1437e02d3d85c96860 Mon Sep 17 00:00:00 2001 From: S-H-GAMELINKS Date: Sun, 1 Dec 2024 13:32:28 +0900 Subject: [PATCH] Add session request spec --- spec/rails_helper.rb | 1 - spec/requests/session_controller_spec.rb | 82 ++++++++++++++++++++++++ 2 files changed, 82 insertions(+), 1 deletion(-) create mode 100644 spec/requests/session_controller_spec.rb diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb index 983ced3..b649749 100644 --- a/spec/rails_helper.rb +++ b/spec/rails_helper.rb @@ -3,7 +3,6 @@ add_filter "app/controllers/application_controller.rb" add_filter "app/channels/application_cable/connection.rb" add_filter "app/controllers/passwords_controller.rb" - add_filter "app/controllers/sessions_controller.rb" add_filter "app/controllers/concerns/authentication.rb" add_filter "app/mailers/application_mailer.rb" add_filter "app/mailers/passwords_mailer.rb" diff --git a/spec/requests/session_controller_spec.rb b/spec/requests/session_controller_spec.rb new file mode 100644 index 0000000..a8f0d96 --- /dev/null +++ b/spec/requests/session_controller_spec.rb @@ -0,0 +1,82 @@ +require "rails_helper" + +RSpec.describe "/session", type: :request do + describe "GET /session/new" do + it "should return 200" do + get "/session/new" + + expect(response.status).to eq 200 + end + end + + describe "POST /session" do + context "when user is not authenticated" do + context "when no user data in database" do + it "should redirect to /session/new" do + post "/session", params: { + email_address: "activity-pub-relay@example.com", + password: "activity-pub-relay-pass" + } + + expect(response).to redirect_to new_session_path + end + end + + context "when user data in database" do + before do + create(:user, email_address: "activity-pub-relay@example.com", password: "activity-pub-relay-pass") + end + + context "when wrong user email address given" do + it "should redirect to /session/new" do + post "/session", params: { + email_address: "wrong@example.com", + password: "activity-pub-relay-pass" + } + + expect(response).to redirect_to new_session_path + end + end + + context "when wrong user password given" do + it "should redirect to /session/new" do + post "/session", params: { + email_address: "activity-pub-relay@example.com", + password: "wrong-pass" + } + + expect(response).to redirect_to new_session_path + end + end + + context "when correct user email address and password given" do + it "should redirect to /dashboard" do + post "/session", params: { + email_address: "activity-pub-relay@example.com", + password: "activity-pub-relay-pass" + } + + expect(response).to redirect_to dashboard_path + end + end + end + end + + context "when user is authenticated" do + let(:user) { create(:user) } + + before do + login_as(user) + end + + it "should redirect /dashboard" do + post "/session", params: { + email_address: "activity-pub-relay@example.com", + password: "activity-pub-relay-pass" + } + + expect(response).to redirect_to dashboard_path + end + end + end +end