diff --git a/app/mailers/user_mailer.rb b/app/mailers/user_mailer.rb index e8b33a860..83edc9f72 100644 --- a/app/mailers/user_mailer.rb +++ b/app/mailers/user_mailer.rb @@ -1,5 +1,4 @@ class UserMailer < ApplicationMailer - RESET_PATH = "/verify/%s" NOTHING_TO_CONFIRM = "FAILED EMAIL CHANGE" URI_KLASS = ENV["FORCE_SSL"] ? URI::HTTPS : URI::HTTP @@ -32,17 +31,14 @@ class UserMailer < ApplicationMailer def self.reset_url(user) x = UserMailer.url_object - x.path = RESET_PATH % [user.confirmation_token] + x.path = "/verify/#{user.confirmation_token}" x.to_s end def self.url_object(host = ENV.fetch("API_HOST"), port = ENV.fetch("API_PORT")) output = {} output[:host] = host - unless [nil, "443", "80"].include?(port) - output[:port] = port - end - output + output[:port] = port unless [nil, "443", "80"].include?(port) URI_KLASS.build(output) end end diff --git a/spec/mailers/user_mailer_spec.rb b/spec/mailers/user_mailer_spec.rb new file mode 100644 index 000000000..a6ee16d1e --- /dev/null +++ b/spec/mailers/user_mailer_spec.rb @@ -0,0 +1,15 @@ +require "spec_helper" + +describe UserMailer, type: :mailer do + let(:device) { FactoryBot.create(:device) } + it "generates appropriate URLs" do + no_port = UserMailer.url_object("altavista.com", nil) + ssl = UserMailer.url_object("altavista.com", "443") + basic = UserMailer.url_object("altavista.com", "80") + default = UserMailer.url_object("altavista.com", "3000") + expect(no_port.to_s).to eq("http://altavista.com") + expect(ssl.to_s).to eq("http://altavista.com") + expect(basic.to_s).to eq("http://altavista.com") + expect(default.to_s).to eq("http://altavista.com:3000") + end +end