mandrill-rails 1.1.1 → 1.2.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.
@@ -0,0 +1,24 @@
1
+ require 'spec_helper'
2
+
3
+
4
+ describe Mandrill::WebHook::Image do
5
+
6
+ context 'when given the parameters for an image file' do
7
+ subject(:image) do
8
+ Mandrill::WebHook::Image[{
9
+ 'name' => 'c',
10
+ 'type' => 'image/png',
11
+ 'content' => 'iVBORw0KGgoAAAA....'
12
+ }]
13
+ end
14
+
15
+ it 'exposes the file correctly' do
16
+ expect(image.name).to eql('c')
17
+ expect(image.type).to eql('image/png')
18
+ expect(image.base64).to eql(true)
19
+ expect(image.content).to match(/^iVBORw0K/)
20
+ expect(image.decoded_content).to match(/^\x89PNG\r\n/n)
21
+ end
22
+ end
23
+
24
+ end
@@ -7,23 +7,23 @@ describe Mandrill::WebHook::Processor do
7
7
  let(:processor) { processor_class.new(params) }
8
8
 
9
9
  describe "#run!" do
10
- context "with inbound events" do
10
+
11
+ context "when handler methods are present" do
11
12
  before do
12
- processor_class.stub(:handle_inbound)
13
+ allow(processor_class).to receive(:handle_inbound)
14
+ allow(processor_class).to receive(:handle_click)
13
15
  end
14
16
  let(:event1) { { "event" => "inbound" } }
15
- let(:event2) { { "event" => "inbound" } }
17
+ let(:event2) { { "event" => "click" } }
16
18
  let(:params) { { "mandrill_events" => [event1,event2].to_json } }
17
- it "should pass event payload to the handler" do
18
- processor.should_receive(:handle_inbound).twice
19
+ it "should pass all event payloads to the handler" do
20
+ expect(processor).to receive(:handle_inbound)
21
+ expect(processor).to receive(:handle_click)
19
22
  processor.run!
20
23
  end
21
24
  end
22
- context "with callback host" do
23
- shared_examples_for 'pass event payload to the handler' do
24
-
25
- end
26
25
 
26
+ context "with callback host" do
27
27
  let(:callback_host) { callback_host_class.new }
28
28
  let(:processor) { processor_class.new(params,callback_host) }
29
29
  let(:event1) { { "event" => "inbound" } }
@@ -40,7 +40,7 @@ describe Mandrill::WebHook::Processor do
40
40
  end
41
41
 
42
42
  it "should pass event payload to the handler" do
43
- callback_host.should_receive(:handle_inbound).twice
43
+ expect(callback_host).to receive(:handle_inbound).twice
44
44
  processor.run!
45
45
  end
46
46
  end
@@ -54,7 +54,7 @@ describe Mandrill::WebHook::Processor do
54
54
  end
55
55
 
56
56
  it "should pass event payload to the handler" do
57
- callback_host.should_receive(:handle_inbound).twice
57
+ expect(callback_host).to receive(:handle_inbound).twice
58
58
  processor.run!
59
59
  end
60
60
  end
@@ -68,27 +68,61 @@ describe Mandrill::WebHook::Processor do
68
68
  end
69
69
 
70
70
  it "should pass event payload to the handler" do
71
- callback_host.should_receive(:handle_inbound).twice
71
+ expect(callback_host).to receive(:handle_inbound).twice
72
72
  processor.run!
73
73
  end
74
74
  end
75
- end
76
- context "without handler method" do
77
- let(:event1) { { "event" => "inbound" } }
78
- let(:event2) { { "event" => "inbound" } }
79
- let(:params) { { "mandrill_events" => [event1,event2].to_json } }
80
75
 
81
- it "raises error on run!" do
82
- expect { processor.run! }
83
- .to raise_error(Mandrill::Rails::Errors::MissingEventHandler)
76
+ context "with unhandled event" do
77
+ let(:callback_host_class) do
78
+ Class.new do
79
+ end
80
+ end
81
+ context "and default missing handler behaviour" do
82
+ before do
83
+ class ::Rails
84
+ end
85
+ end
86
+ after do
87
+ Object.send(:remove_const, :Rails)
88
+ end
89
+ it "logs an error" do
90
+ processor.on_unhandled_mandrill_events = :log
91
+ logger = double()
92
+ expect(logger).to receive(:error).twice
93
+ expect(Rails).to receive(:logger).twice.and_return(logger)
94
+ expect { processor.run! }.to_not raise_error
95
+ end
96
+ end
97
+
98
+ context "and ignore missing handler behaviour" do
99
+ it "logs an error" do
100
+ processor.on_unhandled_mandrill_events = :ignore
101
+ expect { processor.run! }.to_not raise_error
102
+ end
103
+ end
104
+
105
+ context "and raise_exception missing handler behaviour" do
106
+ it "raises an error" do
107
+ processor.on_unhandled_mandrill_events = :raise_exception
108
+ expect { processor.run! }
109
+ .to raise_error(Mandrill::Rails::Errors::MissingEventHandler)
110
+ end
111
+ end
112
+
84
113
  end
