recipient_interceptor 0.1.1 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- YjA2MjNlYmZjOGEyNzJiYzdlMDk5YjQ1OWVjM2ZhMWQyM2YzOGM0ZA==
5
- data.tar.gz: !binary |-
6
- YTk3ZTI0NTM4MGQyNjRmMzZlN2QxZjgzOTAyOGQzZmEyODBmY2U3OQ==
7
- !binary "U0hBNTEy":
8
- metadata.gz: !binary |-
9
- MWQ4YzI3MTIyNDFhZTNkNTM4ODJkNzQ2NmM5ZTM3NzRmMTJlZmI4MWM3NDQ5
10
- ODQ3Y2JlN2ZlMDlhYjgwMTQwMzY5ODdkMWQ1YzkyNjdhYzU2YTdmYTliNjQz
11
- OTg3ZWNlMjc0ODM3ZTJkYzBkZGU1NWQyNDZmOTgxNDkxNWY4NmE=
12
- data.tar.gz: !binary |-
13
- MDVlNTc1ZTQ3M2IzMTA4NWE1MmUwODk4NjNjODNlZDYwZjE3N2VjMDkyMzg4
14
- OTQ0MzljNmNkYTNlYWJkNDE5NmE5MjFlYWFjZTZhYzAwOGUzMjA0ZmVmYWUw
15
- MzE0NWZkZjViZDhlZGQ4NTAxNWMyNTM1ZTgyM2YzYzQ1ODI4MWI=
2
+ SHA1:
3
+ metadata.gz: 9323d5071c9779a7a36eb152e29fe573e7537a13
4
+ data.tar.gz: 1f8674fb114b64869aab280326203f3e8f8e7bde
5
+ SHA512:
6
+ metadata.gz: d134b8d957c2ee6f65f4a6ecedff78769564a3b13104046f23424f802959f18d209fbf21ac38ac161ca7beb8cee84004a8998d3dc3a01e1229b4acf3e15ad19a
7
+ data.tar.gz: 3b9d406d84946a0d50d9eba1811d4b698f71c186d07697729650986224b6320c323abc802ee6610686b1b429249577dff28b01242c37a109c61f7dbd35f16da0
@@ -1,15 +1,17 @@
1
1
  require 'mail'
2
2
 
3
3
  class RecipientInterceptor
4
- def initialize(recipients)
4
+ def initialize(recipients, options = {})
5
5
  @recipients = normalize_to_array(recipients)
6
+ @subject_prefix = options[:subject_prefix]
6
7
  end
7
8
 
8
9
  def delivering_email(message)
9
10
  add_custom_headers message
11
+ add_subject_prefix message
10
12
  message.to = @recipients
11
- message.cc = nil
12
- message.bcc = nil
13
+ message.cc = []
14
+ message.bcc = []
13
15
  end
14
16
 
15
17
  private
@@ -22,16 +24,20 @@ class RecipientInterceptor
22
24
  end
23
25
  end
24
26
 
27
+ def add_subject_prefix(message)
28
+ if @subject_prefix
29
+ message.subject = "#{@subject_prefix} #{message.subject}"
30
+ end
31
+ end
32
+
25
33
  def add_custom_headers(message)
26
34
  {
27
- 'X-Intercepted-To' => message.to,
28
- 'X-Intercepted-Cc' => message.cc,
29
- 'X-Intercepted-Bcc' => message.bcc
35
+ 'X-Intercepted-To' => message.to || [],
36
+ 'X-Intercepted-Cc' => message.cc || [],
37
+ 'X-Intercepted-Bcc' => message.bcc || []
30
38
  }.each do |header, addresses|
31
- if addresses
32
- addresses.each do |address|
33
- message.header = "#{message.header}\n#{header}: #{address}"
34
- end
39
+ addresses.each do |address|
40
+ message.header = "#{message.header}#{header}: #{address}"
35
41
  end
36
42
  end
37
43
  end
@@ -1,20 +1,26 @@
1
1
  require File.join(File.dirname(__FILE__), '..', 'lib', 'recipient_interceptor')
2
2
 
3
3
  describe RecipientInterceptor do
4
- it 'overrides to/cc/bcc fields, copies original fields to custom headers' do
5
- Mail.register_interceptor RecipientInterceptor.new('staging@example.com')
4
+ it 'overrides to/cc/bcc fields' do
5
+ Mail.register_interceptor RecipientInterceptor.new(recipient_string)
6
6
 
7
7
  response = deliver_mail
8
8
 
9
- expect(response.to).to eq ['staging@example.com']
9
+ expect(response.to).to eq [recipient_string]
10
10
  expect(response.cc).to eq []
11
11
  expect(response.bcc).to eq []
12
+ end
13
+
14
+ it 'copies original to/cc/bcc fields to custom headers' do
15
+ Mail.register_interceptor RecipientInterceptor.new(recipient_string)
16
+
17
+ response = deliver_mail
12
18
 
13
- expect(response.header['X-Intercepted-To'].to_s).
14
- to eq "[original.to@example.com, staging@example.com]"
15
- expect(response.header['X-Intercepted-Cc'].to_s).
19
+ expect(custom_header(response, 'X-Intercepted-To')).
20
+ to eq 'original.to@example.com'
21
+ expect(custom_header(response, 'X-Intercepted-Cc')).
16
22
  to eq 'original.cc@example.com'
