mandrill-rails 1.1.1 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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