114
+
85
115
  end
116
+
117
+
86
118
  end
87
119
 
88
120
  describe "#wrap_payload" do
89
121
  let(:raw_payload) { {} }
90
122
  subject { processor.wrap_payload(raw_payload) }
91
- its(:class) { should eql(Mandrill::WebHook::EventDecorator) }
123
+ it "returns a decorated hash" do
124
+ expect(subject.class).to eql(Mandrill::WebHook::EventDecorator)
125
+ end
92
126
  end
93
127
 
94
128
  describe "##authentic?" do
@@ -100,19 +134,19 @@ describe Mandrill::WebHook::Processor do
100
134
  let(:params) { example_payload['raw_params'] }
101
135
  subject { processor_class.authentic?(expected_signature, mandrill_webhook_keys, original_url, params) }
102
136
  context "when valid" do
103
- it { should be_true }
137
+ it { should eql(true) }
104
138
  end
105
139
  context "when no keys" do
106
140
  let(:mandrill_webhook_keys) { [] }
107
- it { should be_true }
141
+ it { should eql(true) }
108
142
  end
109
143
  context "when keys don't match" do
110
144
  let(:mandrill_webhook_keys) { ['bogative'] }
111
- it { should be_false }
145
+ it { should eql(false) }
112
146
  end
113
147
  context "when signature don't match" do
114
148
  let(:expected_signature) { 'bogative' }
115
- it { should be_false }
149
+ it { should eql(false) }
116
150
  end
117
151
 
118
152
 
@@ -125,7 +159,9 @@ describe Mandrill::WebHook::Processor do
125
159
  let(:webhook_key) { example_payload['private_key'] }
126
160
  let(:params) { example_payload['raw_params'] }
127
161
  subject { processor_class.generate_signature(webhook_key, original_url, params) }
128
- it { should eql(expected_signature) }
162
+ it "matches expected signature" do
163
+ expect(subject).to eql(expected_signature)
164
+ end
129
165
  end
130
166
 
131
167
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mandrill-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.1
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Paul Gallagher
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-03-30 00:00:00.000000000 Z
11
+ date: 2015-05-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -28,72 +28,72 @@ dependencies:
28
28
  name: bundler
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ! '>='
31
+ - - ~>
32
32
  - !ruby/object:Gem::Version
33
- version: 1.1.0
33
+ version: '1.7'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ! '>='
38
+ - - ~>
39
39
  - !ruby/object:Gem::Version
40
- version: 1.1.0
40
+ version: '1.7'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rake
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - ~>
46
46
  - !ruby/object:Gem::Version
47
- version: 0.9.2.2
47
+ version: '10.0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - ~>
53
53
  - !ruby/object:Gem::Version
54
- version: 0.9.2.2
54
+ version: '10.0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rspec
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - ~>
60
60
  - !ruby/object:Gem::Version
61
- version: 2.8.0
61
+ version: '3.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: 2.8.0
68
+ version: '3.0'
69
69
  - !ruby/object:Gem::Dependency
70
- name: rdoc
70
+ name: guard-rspec
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - ~>
74
74
  - !ruby/object:Gem::Version
75
- version: '3.11'
75
+ version: '4.5'
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: '3.11'
82
+ version: '4.5'
83
83
  - !ruby/object:Gem::Dependency
84
- name: guard-rspec
84
+ name: rdoc
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - ~>
87
+ - - ! '>='
88
88
  - !ruby/object:Gem::Version
89
- version: 1.2.0
89
+ version: '0'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - ~>
94
+ - - ! '>='
95
95
  - !ruby/object:Gem::Version
96
- version: 1.2.0
96
+ version: '0'
97
97
  description: Rails integration for Mandrill
98
98
  email:
99
99
  - gallagher.paul@gmail.com