17
- expect(response.header['X-Intercepted-Bcc'].to_s).
23
+ expect(custom_header(response, 'X-Intercepted-Bcc')).
18
24
  to eq 'original.bcc@example.com'
19
25
  end
20
26
 
@@ -26,22 +32,68 @@ describe RecipientInterceptor do
26
32
  expect(response.to).to eq recipient_array
27
33
  end
28
34
 
35
+ it 'accepts a string of recipients' do
36
+ Mail.register_interceptor RecipientInterceptor.new(recipient_string)
37
+
38
+ response = deliver_mail
39
+
40
+ expect(response.to).to eq [recipient_string]
41
+ end
42
+
43
+ it 'does not prefix subject by default' do
44
+ Mail.register_interceptor RecipientInterceptor.new(recipient_string)
45
+
46
+ response = deliver_mail
47
+
48
+ expect(response.subject).to eq 'some subject'
49
+ end
50
+
51
+ it 'prefixes subject when given' do
52
+ Mail.register_interceptor RecipientInterceptor.new(
53
+ recipient_string,
54
+ subject_prefix: '[STAGING]'
55
+ )
56
+
57
+ response = deliver_mail
58
+
59
+ expect(response.subject).to eq '[STAGING] some subject'
60
+ end
61
+
62
+ def recipient_string
63
+ 'staging@example.com'
64
+ end
65
+
66
+ def recipient_array
67
+ ['one@example.com', 'two@example.com']
68
+ end
69
+
29
70
  def deliver_mail
30
71
  Mail.defaults do
31
72
  delivery_method :test
32
73
  end
33
74
 
34
- mail = Mail.deliver do
75
+ Mail.deliver do
35
76
  from 'original.from@example.com'
36
77
  to 'original.to@example.com'
37
78
  cc 'original.cc@example.com'
38
79
  bcc 'original.bcc@example.com'
80
+ subject 'some subject'
39
81
  end
82
+ end
40
83
 
41
- mail.deliver!
84
+ def custom_header(response, name)
85
+ header = response.header[name]
86
+
87
+ if header.respond_to?(:map)
88
+ header.map { |h| h.value.wrapped_string }
89
+ else
90
+ header.to_s
91
+ end
42
92
  end
43
93
 
44
- def recipient_array
45
- ['one@example.com', 'two@example.com']
94
+ after do
95
+ module Mail
96
+ @@delivery_interceptors = []
97
+ end
46
98
  end
47
99
  end
metadata CHANGED
@@ -1,47 +1,62 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: recipient_interceptor
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dan Croak
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-02-25 00:00:00.000000000 Z
11
+ date: 2013-08-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mail
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ! '>='
17
+ - - '>='
18
18
  - !ruby/object:Gem::Version
19
19
  version: '0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ! '>='
24
+ - - '>='
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
25
39
  - !ruby/object:Gem::Version
26
40
  version: '0'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: rspec
29
43
  requirement: !ruby/object:Gem::Requirement
30
44
  requirements:
31
- - - ! '>='
45
+ - - '>='
32
46
  - !ruby/object:Gem::Version
33
47
  version: '0'
34
48
  type: :development
35
49
  prerelease: false
36
50
  version_requirements: !ruby/object:Gem::Requirement
37
51
  requirements:
38
- - - ! '>='
52
+ - - '>='
39
53
  - !ruby/object:Gem::Version
40
54
  version: '0'
41
- description: ! " Use RecipientInterceptor when you don't want your Ruby program
42
- to\n accidentally send emails to addresses other than those on a whitelist\n
43
- \ which you configure. For example, you could use it in your web app's\n staging
44
- environment.\n"
55
+ description: |2
56
+ Use RecipientInterceptor when you don't want your Ruby program to
57
+ accidentally send emails to addresses other than those on a whitelist
58
+ which you configure. For example, you could use it in your web app's
59
+ staging environment.
45
60
  email: dan@thoughtbot.com
46
61
  executables: []
47
62
  extensions: []
@@ -50,7 +65,8 @@ files:
50
65
  - lib/recipient_interceptor.rb
51
66
  - spec/recipient_interceptor_spec.rb
52
67
  homepage: http://github.com/croaky/recipient_interceptor
53
- licenses: []
68
+ licenses:
69
+ - MIT
54
70
  metadata: {}
55
71
  post_install_message:
56
72
  rdoc_options: []
@@ -58,17 +74,17 @@ require_paths:
58
74
  - lib
59
75
  required_ruby_version: !ruby/object:Gem::Requirement
60
76
  requirements:
61
- - - ! '>='
77
+ - - '>='
62
78
  - !ruby/object:Gem::Version
63
79
  version: '0'
64
80
  required_rubygems_version: !ruby/object:Gem::Requirement
65
81
  requirements:
66
- - - ! '>='
82
+ - - '>='
67
83
  - !ruby/object:Gem::Version
68
84
  version: '0'
69
85
  requirements: []
70
86
  rubyforge_project:
71
- rubygems_version: 2.0.0
87
+ rubygems_version: 2.0.5
72
88
  signing_key:
73
89
  specification_version: 4
74
90
  summary: Intercept recipients when delivering email with the Mail gem.