docbrown/spec/system/admin/config/admin_updates_smtp_settings_spec.rb
Mac Siri 842e6880b8
Routine rubocop fix on /spec (#19217)
* Softrun rubocop

* Hardrun rubocop (-A)

* Change a rubocop rule

* Add missing cops

* Undo & redo rubocop -A
2023-03-21 09:55:26 -04:00

116 lines
4.5 KiB
Ruby

require "rails_helper"
RSpec.describe "Admin updates SMTP Settings" do
let(:admin) { create(:user, :super_admin) }
before do
sign_in admin
end
# We're unable to set and unset an ENV variable in Cypress to test different scenarios
# hence, we test the view layouts with Capybara, and we test successful updates with Cypress.
context "when Sendgrid is not enabled and SMTP is not enabled" do
before do
allow(ForemInstance).to receive(:sendgrid_enabled?).and_return(false)
allow(Settings::SMTP).to receive(:address).and_return(nil)
allow(Settings::SMTP).to receive(:user_name).and_return(nil)
allow(Settings::SMTP).to receive(:password).and_return(nil)
visit admin_config_path
find("summary", text: "Email Server Settings (SMTP)").click
end
it "does not show the 'Use my own email server' checkbox" do
within("form[data-testid='emailServerSettings']") do
expect(page).not_to have_content("Use my own email server")
end
end
it "shows the SMTP Form", :aggregate_failures do
within("form[data-testid='emailServerSettings']") do
expect(page).to have_selector(".js-custom-smtp-section")
expect(page).not_to have_selector(".js-custom-smtp-section.hidden")
end
end
end
context "when Sendgrid is enabled and SMTP is not enabled" do
before do
allow(ForemInstance).to receive(:sendgrid_enabled?).and_return(true)
allow(ForemInstance).to receive(:email).and_return("yo@forem.com")
allow(Settings::SMTP).to receive(:address).and_return(nil)
allow(Settings::SMTP).to receive(:user_name).and_return(nil)
allow(Settings::SMTP).to receive(:password).and_return(nil)
visit admin_config_path
find("summary", text: "Email Server Settings (SMTP)").click
end
it "shows the checkbox to allow one to toggle ones own server" do
within("form[data-testid='emailServerSettings']") do
expect(page).to have_content("Use my own email server")
end
end
it "shows a description" do
within("form[data-testid='emailServerSettings']") do
# rubocop:disable Layout/LineLength
expect(page).to have_content("As a Forem Cloud client, we provide an email server managed by the Forem team. All settings are managed by us and the from and reply email addresses are set as yo@forem.com. However, you can override this to use your own email server.")
# rubocop:enable Layout/LineLength
end
end
it "does not show an SMTP Form" do
within("form[data-testid='emailServerSettings']") do
expect(page).to have_selector(".js-custom-smtp-section.hidden")
end
end
end
context "when Sendgrid is not enabled and SMTP is enabled" do
before do
allow(ForemInstance).to receive(:sendgrid_enabled?).and_return(false)
allow(Settings::SMTP).to receive(:address).and_return("smtp.gmail.com")
allow(Settings::SMTP).to receive(:user_name).and_return("jane_doe")
allow(Settings::SMTP).to receive(:password).and_return("abc123456")
visit admin_config_path
find("summary", text: "Email Server Settings (SMTP)").click
end
it "does not show the 'Use my own email server' checkbox" do
within("form[data-testid='emailServerSettings']") do
expect(page).not_to have_content("Use my own email server")
end
end
it "shows the SMTP Form", :aggregate_failures do
within("form[data-testid='emailServerSettings']") do
expect(page).to have_selector(".js-custom-smtp-section")
expect(page).not_to have_selector(".js-custom-smtp-section.hidden")
end
end
end
context "when Sendgrid is enabled and SMTP is enabled" do
before do
allow(ForemInstance).to receive(:sendgrid_enabled?).and_return(true)
allow(Settings::SMTP).to receive(:address).and_return("smtp.gmail.com")
allow(Settings::SMTP).to receive(:user_name).and_return("jane_doe")
allow(Settings::SMTP).to receive(:password).and_return("abc123456")
visit admin_config_path
find("summary", text: "Email Server Settings (SMTP)").click
end
it "shows the 'Use my own email server' checkbox" do
within("form[data-testid='emailServerSettings']") do
expect(page).to have_content("Use my own email server")
end
end
it "shows an SMTP Form", :aggregate_failures do
within("form[data-testid='emailServerSettings']") do
expect(page).to have_selector(".js-custom-smtp-section")
expect(page).not_to have_selector(".js-custom-smtp-section.hidden")
end
end
end
end