From 2be0644281054913c1a5aac870317b518055cb55 Mon Sep 17 00:00:00 2001 From: Rete2 Date: Tue, 11 Jul 2017 15:15:23 +0200 Subject: [PATCH] Issue #6559: Changed default mail FROM header and tests --- app/mailers/notification_mailers/base.rb | 5 +++-- spec/mailers/notifier_spec.rb | 28 ++++++++++++++++++------ spec/mailers/report_spec.rb | 5 +++++ 3 files changed, 29 insertions(+), 9 deletions(-) diff --git a/app/mailers/notification_mailers/base.rb b/app/mailers/notification_mailers/base.rb index bf3569fad..4393229cc 100644 --- a/app/mailers/notification_mailers/base.rb +++ b/app/mailers/notification_mailers/base.rb @@ -38,8 +38,9 @@ module NotificationMailers host: "#{AppConfig.pod_uri.host}", to: name_and_address(@recipient.name, @recipient.email) } - - headers[:from] = "\"#{@sender.name} (diaspora*)\" <#{AppConfig.mail.sender_address}>" if @sender.present? + return headers if @sender.blank? + sender_in_header = @sender.profile.full_name.empty? ? @sender.username : @sender.name + headers[:from] = "\"Diaspora* (#{sender_in_header})\" <#{AppConfig.mail.sender_address}>" headers end diff --git a/spec/mailers/notifier_spec.rb b/spec/mailers/notifier_spec.rb index 3adaca132..74f65840f 100644 --- a/spec/mailers/notifier_spec.rb +++ b/spec/mailers/notifier_spec.rb @@ -246,7 +246,7 @@ describe Notifier, type: :mailer do end it "FROM: contains the sender's name" do - expect(@mail["From"].to_s).to eq("\"#{@cnv.author.name} (diaspora*)\" <#{AppConfig.mail.sender_address}>") + expect(@mail["From"].to_s).to eq("\"Diaspora* (#{@cnv.author.name})\" <#{AppConfig.mail.sender_address}>") end it "should use a generic subject" do @@ -290,7 +290,7 @@ describe Notifier, type: :mailer do end it "FROM: contains the sender's name" do - expect(comment_mail["From"].to_s).to eq("\"#{eve.name} (diaspora*)\" <#{AppConfig.mail.sender_address}>") + expect(comment_mail["From"].to_s).to eq("\"Diaspora* (#{eve.name})\" <#{AppConfig.mail.sender_address}>") end it "SUBJECT: has a snippet of the post contents, without markdown and without newlines" do @@ -331,7 +331,7 @@ describe Notifier, type: :mailer do end it "FROM: has the name of person commenting as the sender" do - expect(comment_mail["From"].to_s).to eq("\"#{eve.name} (diaspora*)\" <#{AppConfig.mail.sender_address}>") + expect(comment_mail["From"].to_s).to eq("\"Diaspora* (#{eve.name})\" <#{AppConfig.mail.sender_address}>") end it "SUBJECT: has a snippet of the post contents, without markdown and without newlines" do @@ -386,7 +386,7 @@ describe Notifier, type: :mailer do end it "FROM: contains the sender's name" do - expect(mail["From"].to_s).to eq("\"#{bob.name} (diaspora*)\" <#{AppConfig.mail.sender_address}>") + expect(mail["From"].to_s).to eq("\"Diaspora* (#{bob.name})\" <#{AppConfig.mail.sender_address}>") end it "SUBJECT: does not show the limited post" do @@ -411,7 +411,7 @@ describe Notifier, type: :mailer do end it "FROM: contains the sender's name" do - expect(mail["From"].to_s).to eq("\"#{bob.name} (diaspora*)\" <#{AppConfig.mail.sender_address}>") + expect(mail["From"].to_s).to eq("\"Diaspora* (#{bob.name})\" <#{AppConfig.mail.sender_address}>") end it "SUBJECT: does not show the limited post" do @@ -442,7 +442,7 @@ describe Notifier, type: :mailer do end it "FROM: contains the sender's name" do - expect(mail["From"].to_s).to eq("\"#{bob.name} (diaspora*)\" <#{AppConfig.mail.sender_address}>") + expect(mail["From"].to_s).to eq("\"Diaspora* (#{bob.name})\" <#{AppConfig.mail.sender_address}>") end it "SUBJECT: does not show the limited post" do @@ -478,7 +478,11 @@ describe Notifier, type: :mailer do expect(@confirm_email.to).to eq([bob.unconfirmed_email]) end - it "has the unconfirmed emil in the subject" do + it "FROM: header should be the default sender address" do + expect(@confirm_email["From"].to_s).to eq(AppConfig.mail.sender_address.to_s) + end + + it "has the unconfirmed email in the subject" do expect(@confirm_email.subject).to include(bob.unconfirmed_email) end @@ -502,6 +506,10 @@ describe Notifier, type: :mailer do expect(email.to).to eq([alice.email]) end + it "FROM: header should be the default sender address" do + expect(email["From"].to_s).to eq(AppConfig.mail.sender_address.to_s) + end + it "has the correct subject" do expect(email.subject).to eq(I18n.translate("notifier.csrf_token_fail.subject", name: alice.name)) end @@ -535,5 +543,11 @@ describe Notifier, type: :mailer do Notifier.send_notification("started_sharing", bob.id, person.id) }.to_not raise_error end + + it "FROM: header should be 'Diaspora* (username)' when there is no first and last name" do + bob.person.profile.update_attributes(first_name: "", last_name: "") + mail = Notifier.send_notification("started_sharing", alice.id, bob.person.id) + expect(mail["From"].to_s).to eq("\"Diaspora* (#{bob.person.username})\" <#{AppConfig.mail.sender_address}>") + end end end diff --git a/spec/mailers/report_spec.rb b/spec/mailers/report_spec.rb index ce168bb3b..906575b80 100644 --- a/spec/mailers/report_spec.rb +++ b/spec/mailers/report_spec.rb @@ -41,6 +41,11 @@ describe Report, type: :mailer do expect(ActionMailer::Base.deliveries[1].to[0]).to include(@user2.email) end + it "FROM: header should be the default sender address" do + ReportMailer.new_report(@post_report.id).each(&:deliver_now) + expect(ReportMailer.default[:from].to_s).to eq(AppConfig.mail.sender_address.to_s) + end + it "should send mail in recipent's prefered language" do ReportMailer.new_report(@post_report.id).each(&:deliver_now) expect(ActionMailer::Base.deliveries[0].subject).to match("Ein neuer post wurde als anstößig markiert")