mailgun-ruby 1.4.2 → 1.4.3
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/.github/workflows/ci.yml +30 -8
- data/.rubocop.yml +68 -0
- data/Gemfile +1 -1
- data/README.md +1 -1
- data/Rakefile +0 -5
- data/lib/mailgun/client.rb +12 -8
- data/lib/mailgun/domains/domains.rb +4 -2
- data/lib/mailgun/lists/opt_in_handler.rb +2 -4
- data/lib/mailgun/messages/batch_message.rb +2 -1
- data/lib/mailgun/messages/message_builder.rb +4 -32
- data/lib/mailgun/metrics/metrics.rb +6 -2
- data/lib/mailgun/response.rb +2 -2
- data/lib/mailgun/tags/analytics_tags.rb +9 -5
- data/lib/mailgun/tags/tags.rb +4 -2
- data/lib/mailgun/version.rb +1 -1
- data/lib/railgun/attachment.rb +4 -6
- data/lib/railgun/mailer.rb +2 -2
- data/mailgun.gemspec +4 -1
- data/spec/integration/analytics_tags_spec.rb +1 -1
- data/spec/integration/domains_spec.rb +7 -13
- data/spec/integration/events_spec.rb +1 -3
- data/spec/integration/list_members_spec.rb +1 -1
- data/spec/integration/logs_spec.rb +1 -1
- data/spec/integration/mailgun_spec.rb +3 -2
- data/spec/integration/metrics_spec.rb +9 -3
- data/spec/integration/suppressions_spec.rb +203 -26
- data/spec/integration/webhook_spec.rb +7 -2
- data/spec/spec_helper.rb +7 -0
- data/spec/unit/client_spec.rb +424 -0
- data/spec/unit/connection/test_client.rb +60 -13
- data/spec/unit/events/events_spec.rb +25 -9
- data/spec/unit/helpers/api_version_checker_spec.rb +206 -0
- data/spec/unit/lists/opt_in_handler_spec.rb +4 -2
- data/spec/unit/mailgun_spec.rb +7 -5
- data/spec/unit/messages/batch_message_spec.rb +25 -24
- data/spec/unit/messages/message_builder_spec.rb +83 -86
- data/spec/unit/railgun/content_type_spec.rb +7 -7
- data/spec/unit/railgun/mailer_spec.rb +17 -14
- data/spec/unit/response_spec.rb +225 -0
- data/vcr_cassettes/For_the_suppressions_handling_class/creates_a_single_bounce.yml +55 -0
- data/vcr_cassettes/suppressions.yml +1053 -170
- metadata +55 -5
|
@@ -4,7 +4,7 @@ require 'spec_helper'
|
|
|
4
4
|
require 'stringio'
|
|
5
5
|
|
|
6
6
|
describe 'MessageBuilder attribute readers' do
|
|
7
|
-
it '
|
|
7
|
+
it 'is readable' do
|
|
8
8
|
@mb_obj = Mailgun::MessageBuilder.new
|
|
9
9
|
|
|
10
10
|
expect(@mb_obj).to respond_to(:message)
|
|
@@ -13,7 +13,7 @@ describe 'MessageBuilder attribute readers' do
|
|
|
13
13
|
end
|
|
14
14
|
|
|
15
15
|
describe 'The instantiation of MessageBuilder' do
|
|
16
|
-
before
|
|
16
|
+
before do
|
|
17
17
|
@mb_obj = Mailgun::MessageBuilder.new
|
|
18
18
|
end
|
|
19
19
|
|
|
@@ -37,7 +37,7 @@ describe 'The instantiation of MessageBuilder' do
|
|
|
37
37
|
end
|
|
38
38
|
|
|
39
39
|
describe 'The method add_recipient' do
|
|
40
|
-
before
|
|
40
|
+
before do
|
|
41
41
|
@mb_obj = Mailgun::MessageBuilder.new
|
|
42
42
|
@address = 'jane@example.com'
|
|
43
43
|
@variables = { 'first' => 'Jane', 'last' => 'Doe' }
|
|
@@ -92,6 +92,7 @@ describe 'The method add_recipient' do
|
|
|
92
92
|
expect(@mb_obj.message[recipient_type][0]).to eq("'#{@variables['first']} #{@variables['last']}' <#{@address}>")
|
|
93
93
|
@mb_obj.counters[:recipients].each_value { |value| expect(value).to eq(0) }
|
|
94
94
|
end
|
|
95
|
+
|
|
95
96
|
it 'adds too many to recipients and raises an exception.' do
|
|
96
97
|
recipient_type = :to
|
|
97
98
|
|
|
@@ -101,6 +102,7 @@ describe 'The method add_recipient' do
|
|
|
101
102
|
end
|
|
102
103
|
end.to raise_error(Mailgun::ParameterError)
|
|
103
104
|
end
|
|
105
|
+
|
|
104
106
|
it 'adds too many cc recipients and raises an exception.' do
|
|
105
107
|
recipient_type = :cc
|
|
106
108
|
|
|
@@ -110,6 +112,7 @@ describe 'The method add_recipient' do
|
|
|
110
112
|
end
|
|
111
113
|
end.to raise_error(Mailgun::ParameterError)
|
|
112
114
|
end
|
|
115
|
+
|
|
113
116
|
it 'adds too many bcc recipients and raises an exception.' do
|
|
114
117
|
recipient_type = :bcc
|
|
115
118
|
|
|
@@ -130,7 +133,7 @@ describe 'The method set_subject' do
|
|
|
130
133
|
end
|
|
131
134
|
|
|
132
135
|
describe 'The method subject' do
|
|
133
|
-
before
|
|
136
|
+
before do
|
|
134
137
|
@mb_obj = Mailgun::MessageBuilder.new
|
|
135
138
|
end
|
|
136
139
|
|
|
@@ -167,18 +170,21 @@ describe 'The method set_text_body' do
|
|
|
167
170
|
end
|
|
168
171
|
|
|
169
172
|
describe 'The method body_text' do
|
|
170
|
-
before
|
|
173
|
+
before do
|
|
171
174
|
@mb_obj = Mailgun::MessageBuilder.new
|
|
172
175
|
end
|
|
176
|
+
|
|
173
177
|
it 'sets the body_text to blank if called and no parameters are provided' do
|
|
174
178
|
@mb_obj.body_text
|
|
175
179
|
@mb_obj.message[:text] = ''
|
|
176
180
|
end
|
|
181
|
+
|
|
177
182
|
it 'sets the message text if called with the body_text parameter' do
|
|
178
183
|
the_text = 'Don\'t mess with Texas!'
|
|
179
184
|
@mb_obj.body_text(the_text)
|
|
180
185
|
@mb_obj.message[:text] = the_text
|
|
181
186
|
end
|
|
187
|
+
|
|
182
188
|
it 'ensures no duplicate text bodies can exist and last setter is stored' do
|
|
183
189
|
the_first_text = 'Mess with Texas!'
|
|
184
190
|
the_second_text = 'Don\'t mess with Texas!'
|
|
@@ -209,7 +215,7 @@ describe 'The method set_from_address' do
|
|
|
209
215
|
end
|
|
210
216
|
|
|
211
217
|
describe 'The method from' do
|
|
212
|
-
before
|
|
218
|
+
before do
|
|
213
219
|
@mb_obj = Mailgun::MessageBuilder.new
|
|
214
220
|
end
|
|
215
221
|
|
|
@@ -246,9 +252,10 @@ describe 'The method from' do
|
|
|
246
252
|
end
|
|
247
253
|
|
|
248
254
|
describe 'The method add_attachment' do
|
|
249
|
-
before
|
|
255
|
+
before do
|
|
250
256
|
@mb_obj = Mailgun::MessageBuilder.new
|
|
251
257
|
end
|
|
258
|
+
|
|
252
259
|
it 'adds a few file paths to the message object' do
|
|
253
260
|
file1 = "#{File.dirname(__FILE__)}/sample_data/mailgun_icon.png"
|
|
254
261
|
file2 = "#{File.dirname(__FILE__)}/sample_data/rackspace_logo.jpg"
|
|
@@ -283,9 +290,10 @@ describe 'The method add_attachment' do
|
|
|
283
290
|
end
|
|
284
291
|
|
|
285
292
|
describe 'The method add_inline_image' do
|
|
286
|
-
before
|
|
293
|
+
before do
|
|
287
294
|
@mb_obj = Mailgun::MessageBuilder.new
|
|
288
295
|
end
|
|
296
|
+
|
|
289
297
|
it 'adds a few file paths to the message object' do
|
|
290
298
|
file1 = "#{File.dirname(__FILE__)}/sample_data/mailgun_icon.png"
|
|
291
299
|
file2 = "#{File.dirname(__FILE__)}/sample_data/rackspace_logo.jpg"
|
|
@@ -299,7 +307,7 @@ describe 'The method add_inline_image' do
|
|
|
299
307
|
end
|
|
300
308
|
|
|
301
309
|
describe 'The method list_unsubscribe' do
|
|
302
|
-
before
|
|
310
|
+
before do
|
|
303
311
|
@mb_obj = Mailgun::MessageBuilder.new
|
|
304
312
|
end
|
|
305
313
|
|
|
@@ -323,38 +331,35 @@ describe 'The method list_unsubscribe' do
|
|
|
323
331
|
end
|
|
324
332
|
end
|
|
325
333
|
|
|
326
|
-
describe 'The method set_test_mode' do
|
|
327
|
-
it 'warns of set_test_mode deprecation' do
|
|
328
|
-
@mb_obj = Mailgun::MessageBuilder.new
|
|
329
|
-
expect(@mb_obj).to receive :warn
|
|
330
|
-
@mb_obj.set_test_mode 'Yes'
|
|
331
|
-
end
|
|
332
|
-
end
|
|
333
|
-
|
|
334
334
|
describe 'The method test_mode' do
|
|
335
|
-
before
|
|
335
|
+
before do
|
|
336
336
|
@mb_obj = Mailgun::MessageBuilder.new
|
|
337
337
|
end
|
|
338
|
+
|
|
338
339
|
it 'turns on test mode with boolean true' do
|
|
339
340
|
@mb_obj.test_mode(true)
|
|
340
341
|
|
|
341
342
|
expect(@mb_obj.message['o:testmode'][0]).to eq('yes')
|
|
342
343
|
end
|
|
344
|
+
|
|
343
345
|
it 'turns on test mode with string true' do
|
|
344
346
|
@mb_obj.test_mode('true')
|
|
345
347
|
|
|
346
348
|
expect(@mb_obj.message['o:testmode'][0]).to eq('yes')
|
|
347
349
|
end
|
|
350
|
+
|
|
348
351
|
it 'turns off test mode with boolean false' do
|
|
349
352
|
@mb_obj.test_mode(false)
|
|
350
353
|
|
|
351
354
|
expect(@mb_obj.message['o:testmode'][0]).to eq('no')
|
|
352
355
|
end
|
|
356
|
+
|
|
353
357
|
it 'turns off test mode with string false' do
|
|
354
358
|
@mb_obj.test_mode('false')
|
|
355
359
|
|
|
356
360
|
expect(@mb_obj.message['o:testmode'][0]).to eq('no')
|
|
357
361
|
end
|
|
362
|
+
|
|
358
363
|
it 'does not allow multiple values' do
|
|
359
364
|
@mb_obj.test_mode('false')
|
|
360
365
|
@mb_obj.test_mode('true')
|
|
@@ -365,38 +370,35 @@ describe 'The method test_mode' do
|
|
|
365
370
|
end
|
|
366
371
|
end
|
|
367
372
|
|
|
368
|
-
describe 'The method set_dkim' do
|
|
369
|
-
it 'warns of set_dkim deprecation' do
|
|
370
|
-
@mb_obj = Mailgun::MessageBuilder.new
|
|
371
|
-
expect(@mb_obj).to receive :warn
|
|
372
|
-
@mb_obj.set_dkim 'Yes'
|
|
373
|
-
end
|
|
374
|
-
end
|
|
375
|
-
|
|
376
373
|
describe 'The method dkim' do
|
|
377
|
-
before
|
|
374
|
+
before do
|
|
378
375
|
@mb_obj = Mailgun::MessageBuilder.new
|
|
379
376
|
end
|
|
377
|
+
|
|
380
378
|
it 'turns on dkim with boolean true' do
|
|
381
379
|
@mb_obj.dkim(true)
|
|
382
380
|
|
|
383
381
|
expect(@mb_obj.message['o:dkim'][0]).to eq('yes')
|
|
384
382
|
end
|
|
383
|
+
|
|
385
384
|
it 'turns on dkim with string true' do
|
|
386
385
|
@mb_obj.dkim('true')
|
|
387
386
|
|
|
388
387
|
expect(@mb_obj.message['o:dkim'][0]).to eq('yes')
|
|
389
388
|
end
|
|
389
|
+
|
|
390
390
|
it 'turns off dkim with boolean false' do
|
|
391
391
|
@mb_obj.dkim(false)
|
|
392
392
|
|
|
393
393
|
expect(@mb_obj.message['o:dkim'][0]).to eq('no')
|
|
394
394
|
end
|
|
395
|
+
|
|
395
396
|
it 'turns off dkim with string false' do
|
|
396
397
|
@mb_obj.dkim('false')
|
|
397
398
|
|
|
398
399
|
expect(@mb_obj.message['o:dkim'][0]).to eq('no')
|
|
399
400
|
end
|
|
401
|
+
|
|
400
402
|
it 'does not allow multiple values' do
|
|
401
403
|
@mb_obj.dkim('false')
|
|
402
404
|
@mb_obj.dkim('true')
|
|
@@ -408,14 +410,16 @@ describe 'The method dkim' do
|
|
|
408
410
|
end
|
|
409
411
|
|
|
410
412
|
describe 'The method add_campaign_id' do
|
|
411
|
-
before
|
|
413
|
+
before do
|
|
412
414
|
@mb_obj = Mailgun::MessageBuilder.new
|
|
413
415
|
end
|
|
416
|
+
|
|
414
417
|
it 'adds a campaign ID to the message' do
|
|
415
418
|
@mb_obj.add_campaign_id('My-Campaign-Id-1')
|
|
416
419
|
|
|
417
420
|
expect(@mb_obj.message['o:campaign'][0]).to eq('My-Campaign-Id-1')
|
|
418
421
|
end
|
|
422
|
+
|
|
419
423
|
it 'adds a few more campaign IDs to the message' do
|
|
420
424
|
@mb_obj.add_campaign_id('My-Campaign-Id-1')
|
|
421
425
|
@mb_obj.add_campaign_id('My-Campaign-Id-2')
|
|
@@ -425,6 +429,7 @@ describe 'The method add_campaign_id' do
|
|
|
425
429
|
expect(@mb_obj.message['o:campaign'][1]).to eq('My-Campaign-Id-2')
|
|
426
430
|
expect(@mb_obj.message['o:campaign'][2]).to eq('My-Campaign-Id-3')
|
|
427
431
|
end
|
|
432
|
+
|
|
428
433
|
it 'adds too many campaign IDs to the message' do
|
|
429
434
|
expect do
|
|
430
435
|
10.times do
|
|
@@ -435,14 +440,16 @@ describe 'The method add_campaign_id' do
|
|
|
435
440
|
end
|
|
436
441
|
|
|
437
442
|
describe 'The method add_tag' do
|
|
438
|
-
before
|
|
443
|
+
before do
|
|
439
444
|
@mb_obj = Mailgun::MessageBuilder.new
|
|
440
445
|
end
|
|
446
|
+
|
|
441
447
|
it 'adds a tag to the message' do
|
|
442
448
|
@mb_obj.add_tag('My-Tag-1')
|
|
443
449
|
|
|
444
450
|
expect(@mb_obj.message['o:tag'][0]).to eq('My-Tag-1')
|
|
445
451
|
end
|
|
452
|
+
|
|
446
453
|
it 'adds a few more tags to the message' do
|
|
447
454
|
@mb_obj.add_tag('My-Tag-1')
|
|
448
455
|
@mb_obj.add_tag('My-Tag-2')
|
|
@@ -452,6 +459,7 @@ describe 'The method add_tag' do
|
|
|
452
459
|
expect(@mb_obj.message['o:tag'][1]).to eq('My-Tag-2')
|
|
453
460
|
expect(@mb_obj.message['o:tag'][2]).to eq('My-Tag-3')
|
|
454
461
|
end
|
|
462
|
+
|
|
455
463
|
it 'adds too many tags to the message' do
|
|
456
464
|
expect do
|
|
457
465
|
12.times do
|
|
@@ -461,18 +469,11 @@ describe 'The method add_tag' do
|
|
|
461
469
|
end
|
|
462
470
|
end
|
|
463
471
|
|
|
464
|
-
describe 'The method set_open_tracking' do
|
|
465
|
-
it 'warns of set_open_tracking deprecation' do
|
|
466
|
-
@mb_obj = Mailgun::MessageBuilder.new
|
|
467
|
-
expect(@mb_obj).to receive :warn
|
|
468
|
-
@mb_obj.set_open_tracking 'Yes'
|
|
469
|
-
end
|
|
470
|
-
end
|
|
471
|
-
|
|
472
472
|
describe 'The method track_opens' do
|
|
473
|
-
before
|
|
473
|
+
before do
|
|
474
474
|
@mb_obj = Mailgun::MessageBuilder.new
|
|
475
475
|
end
|
|
476
|
+
|
|
476
477
|
it 'enables/disables open tracking on a per message basis.' do
|
|
477
478
|
@mb_obj.track_opens('Yes')
|
|
478
479
|
|
|
@@ -493,18 +494,11 @@ describe 'The method track_opens' do
|
|
|
493
494
|
end
|
|
494
495
|
end
|
|
495
496
|
|
|
496
|
-
describe 'The method set_click_tracking' do
|
|
497
|
-
it 'warns of set_click_tracking deprecation' do
|
|
498
|
-
@mb_obj = Mailgun::MessageBuilder.new
|
|
499
|
-
expect(@mb_obj).to receive :warn
|
|
500
|
-
@mb_obj.set_click_tracking 'Yes'
|
|
501
|
-
end
|
|
502
|
-
end
|
|
503
|
-
|
|
504
497
|
describe 'The method track_clicks' do
|
|
505
|
-
before
|
|
498
|
+
before do
|
|
506
499
|
@mb_obj = Mailgun::MessageBuilder.new
|
|
507
500
|
end
|
|
501
|
+
|
|
508
502
|
it 'enables/disables click tracking on a per message basis.' do
|
|
509
503
|
@mb_obj.track_clicks('Yes')
|
|
510
504
|
|
|
@@ -536,18 +530,11 @@ describe 'The method track_clicks' do
|
|
|
536
530
|
end
|
|
537
531
|
end
|
|
538
532
|
|
|
539
|
-
describe 'The method set_delivery_time' do
|
|
540
|
-
it 'warns of set_delivery_time deprecation' do
|
|
541
|
-
@mb_obj = Mailgun::MessageBuilder.new
|
|
542
|
-
expect(@mb_obj).to receive :warn
|
|
543
|
-
@mb_obj.set_delivery_time 'October 25, 2013 10:00PM CST'
|
|
544
|
-
end
|
|
545
|
-
end
|
|
546
|
-
|
|
547
533
|
describe 'The method deliver_at' do
|
|
548
|
-
before
|
|
534
|
+
before do
|
|
549
535
|
@mb_obj = Mailgun::MessageBuilder.new
|
|
550
536
|
end
|
|
537
|
+
|
|
551
538
|
it 'defines a time/date to deliver a message in RFC2822 format.' do
|
|
552
539
|
@mb_obj.deliver_at('October 25, 2013 10:00PM CST')
|
|
553
540
|
|
|
@@ -564,48 +551,53 @@ describe 'The method set_custom_data' do
|
|
|
564
551
|
end
|
|
565
552
|
|
|
566
553
|
describe 'The method header' do
|
|
567
|
-
before
|
|
554
|
+
before do
|
|
568
555
|
@mb_obj = Mailgun::MessageBuilder.new
|
|
569
556
|
end
|
|
557
|
+
|
|
570
558
|
it 'accepts valid JSON and appends as data to the message.' do
|
|
571
559
|
@mb_obj.header('my-data', '{"key":"value"}')
|
|
572
560
|
|
|
573
|
-
expect(@mb_obj.message['h:my-data']).to
|
|
561
|
+
expect(@mb_obj.message['h:my-data']).to be_a(String)
|
|
574
562
|
expect(@mb_obj.message['h:my-data'].to_s).to eq('{"key":"value"}')
|
|
575
563
|
end
|
|
576
564
|
end
|
|
577
565
|
|
|
578
566
|
describe 'The method variable' do
|
|
579
|
-
before
|
|
567
|
+
before do
|
|
580
568
|
@mb_obj = Mailgun::MessageBuilder.new
|
|
581
569
|
end
|
|
570
|
+
|
|
582
571
|
it 'accepts valid JSON and stores it as message[param].' do
|
|
583
572
|
@mb_obj.variable('my-data', '{"key":"value"}')
|
|
584
573
|
|
|
585
|
-
expect(@mb_obj.message['v:my-data']).to
|
|
574
|
+
expect(@mb_obj.message['v:my-data']).to be_a(String)
|
|
586
575
|
expect(@mb_obj.message['v:my-data'].to_s).to eq('{"key":"value"}')
|
|
587
576
|
end
|
|
577
|
+
|
|
588
578
|
it 'accepts a hash and appends as data to the message.' do
|
|
589
579
|
data = { 'key' => 'value' }
|
|
590
580
|
@mb_obj.variable('my-data', data)
|
|
591
581
|
|
|
592
|
-
expect(@mb_obj.message['v:my-data']).to
|
|
582
|
+
expect(@mb_obj.message['v:my-data']).to be_a(String)
|
|
593
583
|
expect(@mb_obj.message['v:my-data'].to_s).to eq('{"key":"value"}')
|
|
594
584
|
end
|
|
585
|
+
|
|
595
586
|
it 'accepts string values' do
|
|
596
587
|
data = 'String Value.'
|
|
597
588
|
|
|
598
589
|
@mb_obj.variable('my-data', data)
|
|
599
590
|
|
|
600
|
-
expect(@mb_obj.message['v:my-data']).to
|
|
591
|
+
expect(@mb_obj.message['v:my-data']).to be_a(String)
|
|
601
592
|
expect(@mb_obj.message['v:my-data'].to_s).to eq('String Value.')
|
|
602
593
|
end
|
|
603
594
|
end
|
|
604
595
|
|
|
605
596
|
describe 'The method add_custom_parameter' do
|
|
606
|
-
before
|
|
597
|
+
before do
|
|
607
598
|
@mb_obj = Mailgun::MessageBuilder.new
|
|
608
599
|
end
|
|
600
|
+
|
|
609
601
|
it 'adds an undefined parameter to the message.' do
|
|
610
602
|
@mb_obj.add_custom_parameter('h:my-sweet-header', 'datagoeshere')
|
|
611
603
|
|
|
@@ -622,35 +614,39 @@ describe 'The method set_message_id' do
|
|
|
622
614
|
end
|
|
623
615
|
|
|
624
616
|
describe 'The method message_id' do
|
|
625
|
-
before
|
|
617
|
+
before do
|
|
626
618
|
@mb_obj = Mailgun::MessageBuilder.new
|
|
627
619
|
@the_message_id = '<20141014000000.11111.11111@example.com>'
|
|
628
620
|
end
|
|
621
|
+
|
|
629
622
|
it 'correctly sets the Message-Id header' do
|
|
630
623
|
@mb_obj.message_id(@the_message_id)
|
|
631
624
|
|
|
632
625
|
expect(@mb_obj.message['h:Message-Id']).to eq(@the_message_id)
|
|
633
626
|
end
|
|
627
|
+
|
|
634
628
|
it 'correctly clears the Message-Id header when passed nil' do
|
|
635
629
|
@mb_obj.message_id(nil)
|
|
636
630
|
|
|
637
|
-
expect(@mb_obj.message.key?('h:Message-Id')).to
|
|
631
|
+
expect(@mb_obj.message.key?('h:Message-Id')).to be(false)
|
|
638
632
|
end
|
|
633
|
+
|
|
639
634
|
it 'correctly sets the Message-Id header when passed an empty string' do
|
|
640
635
|
@mb_obj.message_id(@the_message_id)
|
|
641
636
|
|
|
642
|
-
expect(@mb_obj.message.key?('h:Message-Id')).to
|
|
637
|
+
expect(@mb_obj.message.key?('h:Message-Id')).to be(true)
|
|
643
638
|
|
|
644
639
|
@mb_obj.message_id('')
|
|
645
640
|
|
|
646
|
-
expect(@mb_obj.message.key?('h:Message-Id')).to
|
|
641
|
+
expect(@mb_obj.message.key?('h:Message-Id')).to be(false)
|
|
647
642
|
end
|
|
648
643
|
end
|
|
649
644
|
|
|
650
645
|
describe 'The method template' do
|
|
651
|
-
before
|
|
646
|
+
before do
|
|
652
647
|
@mb_obj = Mailgun::MessageBuilder.new
|
|
653
648
|
end
|
|
649
|
+
|
|
654
650
|
context 'when template name is passed' do
|
|
655
651
|
it 'sets `template` to the message' do
|
|
656
652
|
template_name = 'template.name'
|
|
@@ -662,33 +658,34 @@ describe 'The method template' do
|
|
|
662
658
|
|
|
663
659
|
context 'when multiple values are passed' do
|
|
664
660
|
it 'sets the last value as message template' do
|
|
665
|
-
|
|
666
|
-
|
|
661
|
+
template_name1 = 'template.name_1'
|
|
662
|
+
template_name2 = 'template.name_2'
|
|
667
663
|
|
|
668
|
-
@mb_obj.template(
|
|
669
|
-
@mb_obj.template(
|
|
664
|
+
@mb_obj.template(template_name1)
|
|
665
|
+
@mb_obj.template(template_name2)
|
|
670
666
|
|
|
671
|
-
expect(@mb_obj.message['template']).to eq(
|
|
667
|
+
expect(@mb_obj.message['template']).to eq(template_name2)
|
|
672
668
|
end
|
|
673
669
|
end
|
|
674
670
|
|
|
675
671
|
context 'when template name is not passed' do
|
|
676
|
-
it '
|
|
672
|
+
it 'deletes `template` key from the message' do
|
|
677
673
|
@mb_obj.template('template.name')
|
|
678
674
|
|
|
679
|
-
expect(@mb_obj.message.key?('template')).to
|
|
675
|
+
expect(@mb_obj.message.key?('template')).to be(true)
|
|
680
676
|
|
|
681
677
|
@mb_obj.template
|
|
682
678
|
|
|
683
|
-
expect(@mb_obj.message.key?('template')).to
|
|
679
|
+
expect(@mb_obj.message.key?('template')).to be(false)
|
|
684
680
|
end
|
|
685
681
|
end
|
|
686
682
|
end
|
|
687
683
|
|
|
688
684
|
describe 'The method template_version' do
|
|
689
|
-
before
|
|
685
|
+
before do
|
|
690
686
|
@mb_obj = Mailgun::MessageBuilder.new
|
|
691
687
|
end
|
|
688
|
+
|
|
692
689
|
context 'when template version is passed' do
|
|
693
690
|
it 'adds `t:version` key value to the message' do
|
|
694
691
|
version = 'version_1'
|
|
@@ -700,31 +697,31 @@ describe 'The method template_version' do
|
|
|
700
697
|
|
|
701
698
|
context 'when multiple values are passed' do
|
|
702
699
|
it 'adds the last value as `t:version` key value to the message' do
|
|
703
|
-
|
|
704
|
-
|
|
700
|
+
version1 = 'version_1'
|
|
701
|
+
version2 = 'version_2'
|
|
705
702
|
|
|
706
|
-
@mb_obj.template_version(
|
|
707
|
-
@mb_obj.template_version(
|
|
703
|
+
@mb_obj.template_version(version1)
|
|
704
|
+
@mb_obj.template_version(version2)
|
|
708
705
|
|
|
709
|
-
expect(@mb_obj.message['t:version']).to eq(
|
|
706
|
+
expect(@mb_obj.message['t:version']).to eq(version2)
|
|
710
707
|
end
|
|
711
708
|
end
|
|
712
709
|
|
|
713
710
|
context 'when version is not passed' do
|
|
714
|
-
it '
|
|
711
|
+
it 'deletes `t:version` key from the message' do
|
|
715
712
|
@mb_obj.template_version('version')
|
|
716
713
|
|
|
717
|
-
expect(@mb_obj.message.key?('t:version')).to
|
|
714
|
+
expect(@mb_obj.message.key?('t:version')).to be(true)
|
|
718
715
|
|
|
719
716
|
@mb_obj.template_version
|
|
720
717
|
|
|
721
|
-
expect(@mb_obj.message.key?('t:version')).to
|
|
718
|
+
expect(@mb_obj.message.key?('t:version')).to be(false)
|
|
722
719
|
end
|
|
723
720
|
end
|
|
724
721
|
end
|
|
725
722
|
|
|
726
723
|
describe 'The method template_text' do
|
|
727
|
-
before
|
|
724
|
+
before do
|
|
728
725
|
@mb_obj = Mailgun::MessageBuilder.new
|
|
729
726
|
end
|
|
730
727
|
|
|
@@ -41,11 +41,11 @@ describe 'extract_body' do
|
|
|
41
41
|
context 'with <Content-Type: text/plain>' do
|
|
42
42
|
let(:sample_mail) { Mail.new(text_mail_option) }
|
|
43
43
|
|
|
44
|
-
it '
|
|
44
|
+
it 'returns body text' do
|
|
45
45
|
expect(Railgun.extract_body_text(sample_mail)).to eq(text_content)
|
|
46
46
|
end
|
|
47
47
|
|
|
48
|
-
it '
|
|
48
|
+
it 'does not return body html' do
|
|
49
49
|
expect(Railgun.extract_body_html(sample_mail)).to be_nil
|
|
50
50
|
end
|
|
51
51
|
end
|
|
@@ -53,11 +53,11 @@ describe 'extract_body' do
|
|
|
53
53
|
context 'with <Content-Type: text/html>' do
|
|
54
54
|
let(:sample_mail) { Mail.new(html_mail_option) }
|
|
55
55
|
|
|
56
|
-
it '
|
|
56
|
+
it 'does not return body text' do
|
|
57
57
|
expect(Railgun.extract_body_text(sample_mail)).to be_nil
|
|
58
58
|
end
|
|
59
59
|
|
|
60
|
-
it '
|
|
60
|
+
it 'returns body html' do
|
|
61
61
|
expect(Railgun.extract_body_html(sample_mail)).to eq(html_content)
|
|
62
62
|
end
|
|
63
63
|
end
|
|
@@ -74,15 +74,15 @@ describe 'extract_body' do
|
|
|
74
74
|
@sample_mail.add_part html_mail
|
|
75
75
|
end
|
|
76
76
|
|
|
77
|
-
it '
|
|
77
|
+
it 'returns body text' do
|
|
78
78
|
expect(Railgun.extract_body_text(@sample_mail)).to eq(text_content)
|
|
79
79
|
end
|
|
80
80
|
|
|
81
|
-
it '
|
|
81
|
+
it 'returns body html' do
|
|
82
82
|
expect(Railgun.extract_body_html(@sample_mail)).to eq(html_content)
|
|
83
83
|
end
|
|
84
84
|
|
|
85
|
-
it '
|
|
85
|
+
it 'returns AMP html' do
|
|
86
86
|
expect(Railgun.extract_amp_html(@sample_mail)).to eq(amp_content)
|
|
87
87
|
end
|
|
88
88
|
end
|
|
@@ -162,17 +162,20 @@ describe 'Railgun::Mailer' do
|
|
|
162
162
|
end
|
|
163
163
|
|
|
164
164
|
it 'properly handles headers that are passed as separate POST params' do
|
|
165
|
-
message = UnitTestMailer.plain_message(
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
165
|
+
message = UnitTestMailer.plain_message(
|
|
166
|
+
'test@example.org', 'Test!',
|
|
167
|
+
{
|
|
168
|
+
# `From`, `To`, and `Subject` are set on the envelope, so they should be ignored as headers
|
|
169
|
+
'From' => 'units@example.net',
|
|
170
|
+
'To' => 'user@example.com',
|
|
171
|
+
'Subject' => 'This should disappear',
|
|
172
|
+
# If `Bcc` or `Cc` are set as headers, they should be carried over as POST params, not headers
|
|
173
|
+
'Bcc' => ['list@example.org'],
|
|
174
|
+
'Cc' => ['admin@example.com'],
|
|
175
|
+
# This is an arbitrary header and should be carried over properly
|
|
176
|
+
'X-Source' => 'unit tests'
|
|
177
|
+
}
|
|
178
|
+
)
|
|
176
179
|
|
|
177
180
|
body = Railgun.transform_for_mailgun(message)
|
|
178
181
|
|
|
@@ -202,7 +205,7 @@ describe 'Railgun::Mailer' do
|
|
|
202
205
|
}
|
|
203
206
|
end
|
|
204
207
|
body = Railgun.transform_for_mailgun(message)
|
|
205
|
-
expect(body['v:my-data']).to
|
|
208
|
+
expect(body['v:my-data']).to be_a(String)
|
|
206
209
|
expect(body['v:my-data'].to_s).to eq('{"key":"value"}')
|
|
207
210
|
end
|
|
208
211
|
|
|
@@ -214,7 +217,7 @@ describe 'Railgun::Mailer' do
|
|
|
214
217
|
end
|
|
215
218
|
body = Railgun.transform_for_mailgun(message)
|
|
216
219
|
|
|
217
|
-
expect(body['v:my-data']).to
|
|
220
|
+
expect(body['v:my-data']).to be_a(String)
|
|
218
221
|
expect(body['v:my-data'].to_s).to eq('{"key":"value"}')
|
|
219
222
|
end
|
|
220
223
|
|
|
@@ -226,7 +229,7 @@ describe 'Railgun::Mailer' do
|
|
|
226
229
|
end
|
|
227
230
|
body = Railgun.transform_for_mailgun(message)
|
|
228
231
|
|
|
229
|
-
expect(body['v:my-data']).to
|
|
232
|
+
expect(body['v:my-data']).to be_a(String)
|
|
230
233
|
expect(body['v:my-data'].to_s).to eq('String Value.')
|
|
231
234
|
end
|
|
232
235
|
end
|