@@ -102,6 +102,7 @@ extensions: []
102
102
  extra_rdoc_files: []
103
103
  files:
104
104
  - .gitignore
105
+ - .rspec
105
106
  - .travis.yml
106
107
  - CHANGELOG
107
108
  - Gemfile
@@ -116,10 +117,13 @@ files:
116
117
  - lib/mandrill/web_hook.rb
117
118
  - lib/mandrill/web_hook/attachment.rb
118
119
  - lib/mandrill/web_hook/event_decorator.rb
120
+ - lib/mandrill/web_hook/image.rb
119
121
  - lib/mandrill/web_hook/processor.rb
120
122
  - mandrill-rails.gemspec
121
123
  - spec/fixtures/payload_examples/decoded_sample.pdf
124
+ - spec/fixtures/payload_examples/sample.jpg
122
125
  - spec/fixtures/payload_examples/sample.pdf
126
+ - spec/fixtures/payload_examples/sample.png
123
127
  - spec/fixtures/payload_examples/sample.txt
124
128
  - spec/fixtures/webhook_examples/click.json
125
129
  - spec/fixtures/webhook_examples/click_with_signature.json
@@ -127,7 +131,9 @@ files:
127
131
  - spec/fixtures/webhook_examples/inbound_html_only.json
128
132
  - spec/fixtures/webhook_examples/inbound_reply.json
129
133
  - spec/fixtures/webhook_examples/inbound_text_only.json
134
+ - spec/fixtures/webhook_examples/inbound_with_image.json
130
135
  - spec/fixtures/webhook_examples/inbound_with_multiple_attachments.json
136
+ - spec/fixtures/webhook_examples/inbound_with_multiple_images.json
131
137
  - spec/fixtures/webhook_examples/inbound_with_pdf_attachment.json
132
138
  - spec/fixtures/webhook_examples/inbound_with_txt_attachment.json
133
139
  - spec/fixtures/webhook_examples/inbound_without_msg.json
@@ -136,6 +142,7 @@ files:
136
142
  - spec/mandrill-rails/web_hook_processor_spec.rb
137
143
  - spec/mandrill/web_hook/attachment_spec.rb
138
144
  - spec/mandrill/web_hook/event_decorator_spec.rb
145
+ - spec/mandrill/web_hook/image_spec.rb
139
146
  - spec/mandrill/web_hook/processor_spec.rb
140
147
  - spec/spec_helper.rb
141
148
  - spec/support/fixtures_helper.rb
@@ -166,7 +173,9 @@ summary: Provides webhook processing and event decoration to make using Mandrill
166
173
  Rails just that much easier
167
174
  test_files:
168
175
  - spec/fixtures/payload_examples/decoded_sample.pdf
176
+ - spec/fixtures/payload_examples/sample.jpg
169
177
  - spec/fixtures/payload_examples/sample.pdf
178
+ - spec/fixtures/payload_examples/sample.png
170
179
  - spec/fixtures/payload_examples/sample.txt
171
180
  - spec/fixtures/webhook_examples/click.json
172
181
  - spec/fixtures/webhook_examples/click_with_signature.json
@@ -174,7 +183,9 @@ test_files:
174
183
  - spec/fixtures/webhook_examples/inbound_html_only.json
175
184
  - spec/fixtures/webhook_examples/inbound_reply.json
176
185
  - spec/fixtures/webhook_examples/inbound_text_only.json
186
+ - spec/fixtures/webhook_examples/inbound_with_image.json
177
187
  - spec/fixtures/webhook_examples/inbound_with_multiple_attachments.json
188
+ - spec/fixtures/webhook_examples/inbound_with_multiple_images.json
178
189
  - spec/fixtures/webhook_examples/inbound_with_pdf_attachment.json
179
190
  - spec/fixtures/webhook_examples/inbound_with_txt_attachment.json
180
191
  - spec/fixtures/webhook_examples/inbound_without_msg.json
@@ -183,6 +194,7 @@ test_files:
183
194
  - spec/mandrill-rails/web_hook_processor_spec.rb
184
195
  - spec/mandrill/web_hook/attachment_spec.rb
185
196
  - spec/mandrill/web_hook/event_decorator_spec.rb
197
+ - spec/mandrill/web_hook/image_spec.rb
186
198
  - spec/mandrill/web_hook/processor_spec.rb
187
199
  - spec/spec_helper.rb
188
200
  - spec/support/fixtures_helper.rb