aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLouise Crow <louise.crow@gmail.com>2015-05-28 17:26:41 +0100
committerLouise Crow <louise.crow@gmail.com>2015-05-28 17:26:41 +0100
commit52bc4b39a34af00296637e996d199a5c3f1724bf (patch)
tree15f5a95871a44d23159a2b472424307fff2178a1
parent7a0e9d6a082721dd3d5c3f558b88b8052dbc9106 (diff)
Address#to_s changes the input passed to it - dup before calling.
Otherwise UTF-8 encoded strings will be returned as ASCII-8BIT.
-rw-r--r--lib/mail_handler/backends/mail_backend.rb6
-rw-r--r--spec/lib/mail_handler/backends/mail_backend_spec.rb17
2 files changed, 20 insertions, 3 deletions
diff --git a/lib/mail_handler/backends/mail_backend.rb b/lib/mail_handler/backends/mail_backend.rb
index 9cd802ba9..974873b30 100644
--- a/lib/mail_handler/backends/mail_backend.rb
+++ b/lib/mail_handler/backends/mail_backend.rb
@@ -362,11 +362,11 @@ module MailHandler
raise "invalid email " + email + " passed to address_from_name_and_email"
end
if name.nil?
- return Mail::Address.new(email).to_s
+ return Mail::Address.new(email.dup).to_s
end
address = Mail::Address.new
- address.display_name = name
- address.address = email
+ address.display_name = name.dup
+ address.address = email.dup
address.to_s
end
diff --git a/spec/lib/mail_handler/backends/mail_backend_spec.rb b/spec/lib/mail_handler/backends/mail_backend_spec.rb
index 588033faf..eb1d4b167 100644
--- a/spec/lib/mail_handler/backends/mail_backend_spec.rb
+++ b/spec/lib/mail_handler/backends/mail_backend_spec.rb
@@ -142,4 +142,21 @@ DOC
end
+ describe :address_from_name_and_email do
+
+ it 'returns an address string' do
+ expected = 'Test User <test@example.com>'
+ address_from_name_and_email('Test User', 'test@example.com').should == expected
+ end
+
+ it 'does not change the name passed to it' do
+ original = "brønn"
+ name = original.dup
+ address_from_name_and_email(name, 'test@example.com')
+ name.should == original
+ end
+
+ end
+
+
end