Commit 6bcb3863f6bb553fdb290292b72dce6a857f5cad

Authored by Antonio Terceiro
1 parent 4585f58a

ActionItem1175: identifying the sender in header

app/controllers/public/contact_controller.rb
... ... @@ -10,6 +10,7 @@ class ContactController < PublicController
10 10 if request.post? && params[self.icaptcha_field].blank?
11 11 @contact = Contact.new(params[:contact])
12 12 @contact.dest = profile
  13 + @contact.sender = user
13 14 @contact.city = (!params[:city].blank? && City.exists?(params[:city])) ? City.find(params[:city]).name : nil
14 15 @contact.state = (!params[:state].blank? && State.exists?(params[:state])) ? State.find(params[:state]).name : nil
15 16 if @contact.deliver
... ...
app/models/contact.rb
... ... @@ -9,6 +9,7 @@ class Contact < ActiveRecord::Base #WithoutTable
9 9 [:receive_a_copy, :boolean]
10 10 ]
11 11 attr_accessor :dest
  12 + attr_accessor :sender
12 13  
13 14 N_('Subject'); N_('Message'); N_('City and state'); N_('e-Mail'); N_('Name')
14 15  
... ... @@ -25,6 +26,9 @@ class Contact < ActiveRecord::Base #WithoutTable
25 26 emails = contact.dest.notification_emails
26 27 recipients emails
27 28 from "#{contact.name} <#{contact.email}>"
  29 + if contact.sender
  30 + headers 'X-Noosfero-Sender' => contact.sender.identifier
  31 + end
28 32 if contact.receive_a_copy
29 33 cc "#{contact.name} <#{contact.email}>"
30 34 end
... ...
test/functional/contact_controller_test.rb
... ... @@ -120,4 +120,10 @@ class ContactControllerTest &lt; Test::Unit::TestCase
120 120 assert_response :redirect
121 121 assert_redirected_to :controller => 'account', :action => 'login'
122 122 end
  123 +
  124 + should 'identify sender' do
  125 + post :new, :profile => enterprise.identifier, :contact => {:name => 'john', :subject => 'Hi', :email => 'visitor@mail.invalid', :message => 'Hi, all', :state => '', :city => ''}
  126 + assert_equal Person['contact_test_user'], assigns(:contact).sender
  127 + end
  128 +
123 129 end
... ...
test/unit/contact_sender_test.rb
... ... @@ -60,6 +60,14 @@ class ContactSenderTest &lt; Test::Unit::TestCase
60 60 assert_equal [person.email], response.to
61 61 end
62 62  
  63 + should 'identify the sender in the message headers' do
  64 + recipient = create_user('contacted_user').person
  65 + sender = create_user('sender_user').person
  66 + c = Contact.new(:dest => recipient, :sender => sender)
  67 + sent_message = Contact::Sender.deliver_mail(c)
  68 + assert_equal 'sender_user', sent_message['X-Noosfero-Sender'].to_s
  69 + end
  70 +
63 71 private
64 72  
65 73 def read_fixture(action)
... ...