From f0d6e0a36e6af3595d02ac861c6f12648f5cb7f5 Mon Sep 17 00:00:00 2001 From: Daniela Soares Feitosa Date: Fri, 30 Nov 2012 01:48:20 -0200 Subject: [PATCH] Tests for sending emails on spaminator --- plugins/spaminator/lib/spaminator_plugin/mailer.rb | 5 ++--- plugins/spaminator/lib/spaminator_plugin/spaminator.rb | 5 +++-- plugins/spaminator/test/unit/spaminator_plugin/mailer_test.rb | 27 +++++++++++++++++++++++++++ plugins/spaminator/test/unit/spaminator_plugin/spaminator_test.rb | 15 +++++++++++++++ test/unit/person_test.rb | 15 +++++++++++++++ 5 files changed, 62 insertions(+), 5 deletions(-) create mode 100644 plugins/spaminator/test/unit/spaminator_plugin/mailer_test.rb diff --git a/plugins/spaminator/lib/spaminator_plugin/mailer.rb b/plugins/spaminator/lib/spaminator_plugin/mailer.rb index da45030..1bd90db 100644 --- a/plugins/spaminator/lib/spaminator_plugin/mailer.rb +++ b/plugins/spaminator/lib/spaminator_plugin/mailer.rb @@ -1,14 +1,13 @@ class SpaminatorPlugin::Mailer < Noosfero::Plugin::MailerBase def inactive_person_notification(person) - hostname = person.hostname || person.environment.default_hostname recipients person.email - from 'no-reply@' + hostname + from "#{person.environment.name} <#{person.environment.contact_email}>" subject _("[%s] You must reactivate your account.") % person.environment.name content_type 'text/html' body :person => person, :environment => person.environment, - :url => url_for(:host => hostname, :controller => 'account', :action => 'forgot_password') + :url => url_for(:host => person.default_hostname, :controller => 'account', :action => 'forgot_password') end end diff --git a/plugins/spaminator/lib/spaminator_plugin/spaminator.rb b/plugins/spaminator/lib/spaminator_plugin/spaminator.rb index 22c7b35..2c29836 100644 --- a/plugins/spaminator/lib/spaminator_plugin/spaminator.rb +++ b/plugins/spaminator/lib/spaminator_plugin/spaminator.rb @@ -136,8 +136,9 @@ class SpaminatorPlugin::Spaminator end def disable_person(person) - person.disable - SpaminatorPlugin::Mailer.delay.deliver_inactive_person_notification(person) + if person.disable + SpaminatorPlugin::Mailer.delay.deliver_inactive_person_notification(person) + end end def mark_as_spammer(person) diff --git a/plugins/spaminator/test/unit/spaminator_plugin/mailer_test.rb b/plugins/spaminator/test/unit/spaminator_plugin/mailer_test.rb new file mode 100644 index 0000000..1778524 --- /dev/null +++ b/plugins/spaminator/test/unit/spaminator_plugin/mailer_test.rb @@ -0,0 +1,27 @@ +require 'test_helper' + +class SpaminatorPlugin::MailerTest < ActiveSupport::TestCase + CHARSET = "utf-8" + + def setup + Noosfero::Plugin::MailerBase.delivery_method = :test + Noosfero::Plugin::MailerBase.perform_deliveries = true + Noosfero::Plugin::MailerBase.deliveries = [] + @environment = Environment.default + @settings = Noosfero::Plugin::Settings.new(@environment, SpaminatorPlugin) + end + + attr_accessor :environment, :settings + + should 'be able to send a inactive person notification message' do + environment.contact_email = 'no-reply@noosfero.org' + environment.save + + person = create_user('spammer').person + mail = SpaminatorPlugin::Mailer.deliver_inactive_person_notification(person) + + assert_equal ['spammer@noosfero.org'], mail.to + assert_equal ['no-reply@noosfero.org'], mail.from + assert_match(/You must reactivate your account/, mail.subject) + end +end diff --git a/plugins/spaminator/test/unit/spaminator_plugin/spaminator_test.rb b/plugins/spaminator/test/unit/spaminator_plugin/spaminator_test.rb index a797f04..a4117c6 100644 --- a/plugins/spaminator/test/unit/spaminator_plugin/spaminator_test.rb +++ b/plugins/spaminator/test/unit/spaminator_plugin/spaminator_test.rb @@ -128,6 +128,21 @@ class SpaminatorPlugin::SpaminatorTest < ActiveSupport::TestCase assert !person.visible end + should 'send email notification after disabling person' do + person = create_user('spammer').person + assert_difference(ActionMailer::Base.deliveries, :size, 1) do + spaminator.send(:disable_person, person) + end + end + + should 'not send email notification if person was not disabled' do + person = create_user('spammer').person + person.expects(:disable).returns(false) + assert_no_difference(ActionMailer::Base.deliveries, :size) do + spaminator.send(:disable_person, person) + end + end + private def report diff --git a/test/unit/person_test.rb b/test/unit/person_test.rb index 0bb7d4b..2534207 100644 --- a/test/unit/person_test.rb +++ b/test/unit/person_test.rb @@ -1316,4 +1316,19 @@ class PersonTest < ActiveSupport::TestCase assert_includes non_abusers, person end + should 'not return canceled complaints as abusers' do + abuser = create_user('abuser1').person + AbuseComplaint.create!(:reported => abuser).finish + not_abuser = create_user('abuser2').person + AbuseComplaint.create!(:reported => not_abuser).cancel + + abusers = Person.abusers + assert_includes abusers, abuser + assert_not_includes abusers, not_abuser + + non_abusers = Person.non_abusers + assert_not_includes non_abusers, abuser + assert_includes non_abusers, not_abuser + end + end -- libgit2 0.21.2