sanitize_email 1.0.2 → 1.0.3

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG CHANGED
@@ -1,4 +1,12 @@
1
- Version 1.0.0.rc4 - AUG.11.2012
1
+ Version 1.0.3 - AUG.12.2012
2
+ - Accidentally broke spec suite with 1.0.2 - fixed
3
+ - Expanded spec suite
4
+ - Split test_helpers from rspec_matchers (test_helpers may be useful in TestUnit
5
+ - Moving Examples from README to wiki
6
+ - Document and implement working deprecation of version 0's SanitizeEmail::Config.config[:force_sanitize] behavior
7
+ - Now use SanitizeEmail.force_sanitize = true # or false or nil
8
+
9
+ Version 1.0.2 - AUG.11.2012
2
10
  - Massive improvement to spec suite, and found bleeding
3
11
  - needed to unregister the interceptors:
4
12
  - Mail.class_variable_get(:@@delivery_interceptors).pop
@@ -8,9 +16,11 @@ Version 1.0.0.rc4 - AUG.11.2012
8
16
  - Force Sanitization On for a block
9
17
  - Added SanitizeEmail.unsanitary &block
10
18
  - Force Sanitization Off for a block
11
- - Added SanitizeEmail.force_sanitize = true # or false
19
+ - Added SanitizeEmail.force_sanitize = true # or false or nil
12
20
  - Force Sanitization On or Off
13
21
 
22
+ Version 1.0.1 - Unintentional, unexpected bump behavior from gem-release gem (Issues #24 & #25)
23
+
14
24
  Version 1.0.0.rc3 - AUG.08.2012
15
25
  - Forgot to switch from jeweler to gem-release, so making appropriate changes and bumping again
16
26
  - Aligning closer to bundler gem defaults
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- sanitize_email (1.0.0.rc3)
4
+ sanitize_email (1.0.2)
5
5
  facets (> 0)
6
6
 
7
7
  GEM
@@ -171,6 +171,7 @@ module SanitizeEmail
171
171
  return sanitized_addresses unless SanitizeEmail.use_actual_email_as_sanitized_user_name
172
172
 
173
173
  with_user_names = self.inject_user_names(real_addresses, sanitized_addresses)
174
+ #puts "real_addresses 2: #{real_addresses}"
174
175
  #puts "override_email 5: #{type} - #{with_user_names}"
175
176
  # Otherwise inject the email as the 'user name'
176
177
  return with_user_names
@@ -3,10 +3,9 @@ require 'facets/module/mattr' # gives cattr
3
3
  module SanitizeEmail
4
4
  class Config
5
5
 
6
- cattr_reader :config
7
- cattr_writer :config
6
+ extend SanitizeEmail::Deprecation
8
7
 
9
- self.config ||= {
8
+ DEFAULTS = {
10
9
  # Specify the BCC addresses for the messages that go out in 'local' environments
11
10
  :sanitized_bcc => nil,
12
11
 
@@ -33,6 +32,11 @@ module SanitizeEmail
33
32
 
34
33
  :activation_proc => Proc.new { false }
35
34
  }
35
+
36
+ cattr_reader :config
37
+ cattr_writer :config
38
+
39
+ self.config ||= DEFAULTS
36
40
  def self.configure &block
37
41
  yield @@config
38
42
 
@@ -47,6 +51,13 @@ module SanitizeEmail
47
51
  # because we are still inside the configure block.
48
52
  @@config[:sanitized_to] = @@config[:sanitized_recipients]
49
53
  end
54
+ if !@@config[:force_sanitize].nil?
55
+ replacement = "
56
+ Please use SanitizeEmail.force_sanitize or SanitizeEmail.sanitary instead.
57
+ Refer to https://github.com/pboling/sanitize_email/wiki for examples."
58
+ deprecation("SanitizeEmail::Config.config[:force_sanitize]", replacement)
59
+ SanitizeEmail.force_sanitize = @@config[:force_sanitize]
60
+ end
50
61
  end
51
62
 
52
63
  end
@@ -28,16 +28,20 @@ module SanitizeEmail
28
28
  alias_method old_name, name
29
29
  # And replace it with a wrapped version
30
30
  define_method(name) do |*args, &block|
31
- unless @@deprecate_in_silence
32
- if replacement
33
- warn "SanitizeEmail: ##{name} deprecated (please use ##{replacement})"
34
- else
35
- warn "SanitizeEmail: ##{name} deprecated"
36
- end
37
- end
31
+ self.deprecation(name, " (please use ##{replacement})")
38
32
  send old_name, *args, &block
39
33
  end
40
34
  end
41
35
 
36
+ def deprecation(name, replacement = nil)
37
+ unless @@deprecate_in_silence
38
+ if replacement
39
+ warn "SanitizeEmail: ##{name} deprecated#{replacement}"
40
+ else
41
+ warn "SanitizeEmail: ##{name} deprecated"
42
+ end
43
+ end
44
+ end
45
+
42
46
  end
43
47
  end
@@ -0,0 +1,31 @@
1
+ require 'sanitize_email/test_helpers'
2
+
3
+ module SanitizeEmail
4
+ module RspecMatchers
5
+ include SanitizeEmail::TestHelpers
6
+ [:from, :to, :cc, :bcc, :subject, :reply_to].each do |attribute|
7
+ RSpec::Matchers.define "have_#{attribute}" do |matcher|
8
+ match do |actual|
9
+ email_matching(matcher, attribute, actual)
10
+ end
11
+ end
12
+ end
13
+
14
+ [:from, :to, :cc, :bcc, :subject, :reply_to].each do |attribute|
15
+ RSpec::Matchers.define "be_#{attribute}" do |matcher|
16
+ match do |actual|
17
+ string_matching(matcher, attribute, actual)
18
+ end
19
+ end
20
+ end
21
+
22
+ RSpec::Matchers.define "have_to_username" do |matcher|
23
+ def get_username(email_message)
24
+ email_message.header.fields[3].value
25
+ end
26
+ match do |actual|
27
+ string_matching(matcher, :to_username, get_username(actual))
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,24 @@
1
+ module SanitizeEmail
2
+ module TestHelpers
3
+ class UnexpectedMailType < StandardError; end
4
+
5
+ def string_matching(matcher, part, mail_or_part)
6
+ if mail_or_part.respond_to?(:=~) # Can we match a regex against it?
7
+ mail_or_part =~ Regexp.new(Regexp.escape(matcher))
8
+ else
9
+ raise UnexpectedMailType, "Cannot match #{matcher} for #{part}"
10
+ end
11
+ end
12
+
13
+ # Normalize arrays to strings
14
+ def array_matching(matcher, part, mail_or_part)
15
+ mail_or_part = mail_or_part.join(', ') if mail_or_part.respond_to?(:join)
16
+ string_matching(matcher, part, mail_or_part)
17
+ end
18
+
19
+ def email_matching(matcher, part, mail_or_part)
20
+ array_matching(matcher, part, mail_or_part.send(part))
21
+ end
22
+
23
+ end
24
+ end
@@ -1,5 +1,5 @@
1
1
  #Copyright (c) 2008-12 Peter H. Boling of 9thBit LLC
2
2
  #Released under the MIT license
3
3
  module SanitizeEmail
4
- VERSION = '1.0.2'
4
+ VERSION = '1.0.3'
5
5
  end
@@ -3,10 +3,9 @@
3
3
 
4
4
  module SanitizeEmail
5
5
  require 'sanitize_email/version'
6
+ require 'sanitize_email/deprecation'
6
7
  require 'sanitize_email/config'
7
8
  require 'sanitize_email/bleach'
8
- require 'sanitize_email/email_matchers'
9
- require 'sanitize_email/deprecation'
10
9
 
11
10
  # Allow non-rails implementations to use this gem
12
11
  if defined?(Rails) && ::Rails::VERSION::MAJOR >= 3
@@ -18,14 +18,13 @@ describe SanitizeEmail do
18
18
 
19
19
  # Cleanup, so tests don't bleed
20
20
  after(:each) do
21
- SanitizeEmail::Config.config = {}
21
+ SanitizeEmail::Config.config = SanitizeEmail::Config::DEFAULTS
22
22
  SanitizeEmail.force_sanitize = nil
23
23
  Mail.class_variable_get(:@@delivery_interceptors).pop
24
24
  end
25
25
 
26
26
  def sanitize_spec_dryer(rails_env = 'test')
27
27
  Launchy.stub(:open)
28
- Launchy.should_receive(:open)
29
28
  location = File.expand_path('../tmp/mail_dump', __FILE__)
30
29
  FileUtils.rm_rf(location)
31
30
  Mail.defaults do
@@ -35,17 +34,20 @@ describe SanitizeEmail do
35
34
  end
36
35
 
37
36
  def configure_sanitize_email(sanitize_hash = {})
38
- options = DEFAULT_TEST_CONFIG.merge(sanitize_hash)
37
+ options = DEFAULT_TEST_CONFIG.merge(sanitize_hash).dup
39
38
  options.reverse_merge!({ :sanitized_to => 'to@sanitize_email.org' }) unless sanitize_hash.has_key?(:sanitized_recipients)
40
39
  SanitizeEmail::Config.configure do |config|
40
+ config[:activation_proc] = options[:activation_proc]
41
41
  config[:sanitized_to] = options[:sanitized_to]
42
42
  config[:sanitized_cc] = options[:sanitized_cc]
43
43
  config[:sanitized_bcc] = options[:sanitized_bcc]
44
44
  config[:use_actual_email_prepended_to_subject] = options[:use_actual_email_prepended_to_subject]
45
45
  config[:use_actual_email_as_sanitized_user_name] = options[:use_actual_email_as_sanitized_user_name]
46
- # For testing deprecated configuration options:
46
+
47
+ # For testing *deprecated* configuration options:
47
48
  config[:local_environments] = options[:local_environments] if options[:local_environments]
48
49
  config[:sanitized_recipients] = options[:sanitized_recipients] if options[:sanitized_recipients]
50
+ config[:force_sanitize] = options[:force_sanitize] unless options[:force_sanitize].nil?
49
51
  end
50
52
  Mail.register_interceptor(SanitizeEmail::Bleach.new)
51
53
  end
@@ -73,41 +75,147 @@ describe SanitizeEmail do
73
75
  end
74
76
  end
75
77
 
76
- context "en email" do
77
- context "engaged" do
78
+ context "module methods" do
79
+ before(:each) do
80
+ sanitize_spec_dryer
81
+ end
82
+
83
+ context "unsanitary" do
78
84
  before(:each) do
79
- sanitize_spec_dryer
80
85
  configure_sanitize_email
86
+ unsanitary_mail_delivery
87
+ end
88
+ it "should not alter non-sanitized attributes" do
89
+ @email_message.should have_from('from@example.org')
90
+ @email_message.should have_reply_to('reply_to@example.org')
91
+ end
92
+ it "should not prepend overrides" do
93
+ @email_message.should_not have_to_username("to at sanitize_email.org")
94
+ @email_message.should_not have_subject("(to at sanitize_email.org)")
81
95
  end
96
+ it "alters nothing" do
97
+ @email_message.should have_from('from@example.org')
98
+ @email_message.should have_reply_to('reply_to@example.org')
99
+ @email_message.should have_from("from@example.org")
100
+ @email_message.should have_to("to@example.org")
101
+ @email_message.should_not have_to_username("to at")
102
+ @email_message.should have_cc("cc@example.org")
103
+ @email_message.should have_bcc("bcc@example.org")
104
+ @email_message.should have_subject("original subject")
105
+ end
106
+ end
82
107
 
83
- context "false" do
108
+ context "sanitary" do
109
+ before(:each) do
110
+ configure_sanitize_email
111
+ sanitary_mail_delivery
112
+ end
113
+ it "should not alter non-sanitized attributes" do
114
+ @email_message.should have_from('from@example.org')
115
+ @email_message.should have_reply_to('reply_to@example.org')
116
+ end
117
+ it "should not prepend overrides" do
118
+ @email_message.should_not have_to_username("to at sanitize_email.org")
119
+ @email_message.should_not have_subject("(to at sanitize_email.org)")
120
+ end
121
+ it "should override" do
122
+ @email_message.should have_to("to@sanitize_email.org")
123
+ @email_message.should have_cc("cc@sanitize_email.org")
124
+ @email_message.should have_bcc("bcc@sanitize_email.org")
125
+ end
126
+ it "should not prepend originals by default" do
127
+ @email_message.should_not have_to_username("to at example.org <to@sanitize_email.org>")
128
+ @email_message.should_not have_subject("(to at example.org) original subject")
129
+ end
130
+ end
131
+
132
+ context "force_sanitize" do
133
+ context "true" do
84
134
  before(:each) do
85
- unsanitary_mail_delivery
135
+ # Should turn off sanitization using the force_sanitize
136
+ configure_sanitize_email({:activation_proc => Proc.new {true}})
137
+ SanitizeEmail.force_sanitize = true
138
+ mail_delivery
86
139
  end
87
140
  it "should not alter non-sanitized attributes" do
88
141
  @email_message.should have_from('from@example.org')
89
142
  @email_message.should have_reply_to('reply_to@example.org')
90
143
  end
91
- it "should not prepend overrides" do
92
- @email_message.should_not have_to_username("to at sanitize_email.org")
93
- @email_message.should_not have_subject("(to at sanitize_email.org)")
144
+ it "should override" do
145
+ @email_message.should have_to("to@sanitize_email.org")
146
+ @email_message.should have_cc("cc@sanitize_email.org")
147
+ @email_message.should have_bcc("bcc@sanitize_email.org")
148
+ end
149
+ end
150
+ context "false" do
151
+ before(:each) do
152
+ # Should turn off sanitization using the force_sanitize
153
+ configure_sanitize_email({:activation_proc => Proc.new {true}})
154
+ SanitizeEmail.force_sanitize = false
155
+ mail_delivery
94
156
  end
95
- it "alters nothing" do
157
+ it "should not alter non-sanitized attributes" do
96
158
  @email_message.should have_from('from@example.org')
97
159
  @email_message.should have_reply_to('reply_to@example.org')
98
- @email_message.should have_from("from@example.org")
160
+ end
161
+ it "should not alter normally sanitized attributes" do
99
162
  @email_message.should have_to("to@example.org")
100
- @email_message.should_not have_to_username("to at")
101
163
  @email_message.should have_cc("cc@example.org")
102
164
  @email_message.should have_bcc("bcc@example.org")
103
- @email_message.should have_subject("original subject")
104
165
  end
105
166
  end
167
+ context "nil" do
168
+ context "activation proc enables" do
169
+ before(:each) do
170
+ sanitize_spec_dryer
171
+ # Should ignore force_sanitize setting
172
+ configure_sanitize_email({:activation_proc => Proc.new {true}})
173
+ SanitizeEmail.force_sanitize = nil
174
+ mail_delivery
175
+ end
176
+ it "should not alter non-sanitized attributes" do
177
+ @email_message.should have_from('from@example.org')
178
+ @email_message.should have_reply_to('reply_to@example.org')
179
+ end
180
+ it "should override" do
181
+ @email_message.should have_to("to@sanitize_email.org")
182
+ @email_message.should have_cc("cc@sanitize_email.org")
183
+ @email_message.should have_bcc("bcc@sanitize_email.org")
184
+ end
185
+ end
186
+ context "activation proc disables" do
187
+ before(:each) do
188
+ sanitize_spec_dryer
189
+ # Should ignore force_sanitize setting
190
+ configure_sanitize_email({:activation_proc => Proc.new {false}})
191
+ SanitizeEmail.force_sanitize = nil
192
+ mail_delivery
193
+ end
194
+ it "should not alter non-sanitized attributes" do
195
+ @email_message.should have_from('from@example.org')
196
+ @email_message.should have_reply_to('reply_to@example.org')
197
+ end
198
+ it "should not alter normally sanitized attributes" do
199
+ @email_message.should have_to("to@example.org")
200
+ @email_message.should have_cc("cc@example.org")
201
+ @email_message.should have_bcc("bcc@example.org")
202
+ end
203
+ end
204
+ end
205
+ end
206
+ end
106
207
 
208
+ context "config options" do
209
+ context ":use_actual_email_prepended_to_subject" do
107
210
  context "true" do
108
211
  before(:each) do
212
+ sanitize_spec_dryer
213
+ configure_sanitize_email({:use_actual_email_prepended_to_subject => true})
109
214
  sanitary_mail_delivery
110
215
  end
216
+ it "original to is prepended" do
217
+ @email_message.should have_subject("(to at example.org) original subject")
218
+ end
111
219
  it "should not alter non-sanitized attributes" do
112
220
  @email_message.should have_from('from@example.org')
113
221
  @email_message.should have_reply_to('reply_to@example.org')
@@ -116,153 +224,138 @@ describe SanitizeEmail do
116
224
  @email_message.should_not have_to_username("to at sanitize_email.org")
117
225
  @email_message.should_not have_subject("(to at sanitize_email.org)")
118
226
  end
119
- it "should override" do
120
- @email_message.should have_to("to@sanitize_email.org")
121
- @email_message.should have_cc("cc@sanitize_email.org")
122
- @email_message.should have_bcc("bcc@sanitize_email.org")
227
+ end
228
+ context "false" do
229
+ before(:each) do
230
+ sanitize_spec_dryer
231
+ configure_sanitize_email({:use_actual_email_prepended_to_subject => false})
232
+ sanitary_mail_delivery
123
233
  end
124
- it "should not prepend originals by default" do
125
- @email_message.should_not have_to_username("to at example.org <to@sanitize_email.org>")
234
+ it "original to is not prepended" do
126
235
  @email_message.should_not have_subject("(to at example.org) original subject")
127
236
  end
237
+ it "should not alter non-sanitized attributes" do
238
+ @email_message.should have_from('from@example.org')
239
+ @email_message.should have_reply_to('reply_to@example.org')
240
+ end
241
+ it "should not prepend overrides" do
242
+ @email_message.should_not have_to_username("to at sanitize_email.org")
243
+ @email_message.should_not have_subject("(to at sanitize_email.org)")
244
+ end
128
245
  end
129
246
  end
130
247
 
131
- context "config options" do
132
- context ":use_actual_email_prepended_to_subject" do
133
- context "true" do
134
- before(:each) do
135
- sanitize_spec_dryer
136
- configure_sanitize_email({:use_actual_email_prepended_to_subject => true})
137
- sanitary_mail_delivery
138
- end
139
- it "original to is prepended" do
140
- @email_message.should have_subject("(to at example.org) original subject")
141
- end
142
- it "should not alter non-sanitized attributes" do
143
- @email_message.should have_from('from@example.org')
144
- @email_message.should have_reply_to('reply_to@example.org')
145
- end
146
- it "should not prepend overrides" do
147
- @email_message.should_not have_to_username("to at sanitize_email.org")
148
- @email_message.should_not have_subject("(to at sanitize_email.org)")
149
- end
248
+ context ":use_actual_email_as_sanitized_user_name" do
249
+ context "true" do
250
+ before(:each) do
251
+ sanitize_spec_dryer
252
+ configure_sanitize_email({:use_actual_email_as_sanitized_user_name => true})
253
+ sanitary_mail_delivery
150
254
  end
151
- context "false" do
152
- before(:each) do
153
- sanitize_spec_dryer
154
- configure_sanitize_email({:use_actual_email_prepended_to_subject => false})
155
- sanitary_mail_delivery
156
- end
157
- it "original to is not prepended" do
158
- @email_message.should_not have_subject("(to at example.org) original subject")
159
- end
160
- it "should not alter non-sanitized attributes" do
161
- @email_message.should have_from('from@example.org')
162
- @email_message.should have_reply_to('reply_to@example.org')
163
- end
164
- it "should not prepend overrides" do
165
- @email_message.should_not have_to_username("to at sanitize_email.org")
166
- @email_message.should_not have_subject("(to at sanitize_email.org)")
167
- end
255
+ it "original to is munged and prepended" do
256
+ @email_message.should have_to_username("to at example.org <to@sanitize_email.org>")
257
+ end
258
+ it "should not alter non-sanitized attributes" do
259
+ @email_message.should have_from('from@example.org')
260
+ @email_message.should have_reply_to('reply_to@example.org')
261
+ end
262
+ it "should not prepend overrides" do
263
+ @email_message.should_not have_to_username("to at sanitize_email.org")
264
+ @email_message.should_not have_subject("(to at sanitize_email.org)")
265
+ end
266
+ end
267
+ context "false" do
268
+ before(:each) do
269
+ sanitize_spec_dryer
270
+ configure_sanitize_email({:use_actual_email_as_sanitized_user_name => false})
271
+ sanitary_mail_delivery
272
+ end
273
+ it "original to is not prepended" do
274
+ @email_message.should_not have_to_username("to at example.org <to@sanitize_email.org>")
275
+ end
276
+ it "should not alter non-sanitized attributes" do
277
+ @email_message.should have_from('from@example.org')
278
+ @email_message.should have_reply_to('reply_to@example.org')
279
+ end
280
+ it "should not prepend overrides" do
281
+ @email_message.should_not have_to_username("to at sanitize_email.org")
282
+ @email_message.should_not have_subject("(to at sanitize_email.org)")
168
283
  end
169
284
  end
285
+ end
170
286
 
171
- context ":use_actual_email_as_sanitized_user_name" do
172
- context "true" do
287
+ context "deprecated" do
288
+ #before(:each) do
289
+ # SanitizeEmail::Deprecation.deprecate_in_silence = false
290
+ #end
291
+ context ":local_environments" do
292
+ context "matching" do
173
293
  before(:each) do
174
- sanitize_spec_dryer
175
- configure_sanitize_email({:use_actual_email_as_sanitized_user_name => true})
176
- sanitary_mail_delivery
177
- end
178
- it "original to is munged and prepended" do
179
- @email_message.should have_to_username("to at example.org <to@sanitize_email.org>")
294
+ sanitize_spec_dryer('test')
295
+ configure_sanitize_email({:local_environments => ['test']})
296
+ SanitizeEmail[:activation_proc].call.should == true
297
+ mail_delivery
180
298
  end
181
299
  it "should not alter non-sanitized attributes" do
182
300
  @email_message.should have_from('from@example.org')
183
301
  @email_message.should have_reply_to('reply_to@example.org')
184
302
  end
185
- it "should not prepend overrides" do
186
- @email_message.should_not have_to_username("to at sanitize_email.org")
187
- @email_message.should_not have_subject("(to at sanitize_email.org)")
303
+ it "should use activation_proc for matching environment" do
304
+ @email_message.should have_to("to@sanitize_email.org")
305
+ @email_message.should have_cc("cc@sanitize_email.org")
306
+ @email_message.should have_bcc("bcc@sanitize_email.org")
188
307
  end
189
308
  end
190
- context "false" do
309
+ context "non-matching" do
191
310
  before(:each) do
192
- sanitize_spec_dryer
193
- configure_sanitize_email({:use_actual_email_as_sanitized_user_name => false})
194
- sanitary_mail_delivery
195
- end
196
- it "original to is not prepended" do
197
- @email_message.should_not have_to_username("to at example.org <to@sanitize_email.org>")
311
+ sanitize_spec_dryer('production')
312
+ configure_sanitize_email({:local_environments => ['development']}) # Won't match!
313
+ SanitizeEmail[:activation_proc].call.should == false
314
+ mail_delivery
198
315
  end
199
316
  it "should not alter non-sanitized attributes" do
200
317
  @email_message.should have_from('from@example.org')
201
318
  @email_message.should have_reply_to('reply_to@example.org')
202
319
  end
203
- it "should not prepend overrides" do
204
- @email_message.should_not have_to_username("to at sanitize_email.org")
205
- @email_message.should_not have_subject("(to at sanitize_email.org)")
320
+ it "should use activation_proc for non-matching environment" do
321
+ @email_message.should have_to("to@example.org")
322
+ @email_message.should have_cc("cc@example.org")
323
+ @email_message.should have_bcc("bcc@example.org")
206
324
  end
207
325
  end
208
326
  end
209
327
 
210
- context "deprecated" do
211
- #before(:each) do
212
- # SanitizeEmail::Deprecation.deprecate_in_silence = false
213
- #end
214
- context ":local_environments" do
215
- context "matching" do
216
- before(:each) do
217
- sanitize_spec_dryer('test')
218
- configure_sanitize_email({:local_environments => ['test']})
219
- SanitizeEmail[:activation_proc].call.should == true
220
- mail_delivery
221
- end
222
- it "should not alter non-sanitized attributes" do
223
- @email_message.should have_from('from@example.org')
224
- @email_message.should have_reply_to('reply_to@example.org')
225
- end
226
- it "should use activation_proc for matching environment" do
227
- @email_message.should have_to("to@sanitize_email.org")
228
- @email_message.should have_cc("cc@sanitize_email.org")
229
- @email_message.should have_bcc("bcc@sanitize_email.org")
230
- end
231
- end
232
- context "non-matching" do
233
- before(:each) do
234
- sanitize_spec_dryer('production')
235
- configure_sanitize_email({:local_environments => ['development']}) # Won't match!
236
- SanitizeEmail[:activation_proc].call.should == false
237
- mail_delivery
238
- end
239
- it "should not alter non-sanitized attributes" do
240
- @email_message.should have_from('from@example.org')
241
- @email_message.should have_reply_to('reply_to@example.org')
242
- end
243
- it "should use activation_proc for non-matching environment" do
244
- @email_message.should have_to("to@example.org")
245
- @email_message.should have_cc("cc@example.org")
246
- @email_message.should have_bcc("bcc@example.org")
247
- end
248
- end
328
+ context ":sanitized_recipients" do
329
+ before(:each) do
330
+ sanitize_spec_dryer
331
+ configure_sanitize_email({:sanitized_recipients => 'barney@sanitize_email.org'})
332
+ sanitary_mail_delivery
333
+ end
334
+ it "should not alter non-sanitized attributes" do
335
+ @email_message.should have_from('from@example.org')
336
+ @email_message.should have_reply_to('reply_to@example.org')
249
337
  end
338
+ it "used as sanitized_to" do
339
+ @email_message.should have_to("barney@sanitize_email.org")
340
+ end
341
+ end
250
342
 
251
- context ":sanitized_recipients" do
252
- before(:each) do
253
- sanitize_spec_dryer
254
- configure_sanitize_email({:sanitized_recipients => 'barney@sanitize_email.org'})
255
- sanitary_mail_delivery
256
- end
257
- it "should not alter non-sanitized attributes" do
258
- @email_message.should have_from('from@example.org')
259
- @email_message.should have_reply_to('reply_to@example.org')
260
- end
261
- it "used as sanitized_to" do
262
- @email_message.should have_to("barney@sanitize_email.org")
263
- end
343
+ context ":force_sanitize" do
344
+ before(:each) do
345
+ sanitize_spec_dryer
346
+ # Should turn off sanitization using the force_sanitize
347
+ configure_sanitize_email({:activation_proc => Proc.new {true}, :force_sanitize => false})
348
+ mail_delivery
349
+ end
350
+ it "should not alter non-sanitized attributes" do
351
+ @email_message.should have_from('from@example.org')
352
+ @email_message.should have_reply_to('reply_to@example.org')
353
+ end
354
+ it "should not alter normally sanitized attributes" do
355
+ @email_message.should have_to("to@example.org")
264
356
  end
265
357
  end
358
+
266
359
  end
267
360
  end
268
361
  end
data/spec/spec_helper.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  require 'sanitize_email'
2
+ require 'sanitize_email/rspec_matchers'
2
3
  require 'launchy'
3
4
  require 'mail'
4
5
  require 'rails'
@@ -14,6 +15,6 @@ RSpec.configure do |config|
14
15
  config.run_all_when_everything_filtered = true
15
16
  #config.filter_run :focus
16
17
 
17
- config.include SanitizeEmail::EmailMatchers
18
+ config.include SanitizeEmail::RspecMatchers
18
19
  end
19
20
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sanitize_email
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -217,9 +217,10 @@ files:
217
217
  - lib/sanitize_email/bleach.rb
218
218
  - lib/sanitize_email/config.rb
219
219
  - lib/sanitize_email/deprecation.rb
220
- - lib/sanitize_email/email_matchers.rb
221
220
  - lib/sanitize_email/engine.rb
222
221
  - lib/sanitize_email/railtie.rb
222
+ - lib/sanitize_email/rspec_matchers.rb
223
+ - lib/sanitize_email/test_helpers.rb
223
224
  - lib/sanitize_email/version.rb
224
225
  - sanitize_email.gemspec
225
226
  - spec/sanitize_email_spec.rb
@@ -1,51 +0,0 @@
1
- module SanitizeEmail
2
- module EmailMatchers
3
- class UnexpectedMailType < StandardError; end
4
-
5
- def string_matching(matcher, part, mail_or_part)
6
- if mail_or_part.respond_to?(:=~) # Can we match a regex against it?
7
- mail_or_part =~ Regexp.new(Regexp.escape(matcher))
8
- else
9
- raise UnexpectedMailType, "Cannot match #{matcher} for #{part}"
10
- end
11
- end
12
-
13
- # Normalize arrays to strings
14
- def array_matching(matcher, part, mail_or_part)
15
- mail_or_part = mail_or_part.join(', ') if mail_or_part.respond_to?(:join)
16
- string_matching(matcher, part, mail_or_part)
17
- end
18
-
19
- def email_matching(matcher, part, mail_or_part)
20
- array_matching(matcher, part, mail_or_part.send(part))
21
- end
22
-
23
- if defined?(Rspec)
24
- [:from, :to, :cc, :bcc, :subject, :reply_to].each do |attribute|
25
- RSpec::Matchers.define "have_#{attribute}" do |matcher|
26
- match do |actual|
27
- email_matching(matcher, attribute, actual)
28
- end
29
- end
30
- end
31
-
32
- [:from, :to, :cc, :bcc, :subject, :reply_to].each do |attribute|
33
- RSpec::Matchers.define "be_#{attribute}" do |matcher|
34
- match do |actual|
35
- string_matching(matcher, attribute, actual)
36
- end
37
- end
38
- end
39
-
40
- RSpec::Matchers.define "have_to_username" do |matcher|
41
- def get_username(email_message)
42
- email_message.header.fields[3].value
43
- end
44
- match do |actual|
45
- string_matching(matcher, :to_username, get_username(actual))
46
- end
47
- end
48
- end
49
-
50
- end
51
- end