mailsafe 0.2.1 → 0.3.0
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 +4 -4
- data/lib/mailsafe/recipient_whitelist.rb +7 -7
- data/lib/mailsafe/version.rb +1 -1
- data/mailsafe.gemspec +3 -3
- data/spec/recipient_whitelist_spec.rb +26 -1
- metadata +15 -15
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 520842cba6add4d0ab7d64e561144752118bae8f
|
4
|
+
data.tar.gz: 385e730e754a9f2ea4c9d9dc751a1d562248704b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 22fecc860268b92693f3f2d628e86ff5947c315638f2aba7c9536c7a1eced41036d2bd0223190fd3eefe89c93b14a2b6a2c3ba15d598f02147cacdf8fd4b45a9
|
7
|
+
data.tar.gz: 68d3f3331c87a834859957add9d67bce5b32e3be12aa49c8443f0ec3d3f798848f5b57df52e090e45efddb2fb20a4186fbb1c61692678abd338ac50ebd431bde
|
@@ -37,16 +37,16 @@ module Mailsafe
|
|
37
37
|
end
|
38
38
|
end
|
39
39
|
|
40
|
+
module DeliverWithRecipientFilter
|
41
|
+
def deliver
|
42
|
+
Mailsafe::RecipientWhitelist.new(self).filter_recipient_domains
|
43
|
+
super unless self.to.blank? || self.to.empty?
|
44
|
+
end
|
45
|
+
end
|
40
46
|
end
|
41
47
|
|
42
|
-
# Unfortunately, monkeypatching Mail is the only way I found to actually prevent sending an email
|
43
48
|
require 'mail'
|
44
49
|
|
45
50
|
class Mail::Message
|
46
|
-
|
47
|
-
Mailsafe::RecipientWhitelist.new(self).filter_recipient_domains
|
48
|
-
self.deliver_without_recipient_filter unless self.to.blank? || self.to.empty?
|
49
|
-
end
|
50
|
-
|
51
|
-
alias_method_chain :deliver, :recipient_filter
|
51
|
+
prepend Mailsafe::DeliverWithRecipientFilter
|
52
52
|
end
|
data/lib/mailsafe/version.rb
CHANGED
data/mailsafe.gemspec
CHANGED
@@ -18,9 +18,9 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
|
-
spec.add_development_dependency "bundler"
|
21
|
+
spec.add_development_dependency "bundler"
|
22
22
|
spec.add_development_dependency "rake"
|
23
23
|
spec.add_development_dependency "pry"
|
24
|
-
spec.add_development_dependency "rspec"
|
25
|
-
spec.add_development_dependency "rails"
|
24
|
+
spec.add_development_dependency "rspec"
|
25
|
+
spec.add_development_dependency "rails"
|
26
26
|
end
|
@@ -2,7 +2,6 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
module Mailsafe
|
4
4
|
describe RecipientWhitelist do
|
5
|
-
|
6
5
|
describe ".filter_recipient_domain" do
|
7
6
|
subject { Mail.new(to: to, cc: cc, bcc: bcc) }
|
8
7
|
let(:to) { ["to@gmail.com", "to@yahoo.com"] }
|
@@ -101,4 +100,30 @@ module Mailsafe
|
|
101
100
|
end
|
102
101
|
end
|
103
102
|
end
|
103
|
+
|
104
|
+
describe "integration test" do
|
105
|
+
before do
|
106
|
+
Mail.defaults { delivery_method :test }
|
107
|
+
Mailsafe.setup do |config|
|
108
|
+
config.allowed_domain = "whitelisted.com"
|
109
|
+
end
|
110
|
+
end
|
111
|
+
|
112
|
+
context "with whitelisted recipients" do
|
113
|
+
let(:recipients) { "john@whitelisted.com, joe@blacklisted.com" }
|
114
|
+
let(:mail) do
|
115
|
+
Mail.new.tap do |mail|
|
116
|
+
mail[:from] = "me@example.com"
|
117
|
+
mail[:to] = recipients
|
118
|
+
end
|
119
|
+
end
|
120
|
+
|
121
|
+
it "delivers only to whitelisted recipients" do
|
122
|
+
mail.deliver
|
123
|
+
|
124
|
+
expect(Mail::TestMailer.deliveries.count).to eq 1
|
125
|
+
expect(Mail::TestMailer.deliveries.first.to).to eq ["john@whitelisted.com"]
|
126
|
+
end
|
127
|
+
end
|
128
|
+
end
|
104
129
|
end
|
metadata
CHANGED
@@ -1,29 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mailsafe
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Simon Stemplinger
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-11-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '0'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - "
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
26
|
+
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -56,30 +56,30 @@ dependencies:
|
|
56
56
|
name: rspec
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- - "
|
59
|
+
- - ">="
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
61
|
+
version: '0'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- - "
|
66
|
+
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
68
|
+
version: '0'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: rails
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- - "
|
73
|
+
- - ">="
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version:
|
75
|
+
version: '0'
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- - "
|
80
|
+
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version:
|
82
|
+
version: '0'
|
83
83
|
description: Safe emailing for Rails
|
84
84
|
email:
|
85
85
|
- simon@simon-stemplinger.com
|
@@ -124,7 +124,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
124
124
|
version: '0'
|
125
125
|
requirements: []
|
126
126
|
rubyforge_project:
|
127
|
-
rubygems_version: 2.
|
127
|
+
rubygems_version: 2.5.1
|
128
128
|
signing_key:
|
129
129
|
specification_version: 4
|
130
130
|
summary: Safe emailing for Rails - do not send emails to real users from development
|