mailgun-ruby 1.4.5 → 1.4.6
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/CHANGELOG.md +17 -1
- data/README.md +3 -1
- data/lib/mailgun/api_keys/api_keys.rb +2 -2
- data/lib/mailgun/client.rb +1 -1
- data/lib/mailgun/domains/domain_keys.rb +5 -5
- data/lib/mailgun/domains/domains.rb +12 -9
- data/lib/mailgun/events/events.rb +1 -1
- data/lib/mailgun/helpers/api_version_checker.rb +23 -12
- data/lib/mailgun/helpers/deprecation.rb +32 -0
- data/lib/mailgun/lists/mailing_lists.rb +250 -0
- data/lib/mailgun/messages/message_builder.rb +17 -7
- data/lib/mailgun/response.rb +1 -1
- data/lib/mailgun/routes/routes.rb +98 -0
- data/lib/mailgun/tags/analytics_tags.rb +2 -2
- data/lib/mailgun/tags/tags.rb +16 -8
- data/lib/mailgun/version.rb +1 -1
- data/lib/mailgun/webhooks/account_webhooks.rb +2 -2
- data/lib/mailgun/webhooks/webhooks.rb +17 -9
- data/lib/mailgun.rb +1 -0
- metadata +6 -326
- data/.github/workflows/ci.yml +0 -49
- data/.github_changelog_generator +0 -1
- data/.gitignore +0 -24
- data/.rubocop.yml +0 -68
- data/.ruby-env.yml.example +0 -13
- data/Gemfile +0 -9
- data/Rakefile +0 -32
- data/docs/AccountWebhooks.md +0 -55
- data/docs/AnalyticsTags.md +0 -63
- data/docs/ApiKeys.md +0 -65
- data/docs/DomainKeys.md +0 -49
- data/docs/Domains.md +0 -82
- data/docs/EmailValidation.md +0 -34
- data/docs/Events.md +0 -48
- data/docs/Logs.md +0 -67
- data/docs/MessageBuilder.md +0 -120
- data/docs/Metrics.md +0 -108
- data/docs/OptInHandler.md +0 -103
- data/docs/Snippets.md +0 -519
- data/docs/Subaccounts.md +0 -68
- data/docs/Suppressions.md +0 -92
- data/docs/Templates.md +0 -92
- data/docs/Webhooks.md +0 -65
- data/docs/railgun/EmailValidation.md +0 -34
- data/docs/railgun/Overview.md +0 -11
- data/docs/railgun/Parameters.md +0 -83
- data/mailgun.gemspec +0 -47
- data/spec/integration/account_webhooks_spec.rb +0 -57
- data/spec/integration/analytics_tags_spec.rb +0 -54
- data/spec/integration/api_keys_spec.rb +0 -50
- data/spec/integration/bounces_spec.rb +0 -45
- data/spec/integration/campaign_spec.rb +0 -62
- data/spec/integration/complaints_spec.rb +0 -40
- data/spec/integration/domain_keys_spec.rb +0 -124
- data/spec/integration/domains_spec.rb +0 -201
- data/spec/integration/email_validation_spec.rb +0 -73
- data/spec/integration/events_spec.rb +0 -28
- data/spec/integration/list_members_spec.rb +0 -64
- data/spec/integration/list_spec.rb +0 -59
- data/spec/integration/logs_spec.rb +0 -105
- data/spec/integration/mailer_spec.rb +0 -65
- data/spec/integration/mailgun_spec.rb +0 -198
- data/spec/integration/messages/sample_data/mime.txt +0 -38
- data/spec/integration/metrics_spec.rb +0 -224
- data/spec/integration/routes_spec.rb +0 -91
- data/spec/integration/stats_spec.rb +0 -17
- data/spec/integration/subaccounts_spec.rb +0 -57
- data/spec/integration/suppressions_spec.rb +0 -320
- data/spec/integration/templates_spec.rb +0 -137
- data/spec/integration/unsubscribes_spec.rb +0 -44
- data/spec/integration/webhook_spec.rb +0 -79
- data/spec/spec_helper.rb +0 -53
- data/spec/unit/client_spec.rb +0 -448
- data/spec/unit/connection/test_client.rb +0 -169
- data/spec/unit/events/events_spec.rb +0 -88
- data/spec/unit/exceptions/exceptions_spec.rb +0 -31
- data/spec/unit/helpers/api_version_checker_spec.rb +0 -206
- data/spec/unit/lists/opt_in_handler_spec.rb +0 -28
- data/spec/unit/mailgun_spec.rb +0 -171
- data/spec/unit/messages/batch_message_spec.rb +0 -148
- data/spec/unit/messages/message_builder_spec.rb +0 -745
- data/spec/unit/messages/sample_data/mailgun_icon.png +0 -0
- data/spec/unit/messages/sample_data/mime.txt +0 -38
- data/spec/unit/messages/sample_data/rackspace_logo.jpg +0 -0
- data/spec/unit/messages/sample_data/unknown.type +0 -0
- data/spec/unit/railgun/content_type_spec.rb +0 -89
- data/spec/unit/railgun/mailer_spec.rb +0 -391
- data/spec/unit/response_spec.rb +0 -225
- data/spec/unit/webhooks_spec.rb +0 -121
- data/vcr_cassettes/For_the_suppressions_handling_class/creates_a_single_bounce.yml +0 -55
- data/vcr_cassettes/account_webhooks.yml +0 -269
- data/vcr_cassettes/analytics_tags.yml +0 -187
- data/vcr_cassettes/api_keys.yml +0 -212
- data/vcr_cassettes/bounces.yml +0 -136
- data/vcr_cassettes/complaints.yml +0 -315
- data/vcr_cassettes/domains.todo.yml +0 -42
- data/vcr_cassettes/domains.yml +0 -1243
- data/vcr_cassettes/email_validation.yml +0 -152
- data/vcr_cassettes/events.yml +0 -69
- data/vcr_cassettes/exceptions-invalid-api-key.yml +0 -52
- data/vcr_cassettes/exceptions-invalid-data.yml +0 -52
- data/vcr_cassettes/exceptions-not-allowed.yml +0 -54
- data/vcr_cassettes/exceptions.yml +0 -92
- data/vcr_cassettes/list_members.yml +0 -328
- data/vcr_cassettes/logs.yml +0 -53
- data/vcr_cassettes/mailer_invalid_domain.yml +0 -109
- data/vcr_cassettes/mailing_list.todo.yml +0 -43
- data/vcr_cassettes/mailing_list.yml +0 -682
- data/vcr_cassettes/message_deliver.yml +0 -149
- data/vcr_cassettes/metrics.yml +0 -116
- data/vcr_cassettes/routes.yml +0 -359
- data/vcr_cassettes/send_message.yml +0 -158
- data/vcr_cassettes/stats.yml +0 -48
- data/vcr_cassettes/subaccounts.yml +0 -270
- data/vcr_cassettes/suppressions.yml +0 -1392
- data/vcr_cassettes/templates.yml +0 -1065
- data/vcr_cassettes/unsubscribes.yml +0 -401
- data/vcr_cassettes/webhooks.yml +0 -246
- data/vcr_cassettes/webhooks_v4.yml +0 -275
|
@@ -1,745 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require 'spec_helper'
|
|
4
|
-
require 'stringio'
|
|
5
|
-
|
|
6
|
-
describe 'MessageBuilder attribute readers' do
|
|
7
|
-
it 'is readable' do
|
|
8
|
-
@mb_obj = Mailgun::MessageBuilder.new
|
|
9
|
-
|
|
10
|
-
expect(@mb_obj).to respond_to(:message)
|
|
11
|
-
expect(@mb_obj).to respond_to(:counters)
|
|
12
|
-
end
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
describe 'The instantiation of MessageBuilder' do
|
|
16
|
-
before do
|
|
17
|
-
@mb_obj = Mailgun::MessageBuilder.new
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
it 'contains counters, which should be of type hash and contain several important counters' do
|
|
21
|
-
expect(@mb_obj.counters).to be_a(Hash)
|
|
22
|
-
expect(@mb_obj.counters).to include(:recipients)
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
it 'contains counters, which should be of type hash and contain several important counters' do
|
|
26
|
-
expect(@mb_obj.counters).to be_a(Hash)
|
|
27
|
-
expect(@mb_obj.counters).to include(:recipients)
|
|
28
|
-
expect(@mb_obj.counters[:recipients]).to include(:to)
|
|
29
|
-
expect(@mb_obj.counters[:recipients]).to include(:cc)
|
|
30
|
-
expect(@mb_obj.counters[:recipients]).to include(:bcc)
|
|
31
|
-
expect(@mb_obj.counters).to include(:attributes)
|
|
32
|
-
expect(@mb_obj.counters[:attributes]).to include(:attachment)
|
|
33
|
-
expect(@mb_obj.counters[:attributes]).to include(:campaign_id)
|
|
34
|
-
expect(@mb_obj.counters[:attributes]).to include(:custom_option)
|
|
35
|
-
expect(@mb_obj.counters[:attributes]).to include(:tag)
|
|
36
|
-
end
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
describe 'The method add_recipient' do
|
|
40
|
-
before do
|
|
41
|
-
@mb_obj = Mailgun::MessageBuilder.new
|
|
42
|
-
@address = 'jane@example.com'
|
|
43
|
-
@variables = { 'first' => 'Jane', 'last' => 'Doe' }
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
it 'adds a "to" recipient type to the message body and counter is incremented' do
|
|
47
|
-
recipient_type = :to
|
|
48
|
-
@mb_obj.add_recipient(recipient_type, @address, @variables)
|
|
49
|
-
|
|
50
|
-
expect(@mb_obj.message[recipient_type][0]).to eq("'#{@variables['first']} #{@variables['last']}' <#{@address}>")
|
|
51
|
-
expect(@mb_obj.counters[:recipients][recipient_type]).to eq(1)
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
context 'when variables is empty and recepeint type - "to"' do
|
|
55
|
-
it 'adds email address as "to" recipient type and increments counter' do
|
|
56
|
-
recipient_type = :to
|
|
57
|
-
@mb_obj.add_recipient(recipient_type, @address, {})
|
|
58
|
-
|
|
59
|
-
expect(@mb_obj.message[recipient_type][0]).to eq(@address.to_s)
|
|
60
|
-
expect(@mb_obj.counters[:recipients][recipient_type]).to eq(1)
|
|
61
|
-
end
|
|
62
|
-
end
|
|
63
|
-
|
|
64
|
-
it 'adds a "cc" recipient type to the message body and counter is incremented' do
|
|
65
|
-
recipient_type = :cc
|
|
66
|
-
@mb_obj.add_recipient(recipient_type, @address, @variables)
|
|
67
|
-
|
|
68
|
-
expect(@mb_obj.message[recipient_type][0]).to eq("'#{@variables['first']} #{@variables['last']}' <#{@address}>")
|
|
69
|
-
expect(@mb_obj.counters[:recipients][recipient_type]).to eq(1)
|
|
70
|
-
end
|
|
71
|
-
|
|
72
|
-
it 'adds a "bcc" recipient type to the message body and counter is incremented' do
|
|
73
|
-
recipient_type = :bcc
|
|
74
|
-
@mb_obj.add_recipient(recipient_type, @address, @variables)
|
|
75
|
-
|
|
76
|
-
expect(@mb_obj.message[recipient_type][0]).to eq("'#{@variables['first']} #{@variables['last']}' <#{@address}>")
|
|
77
|
-
expect(@mb_obj.counters[:recipients][recipient_type]).to eq(1)
|
|
78
|
-
end
|
|
79
|
-
|
|
80
|
-
it 'adds a "h:reply-to" recipient type to the message body and counters are not incremented' do
|
|
81
|
-
recipient_type = 'h:reply-to'
|
|
82
|
-
@mb_obj.add_recipient(recipient_type, @address, @variables)
|
|
83
|
-
|
|
84
|
-
expect(@mb_obj.message[recipient_type]).to eq("'#{@variables['first']} #{@variables['last']}' <#{@address}>")
|
|
85
|
-
@mb_obj.counters[:recipients].each_value { |value| expect(value).to eq(0) }
|
|
86
|
-
end
|
|
87
|
-
|
|
88
|
-
it 'ensures a random recipient type is added to the message body and counters are not incremented' do
|
|
89
|
-
recipient_type = 'im-not-really-real'
|
|
90
|
-
@mb_obj.add_recipient(recipient_type, @address, @variables)
|
|
91
|
-
|
|
92
|
-
expect(@mb_obj.message[recipient_type][0]).to eq("'#{@variables['first']} #{@variables['last']}' <#{@address}>")
|
|
93
|
-
@mb_obj.counters[:recipients].each_value { |value| expect(value).to eq(0) }
|
|
94
|
-
end
|
|
95
|
-
|
|
96
|
-
it 'adds too many to recipients and raises an exception.' do
|
|
97
|
-
recipient_type = :to
|
|
98
|
-
|
|
99
|
-
expect do
|
|
100
|
-
1001.times do
|
|
101
|
-
@mb_obj.add_recipient(recipient_type, @address, @variables)
|
|
102
|
-
end
|
|
103
|
-
end.to raise_error(Mailgun::ParameterError)
|
|
104
|
-
end
|
|
105
|
-
|
|
106
|
-
it 'adds too many cc recipients and raises an exception.' do
|
|
107
|
-
recipient_type = :cc
|
|
108
|
-
|
|
109
|
-
expect do
|
|
110
|
-
1001.times do
|
|
111
|
-
@mb_obj.add_recipient(recipient_type, @address, @variables)
|
|
112
|
-
end
|
|
113
|
-
end.to raise_error(Mailgun::ParameterError)
|
|
114
|
-
end
|
|
115
|
-
|
|
116
|
-
it 'adds too many bcc recipients and raises an exception.' do
|
|
117
|
-
recipient_type = :bcc
|
|
118
|
-
|
|
119
|
-
expect do
|
|
120
|
-
1001.times do
|
|
121
|
-
@mb_obj.add_recipient(recipient_type, @address, @variables)
|
|
122
|
-
end
|
|
123
|
-
end.to raise_error(Mailgun::ParameterError)
|
|
124
|
-
end
|
|
125
|
-
end
|
|
126
|
-
|
|
127
|
-
describe 'The method set_subject' do
|
|
128
|
-
it 'warns of set_subject deprecation' do
|
|
129
|
-
@mb_obj = Mailgun::MessageBuilder.new
|
|
130
|
-
expect(@mb_obj).to receive :warn
|
|
131
|
-
@mb_obj.set_subject 'warn on set_subject'
|
|
132
|
-
end
|
|
133
|
-
end
|
|
134
|
-
|
|
135
|
-
describe 'The method subject' do
|
|
136
|
-
before do
|
|
137
|
-
@mb_obj = Mailgun::MessageBuilder.new
|
|
138
|
-
end
|
|
139
|
-
|
|
140
|
-
it 'sets the message subject to blank if called and no parameters are provided' do
|
|
141
|
-
@mb_obj.subject
|
|
142
|
-
|
|
143
|
-
expect(@mb_obj.message[:subject][0]).to eq('')
|
|
144
|
-
end
|
|
145
|
-
|
|
146
|
-
it 'sets the message subject if called with the subject parameter' do
|
|
147
|
-
the_subject = 'This is my subject!'
|
|
148
|
-
@mb_obj.subject(the_subject)
|
|
149
|
-
|
|
150
|
-
expect(@mb_obj.message[:subject][0]).to eq(the_subject)
|
|
151
|
-
end
|
|
152
|
-
|
|
153
|
-
it 'ensures no duplicate subjects can exist and last setter is stored' do
|
|
154
|
-
the_first_subject = 'This is my first subject!'
|
|
155
|
-
the_second_subject = 'This is my second subject!'
|
|
156
|
-
@mb_obj.subject(the_first_subject)
|
|
157
|
-
@mb_obj.subject(the_second_subject)
|
|
158
|
-
|
|
159
|
-
expect(@mb_obj.message[:subject].length).to eq(1)
|
|
160
|
-
expect(@mb_obj.message[:subject][0]).to eq(the_second_subject)
|
|
161
|
-
end
|
|
162
|
-
end
|
|
163
|
-
|
|
164
|
-
describe 'The method set_text_body' do
|
|
165
|
-
it 'warns of set_text_body deprecation' do
|
|
166
|
-
@mb_obj = Mailgun::MessageBuilder.new
|
|
167
|
-
expect(@mb_obj).to receive :warn
|
|
168
|
-
@mb_obj.set_text_body 'warn on set_text_body'
|
|
169
|
-
end
|
|
170
|
-
end
|
|
171
|
-
|
|
172
|
-
describe 'The method body_text' do
|
|
173
|
-
before do
|
|
174
|
-
@mb_obj = Mailgun::MessageBuilder.new
|
|
175
|
-
end
|
|
176
|
-
|
|
177
|
-
it 'sets the body_text to blank if called and no parameters are provided' do
|
|
178
|
-
@mb_obj.body_text
|
|
179
|
-
@mb_obj.message[:text] = ''
|
|
180
|
-
end
|
|
181
|
-
|
|
182
|
-
it 'sets the message text if called with the body_text parameter' do
|
|
183
|
-
the_text = 'Don\'t mess with Texas!'
|
|
184
|
-
@mb_obj.body_text(the_text)
|
|
185
|
-
@mb_obj.message[:text] = the_text
|
|
186
|
-
end
|
|
187
|
-
|
|
188
|
-
it 'ensures no duplicate text bodies can exist and last setter is stored' do
|
|
189
|
-
the_first_text = 'Mess with Texas!'
|
|
190
|
-
the_second_text = 'Don\'t mess with Texas!'
|
|
191
|
-
@mb_obj.body_text(the_first_text)
|
|
192
|
-
@mb_obj.body_text(the_second_text)
|
|
193
|
-
|
|
194
|
-
expect(@mb_obj.message[:text].length).to eq(1)
|
|
195
|
-
expect(@mb_obj.message[:text][0]).to eq(the_second_text)
|
|
196
|
-
end
|
|
197
|
-
end
|
|
198
|
-
|
|
199
|
-
describe 'The method amp_html' do
|
|
200
|
-
it 'sets amp-html to a string, not an array' do
|
|
201
|
-
the_text = 'Don\'t mess with Texas!'
|
|
202
|
-
@mb_obj = Mailgun::MessageBuilder.new
|
|
203
|
-
@mb_obj.amp_html(the_text)
|
|
204
|
-
expect(@mb_obj.message['amp-html']).to be_a(String)
|
|
205
|
-
expect(@mb_obj.message['amp-html']).to eq(the_text)
|
|
206
|
-
end
|
|
207
|
-
end
|
|
208
|
-
|
|
209
|
-
describe 'The method set_from_address' do
|
|
210
|
-
it 'warns of set_from_address deprecation' do
|
|
211
|
-
@mb_obj = Mailgun::MessageBuilder.new
|
|
212
|
-
expect(@mb_obj).to receive :warn
|
|
213
|
-
@mb_obj.set_from_address 'warn on set_from_address'
|
|
214
|
-
end
|
|
215
|
-
end
|
|
216
|
-
|
|
217
|
-
describe 'The method from' do
|
|
218
|
-
before do
|
|
219
|
-
@mb_obj = Mailgun::MessageBuilder.new
|
|
220
|
-
end
|
|
221
|
-
|
|
222
|
-
it 'sets the from address' do
|
|
223
|
-
the_from_address = 'test@mailgun.com'
|
|
224
|
-
@mb_obj.from(the_from_address)
|
|
225
|
-
|
|
226
|
-
expect(@mb_obj.message[:from]).to eq([the_from_address])
|
|
227
|
-
end
|
|
228
|
-
|
|
229
|
-
it 'sets the from address with first/last metadata' do
|
|
230
|
-
the_from_address = 'test@mailgun.com'
|
|
231
|
-
the_first_name = 'Magilla'
|
|
232
|
-
the_last_name = 'Gorilla'
|
|
233
|
-
@mb_obj.from(the_from_address, { 'first' => the_first_name, 'last' => the_last_name })
|
|
234
|
-
|
|
235
|
-
expect(@mb_obj.message[:from]).to eq(["'#{the_first_name} #{the_last_name}' <#{the_from_address}>"])
|
|
236
|
-
end
|
|
237
|
-
|
|
238
|
-
it 'sets the from address with full name metadata' do
|
|
239
|
-
the_from_address = 'test@mailgun.com'
|
|
240
|
-
full_name = 'Magilla Gorilla'
|
|
241
|
-
@mb_obj.from(the_from_address, { 'full_name' => full_name })
|
|
242
|
-
|
|
243
|
-
expect(@mb_obj.message[:from]).to eq(["'#{full_name}' <#{the_from_address}>"])
|
|
244
|
-
end
|
|
245
|
-
|
|
246
|
-
it 'fails when first/last and full_name are used' do
|
|
247
|
-
the_from_address = 'test@mailgun.com'
|
|
248
|
-
full_name = 'Magilla Gorilla'
|
|
249
|
-
first_name = 'Magilla'
|
|
250
|
-
expect { @mb_obj.from(the_from_address, { 'full_name' => full_name, 'first' => first_name }) }.to raise_error(Mailgun::ParameterError)
|
|
251
|
-
end
|
|
252
|
-
end
|
|
253
|
-
|
|
254
|
-
describe 'The method add_attachment' do
|
|
255
|
-
before do
|
|
256
|
-
@mb_obj = Mailgun::MessageBuilder.new
|
|
257
|
-
end
|
|
258
|
-
|
|
259
|
-
it 'adds a few file paths to the message object' do
|
|
260
|
-
file1 = "#{File.dirname(__FILE__)}/sample_data/mailgun_icon.png"
|
|
261
|
-
file2 = "#{File.dirname(__FILE__)}/sample_data/rackspace_logo.jpg"
|
|
262
|
-
|
|
263
|
-
file_paths = [file1, file2]
|
|
264
|
-
|
|
265
|
-
file_paths.each { |item| @mb_obj.add_attachment(item) }
|
|
266
|
-
|
|
267
|
-
expect(@mb_obj.message[:attachment].length).to eq(2)
|
|
268
|
-
end
|
|
269
|
-
|
|
270
|
-
it 'adds file-like objects to the message object' do
|
|
271
|
-
io = StringIO.new
|
|
272
|
-
io << File.binread("#{File.dirname(__FILE__)}/sample_data/mailgun_icon.png")
|
|
273
|
-
|
|
274
|
-
@mb_obj.add_attachment io, 'cool_attachment.png'
|
|
275
|
-
|
|
276
|
-
expect(@mb_obj.message[:attachment].length).to eq(1)
|
|
277
|
-
expect(@mb_obj.message[:attachment].first.io.original_filename).to eq 'cool_attachment.png'
|
|
278
|
-
expect(@mb_obj.message[:attachment].first.original_filename).to eq 'cool_attachment.png'
|
|
279
|
-
end
|
|
280
|
-
|
|
281
|
-
context 'when attachment has unknown type' do
|
|
282
|
-
it 'sets content type application/octet-stream for attachment' do
|
|
283
|
-
file = "#{File.dirname(__FILE__)}/sample_data/unknown.type"
|
|
284
|
-
|
|
285
|
-
@mb_obj.add_attachment(file)
|
|
286
|
-
|
|
287
|
-
expect(@mb_obj.message[:attachment][0].content_type).to eq('application/octet-stream')
|
|
288
|
-
end
|
|
289
|
-
end
|
|
290
|
-
end
|
|
291
|
-
|
|
292
|
-
describe 'The method add_inline_image' do
|
|
293
|
-
before do
|
|
294
|
-
@mb_obj = Mailgun::MessageBuilder.new
|
|
295
|
-
end
|
|
296
|
-
|
|
297
|
-
it 'adds a few file paths to the message object' do
|
|
298
|
-
file1 = "#{File.dirname(__FILE__)}/sample_data/mailgun_icon.png"
|
|
299
|
-
file2 = "#{File.dirname(__FILE__)}/sample_data/rackspace_logo.jpg"
|
|
300
|
-
|
|
301
|
-
file_paths = [file1, file2]
|
|
302
|
-
|
|
303
|
-
file_paths.each { |item| @mb_obj.add_inline_image(item) }
|
|
304
|
-
|
|
305
|
-
expect(@mb_obj.message[:inline].length).to eq(2)
|
|
306
|
-
end
|
|
307
|
-
end
|
|
308
|
-
|
|
309
|
-
describe 'The method list_unsubscribe' do
|
|
310
|
-
before do
|
|
311
|
-
@mb_obj = Mailgun::MessageBuilder.new
|
|
312
|
-
end
|
|
313
|
-
|
|
314
|
-
it 'sets the message list_unsubscribe to blank if called and no parameters are provided' do
|
|
315
|
-
@mb_obj.list_unsubscribe
|
|
316
|
-
expect(@mb_obj.message['h:List-Unsubscribe']).to eq('')
|
|
317
|
-
end
|
|
318
|
-
|
|
319
|
-
it 'sets the message list_unsubscribe if called with one list_unsubscribe parameter' do
|
|
320
|
-
unsubscribe_to = 'http://example.com/stop-hassle'
|
|
321
|
-
@mb_obj.list_unsubscribe(unsubscribe_to)
|
|
322
|
-
expect(@mb_obj.message['h:List-Unsubscribe']).to eq("<#{unsubscribe_to}>")
|
|
323
|
-
end
|
|
324
|
-
|
|
325
|
-
it 'sets the message list_unsubscribe if called with many list_unsubscribe parameters' do
|
|
326
|
-
unsubscribe_to = %w[http://example.com/stop-hassle mailto:stop-hassle@example.com]
|
|
327
|
-
@mb_obj.list_unsubscribe(*unsubscribe_to)
|
|
328
|
-
expect(@mb_obj.message['h:List-Unsubscribe']).to eq(
|
|
329
|
-
unsubscribe_to.map { |var| "<#{var}>" }.join(',')
|
|
330
|
-
)
|
|
331
|
-
end
|
|
332
|
-
end
|
|
333
|
-
|
|
334
|
-
describe 'The method test_mode' do
|
|
335
|
-
before do
|
|
336
|
-
@mb_obj = Mailgun::MessageBuilder.new
|
|
337
|
-
end
|
|
338
|
-
|
|
339
|
-
it 'turns on test mode with boolean true' do
|
|
340
|
-
@mb_obj.test_mode(true)
|
|
341
|
-
|
|
342
|
-
expect(@mb_obj.message['o:testmode'][0]).to eq('yes')
|
|
343
|
-
end
|
|
344
|
-
|
|
345
|
-
it 'turns on test mode with string true' do
|
|
346
|
-
@mb_obj.test_mode('true')
|
|
347
|
-
|
|
348
|
-
expect(@mb_obj.message['o:testmode'][0]).to eq('yes')
|
|
349
|
-
end
|
|
350
|
-
|
|
351
|
-
it 'turns off test mode with boolean false' do
|
|
352
|
-
@mb_obj.test_mode(false)
|
|
353
|
-
|
|
354
|
-
expect(@mb_obj.message['o:testmode'][0]).to eq('no')
|
|
355
|
-
end
|
|
356
|
-
|
|
357
|
-
it 'turns off test mode with string false' do
|
|
358
|
-
@mb_obj.test_mode('false')
|
|
359
|
-
|
|
360
|
-
expect(@mb_obj.message['o:testmode'][0]).to eq('no')
|
|
361
|
-
end
|
|
362
|
-
|
|
363
|
-
it 'does not allow multiple values' do
|
|
364
|
-
@mb_obj.test_mode('false')
|
|
365
|
-
@mb_obj.test_mode('true')
|
|
366
|
-
@mb_obj.test_mode('false')
|
|
367
|
-
|
|
368
|
-
expect(@mb_obj.message['o:testmode'].length).to eq(1)
|
|
369
|
-
expect(@mb_obj.message['o:testmode'][0]).to eq('no')
|
|
370
|
-
end
|
|
371
|
-
end
|
|
372
|
-
|
|
373
|
-
describe 'The method dkim' do
|
|
374
|
-
before do
|
|
375
|
-
@mb_obj = Mailgun::MessageBuilder.new
|
|
376
|
-
end
|
|
377
|
-
|
|
378
|
-
it 'turns on dkim with boolean true' do
|
|
379
|
-
@mb_obj.dkim(true)
|
|
380
|
-
|
|
381
|
-
expect(@mb_obj.message['o:dkim'][0]).to eq('yes')
|
|
382
|
-
end
|
|
383
|
-
|
|
384
|
-
it 'turns on dkim with string true' do
|
|
385
|
-
@mb_obj.dkim('true')
|
|
386
|
-
|
|
387
|
-
expect(@mb_obj.message['o:dkim'][0]).to eq('yes')
|
|
388
|
-
end
|
|
389
|
-
|
|
390
|
-
it 'turns off dkim with boolean false' do
|
|
391
|
-
@mb_obj.dkim(false)
|
|
392
|
-
|
|
393
|
-
expect(@mb_obj.message['o:dkim'][0]).to eq('no')
|
|
394
|
-
end
|
|
395
|
-
|
|
396
|
-
it 'turns off dkim with string false' do
|
|
397
|
-
@mb_obj.dkim('false')
|
|
398
|
-
|
|
399
|
-
expect(@mb_obj.message['o:dkim'][0]).to eq('no')
|
|
400
|
-
end
|
|
401
|
-
|
|
402
|
-
it 'does not allow multiple values' do
|
|
403
|
-
@mb_obj.dkim('false')
|
|
404
|
-
@mb_obj.dkim('true')
|
|
405
|
-
@mb_obj.dkim('false')
|
|
406
|
-
|
|
407
|
-
expect(@mb_obj.message['o:dkim'].length).to eq(1)
|
|
408
|
-
expect(@mb_obj.message['o:dkim'][0]).to eq('no')
|
|
409
|
-
end
|
|
410
|
-
end
|
|
411
|
-
|
|
412
|
-
describe 'The method add_campaign_id' do
|
|
413
|
-
before do
|
|
414
|
-
@mb_obj = Mailgun::MessageBuilder.new
|
|
415
|
-
end
|
|
416
|
-
|
|
417
|
-
it 'adds a campaign ID to the message' do
|
|
418
|
-
@mb_obj.add_campaign_id('My-Campaign-Id-1')
|
|
419
|
-
|
|
420
|
-
expect(@mb_obj.message['o:campaign'][0]).to eq('My-Campaign-Id-1')
|
|
421
|
-
end
|
|
422
|
-
|
|
423
|
-
it 'adds a few more campaign IDs to the message' do
|
|
424
|
-
@mb_obj.add_campaign_id('My-Campaign-Id-1')
|
|
425
|
-
@mb_obj.add_campaign_id('My-Campaign-Id-2')
|
|
426
|
-
@mb_obj.add_campaign_id('My-Campaign-Id-3')
|
|
427
|
-
|
|
428
|
-
expect(@mb_obj.message['o:campaign'][0]).to eq('My-Campaign-Id-1')
|
|
429
|
-
expect(@mb_obj.message['o:campaign'][1]).to eq('My-Campaign-Id-2')
|
|
430
|
-
expect(@mb_obj.message['o:campaign'][2]).to eq('My-Campaign-Id-3')
|
|
431
|
-
end
|
|
432
|
-
|
|
433
|
-
it 'adds too many campaign IDs to the message' do
|
|
434
|
-
expect do
|
|
435
|
-
10.times do
|
|
436
|
-
@mb_obj.add_campaign_id('Test-Campaign-ID')
|
|
437
|
-
end
|
|
438
|
-
end.to raise_error(Mailgun::ParameterError)
|
|
439
|
-
end
|
|
440
|
-
end
|
|
441
|
-
|
|
442
|
-
describe 'The method add_tag' do
|
|
443
|
-
before do
|
|
444
|
-
@mb_obj = Mailgun::MessageBuilder.new
|
|
445
|
-
end
|
|
446
|
-
|
|
447
|
-
it 'adds a tag to the message' do
|
|
448
|
-
@mb_obj.add_tag('My-Tag-1')
|
|
449
|
-
|
|
450
|
-
expect(@mb_obj.message['o:tag'][0]).to eq('My-Tag-1')
|
|
451
|
-
end
|
|
452
|
-
|
|
453
|
-
it 'adds a few more tags to the message' do
|
|
454
|
-
@mb_obj.add_tag('My-Tag-1')
|
|
455
|
-
@mb_obj.add_tag('My-Tag-2')
|
|
456
|
-
@mb_obj.add_tag('My-Tag-3')
|
|
457
|
-
|
|
458
|
-
expect(@mb_obj.message['o:tag'][0]).to eq('My-Tag-1')
|
|
459
|
-
expect(@mb_obj.message['o:tag'][1]).to eq('My-Tag-2')
|
|
460
|
-
expect(@mb_obj.message['o:tag'][2]).to eq('My-Tag-3')
|
|
461
|
-
end
|
|
462
|
-
|
|
463
|
-
it 'adds too many tags to the message' do
|
|
464
|
-
expect do
|
|
465
|
-
12.times do
|
|
466
|
-
@mb_obj.add_tag('My-Tag')
|
|
467
|
-
end
|
|
468
|
-
end.to raise_error(Mailgun::ParameterError)
|
|
469
|
-
end
|
|
470
|
-
end
|
|
471
|
-
|
|
472
|
-
describe 'The method track_opens' do
|
|
473
|
-
before do
|
|
474
|
-
@mb_obj = Mailgun::MessageBuilder.new
|
|
475
|
-
end
|
|
476
|
-
|
|
477
|
-
it 'enables/disables open tracking on a per message basis.' do
|
|
478
|
-
@mb_obj.track_opens('Yes')
|
|
479
|
-
|
|
480
|
-
expect(@mb_obj.message['o:tracking-opens']).to eq('yes')
|
|
481
|
-
expect(@mb_obj.message['o:tracking']).to eq(['yes'])
|
|
482
|
-
|
|
483
|
-
@mb_obj.track_opens('No')
|
|
484
|
-
|
|
485
|
-
expect(@mb_obj.message['o:tracking-opens']).to eq('no')
|
|
486
|
-
|
|
487
|
-
@mb_obj.track_opens(true)
|
|
488
|
-
|
|
489
|
-
expect(@mb_obj.message['o:tracking-opens']).to eq('yes')
|
|
490
|
-
|
|
491
|
-
@mb_obj.track_opens(false)
|
|
492
|
-
|
|
493
|
-
expect(@mb_obj.message['o:tracking-opens']).to eq('no')
|
|
494
|
-
end
|
|
495
|
-
end
|
|
496
|
-
|
|
497
|
-
describe 'The method track_clicks' do
|
|
498
|
-
before do
|
|
499
|
-
@mb_obj = Mailgun::MessageBuilder.new
|
|
500
|
-
end
|
|
501
|
-
|
|
502
|
-
it 'enables/disables click tracking on a per message basis.' do
|
|
503
|
-
@mb_obj.track_clicks('Yes')
|
|
504
|
-
|
|
505
|
-
expect(@mb_obj.message['o:tracking-clicks']).to eq('yes')
|
|
506
|
-
expect(@mb_obj.message['o:tracking']).to eq(['yes'])
|
|
507
|
-
|
|
508
|
-
@mb_obj.track_clicks('No')
|
|
509
|
-
|
|
510
|
-
expect(@mb_obj.message['o:tracking-clicks']).to eq('no')
|
|
511
|
-
|
|
512
|
-
@mb_obj.track_clicks(true)
|
|
513
|
-
|
|
514
|
-
expect(@mb_obj.message['o:tracking-clicks']).to eq('yes')
|
|
515
|
-
|
|
516
|
-
@mb_obj.track_clicks(false)
|
|
517
|
-
|
|
518
|
-
expect(@mb_obj.message['o:tracking-clicks']).to eq('no')
|
|
519
|
-
|
|
520
|
-
@mb_obj.track_clicks('html')
|
|
521
|
-
|
|
522
|
-
expect(@mb_obj.message['o:tracking-clicks']).to eq('html')
|
|
523
|
-
end
|
|
524
|
-
|
|
525
|
-
context 'when unexpected value is provided' do
|
|
526
|
-
it 'warns about preferred values' do
|
|
527
|
-
expect(@mb_obj).to receive :warn
|
|
528
|
-
@mb_obj.track_clicks('random')
|
|
529
|
-
end
|
|
530
|
-
end
|
|
531
|
-
end
|
|
532
|
-
|
|
533
|
-
describe 'The method deliver_at' do
|
|
534
|
-
before do
|
|
535
|
-
@mb_obj = Mailgun::MessageBuilder.new
|
|
536
|
-
end
|
|
537
|
-
|
|
538
|
-
it 'defines a time/date to deliver a message in RFC2822 format.' do
|
|
539
|
-
@mb_obj.deliver_at('October 25, 2013 10:00PM CST')
|
|
540
|
-
|
|
541
|
-
expect(@mb_obj.message['o:deliverytime'][0]).to eq('Fri, 25 Oct 2013 22:00:00 -0600')
|
|
542
|
-
end
|
|
543
|
-
end
|
|
544
|
-
|
|
545
|
-
describe 'The method set_custom_data' do
|
|
546
|
-
it 'warns of set_custom_data deprecation' do
|
|
547
|
-
@mb_obj = Mailgun::MessageBuilder.new
|
|
548
|
-
expect(@mb_obj).to receive :warn
|
|
549
|
-
@mb_obj.set_custom_data 'my-data', '{"key":"value"}'
|
|
550
|
-
end
|
|
551
|
-
end
|
|
552
|
-
|
|
553
|
-
describe 'The method header' do
|
|
554
|
-
before do
|
|
555
|
-
@mb_obj = Mailgun::MessageBuilder.new
|
|
556
|
-
end
|
|
557
|
-
|
|
558
|
-
it 'accepts valid JSON and appends as data to the message.' do
|
|
559
|
-
@mb_obj.header('my-data', '{"key":"value"}')
|
|
560
|
-
|
|
561
|
-
expect(@mb_obj.message['h:my-data']).to be_a(String)
|
|
562
|
-
expect(@mb_obj.message['h:my-data'].to_s).to eq('{"key":"value"}')
|
|
563
|
-
end
|
|
564
|
-
end
|
|
565
|
-
|
|
566
|
-
describe 'The method variable' do
|
|
567
|
-
before do
|
|
568
|
-
@mb_obj = Mailgun::MessageBuilder.new
|
|
569
|
-
end
|
|
570
|
-
|
|
571
|
-
it 'accepts valid JSON and stores it as message[param].' do
|
|
572
|
-
@mb_obj.variable('my-data', '{"key":"value"}')
|
|
573
|
-
|
|
574
|
-
expect(@mb_obj.message['v:my-data']).to be_a(String)
|
|
575
|
-
expect(@mb_obj.message['v:my-data'].to_s).to eq('{"key":"value"}')
|
|
576
|
-
end
|
|
577
|
-
|
|
578
|
-
it 'accepts a hash and appends as data to the message.' do
|
|
579
|
-
data = { 'key' => 'value' }
|
|
580
|
-
@mb_obj.variable('my-data', data)
|
|
581
|
-
|
|
582
|
-
expect(@mb_obj.message['v:my-data']).to be_a(String)
|
|
583
|
-
expect(@mb_obj.message['v:my-data'].to_s).to eq('{"key":"value"}')
|
|
584
|
-
end
|
|
585
|
-
|
|
586
|
-
it 'accepts string values' do
|
|
587
|
-
data = 'String Value.'
|
|
588
|
-
|
|
589
|
-
@mb_obj.variable('my-data', data)
|
|
590
|
-
|
|
591
|
-
expect(@mb_obj.message['v:my-data']).to be_a(String)
|
|
592
|
-
expect(@mb_obj.message['v:my-data'].to_s).to eq('String Value.')
|
|
593
|
-
end
|
|
594
|
-
end
|
|
595
|
-
|
|
596
|
-
describe 'The method add_custom_parameter' do
|
|
597
|
-
before do
|
|
598
|
-
@mb_obj = Mailgun::MessageBuilder.new
|
|
599
|
-
end
|
|
600
|
-
|
|
601
|
-
it 'adds an undefined parameter to the message.' do
|
|
602
|
-
@mb_obj.add_custom_parameter('h:my-sweet-header', 'datagoeshere')
|
|
603
|
-
|
|
604
|
-
expect(@mb_obj.message['h:my-sweet-header'][0]).to eq('datagoeshere')
|
|
605
|
-
end
|
|
606
|
-
end
|
|
607
|
-
|
|
608
|
-
describe 'The method set_message_id' do
|
|
609
|
-
it 'warns of set_message_id deprecation' do
|
|
610
|
-
@mb_obj = Mailgun::MessageBuilder.new
|
|
611
|
-
expect(@mb_obj).to receive :warn
|
|
612
|
-
@mb_obj.set_message_id 'warn on set_message_id'
|
|
613
|
-
end
|
|
614
|
-
end
|
|
615
|
-
|
|
616
|
-
describe 'The method message_id' do
|
|
617
|
-
before do
|
|
618
|
-
@mb_obj = Mailgun::MessageBuilder.new
|
|
619
|
-
@the_message_id = '<20141014000000.11111.11111@example.com>'
|
|
620
|
-
end
|
|
621
|
-
|
|
622
|
-
it 'correctly sets the Message-Id header' do
|
|
623
|
-
@mb_obj.message_id(@the_message_id)
|
|
624
|
-
|
|
625
|
-
expect(@mb_obj.message['h:Message-Id']).to eq(@the_message_id)
|
|
626
|
-
end
|
|
627
|
-
|
|
628
|
-
it 'correctly clears the Message-Id header when passed nil' do
|
|
629
|
-
@mb_obj.message_id(nil)
|
|
630
|
-
|
|
631
|
-
expect(@mb_obj.message.key?('h:Message-Id')).to be(false)
|
|
632
|
-
end
|
|
633
|
-
|
|
634
|
-
it 'correctly sets the Message-Id header when passed an empty string' do
|
|
635
|
-
@mb_obj.message_id(@the_message_id)
|
|
636
|
-
|
|
637
|
-
expect(@mb_obj.message.key?('h:Message-Id')).to be(true)
|
|
638
|
-
|
|
639
|
-
@mb_obj.message_id('')
|
|
640
|
-
|
|
641
|
-
expect(@mb_obj.message.key?('h:Message-Id')).to be(false)
|
|
642
|
-
end
|
|
643
|
-
end
|
|
644
|
-
|
|
645
|
-
describe 'The method template' do
|
|
646
|
-
before do
|
|
647
|
-
@mb_obj = Mailgun::MessageBuilder.new
|
|
648
|
-
end
|
|
649
|
-
|
|
650
|
-
context 'when template name is passed' do
|
|
651
|
-
it 'sets `template` to the message' do
|
|
652
|
-
template_name = 'template.name'
|
|
653
|
-
@mb_obj.template(template_name)
|
|
654
|
-
|
|
655
|
-
expect(@mb_obj.message['template']).to eq(template_name)
|
|
656
|
-
end
|
|
657
|
-
end
|
|
658
|
-
|
|
659
|
-
context 'when multiple values are passed' do
|
|
660
|
-
it 'sets the last value as message template' do
|
|
661
|
-
template_name1 = 'template.name_1'
|
|
662
|
-
template_name2 = 'template.name_2'
|
|
663
|
-
|
|
664
|
-
@mb_obj.template(template_name1)
|
|
665
|
-
@mb_obj.template(template_name2)
|
|
666
|
-
|
|
667
|
-
expect(@mb_obj.message['template']).to eq(template_name2)
|
|
668
|
-
end
|
|
669
|
-
end
|
|
670
|
-
|
|
671
|
-
context 'when template name is not passed' do
|
|
672
|
-
it 'deletes `template` key from the message' do
|
|
673
|
-
@mb_obj.template('template.name')
|
|
674
|
-
|
|
675
|
-
expect(@mb_obj.message.key?('template')).to be(true)
|
|
676
|
-
|
|
677
|
-
@mb_obj.template
|
|
678
|
-
|
|
679
|
-
expect(@mb_obj.message.key?('template')).to be(false)
|
|
680
|
-
end
|
|
681
|
-
end
|
|
682
|
-
end
|
|
683
|
-
|
|
684
|
-
describe 'The method template_version' do
|
|
685
|
-
before do
|
|
686
|
-
@mb_obj = Mailgun::MessageBuilder.new
|
|
687
|
-
end
|
|
688
|
-
|
|
689
|
-
context 'when template version is passed' do
|
|
690
|
-
it 'adds `t:version` key value to the message' do
|
|
691
|
-
version = 'version_1'
|
|
692
|
-
@mb_obj.template_version(version)
|
|
693
|
-
|
|
694
|
-
expect(@mb_obj.message['t:version']).to eq(version)
|
|
695
|
-
end
|
|
696
|
-
end
|
|
697
|
-
|
|
698
|
-
context 'when multiple values are passed' do
|
|
699
|
-
it 'adds the last value as `t:version` key value to the message' do
|
|
700
|
-
version1 = 'version_1'
|
|
701
|
-
version2 = 'version_2'
|
|
702
|
-
|
|
703
|
-
@mb_obj.template_version(version1)
|
|
704
|
-
@mb_obj.template_version(version2)
|
|
705
|
-
|
|
706
|
-
expect(@mb_obj.message['t:version']).to eq(version2)
|
|
707
|
-
end
|
|
708
|
-
end
|
|
709
|
-
|
|
710
|
-
context 'when version is not passed' do
|
|
711
|
-
it 'deletes `t:version` key from the message' do
|
|
712
|
-
@mb_obj.template_version('version')
|
|
713
|
-
|
|
714
|
-
expect(@mb_obj.message.key?('t:version')).to be(true)
|
|
715
|
-
|
|
716
|
-
@mb_obj.template_version
|
|
717
|
-
|
|
718
|
-
expect(@mb_obj.message.key?('t:version')).to be(false)
|
|
719
|
-
end
|
|
720
|
-
end
|
|
721
|
-
end
|
|
722
|
-
|
|
723
|
-
describe 'The method template_text' do
|
|
724
|
-
before do
|
|
725
|
-
@mb_obj = Mailgun::MessageBuilder.new
|
|
726
|
-
end
|
|
727
|
-
|
|
728
|
-
it 'enables/disables rendering in the text part of the message in case of template sending' do
|
|
729
|
-
@mb_obj.template_text('Yes')
|
|
730
|
-
|
|
731
|
-
expect(@mb_obj.message['t:text']).to eq('yes')
|
|
732
|
-
|
|
733
|
-
@mb_obj.template_text('No')
|
|
734
|
-
|
|
735
|
-
expect(@mb_obj.message['t:text']).to eq('no')
|
|
736
|
-
|
|
737
|
-
@mb_obj.template_text(true)
|
|
738
|
-
|
|
739
|
-
expect(@mb_obj.message['t:text']).to eq('yes')
|
|
740
|
-
|
|
741
|
-
@mb_obj.template_text(false)
|
|
742
|
-
|
|
743
|
-
expect(@mb_obj.message['t:text']).to eq('no')
|
|
744
|
-
end
|
|
745
|
-
end
|