mailgun-ruby 1.4.1 → 1.4.2

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.
Files changed (67) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +3 -1
  3. data/README.md +1 -1
  4. data/Rakefile +5 -3
  5. data/docs/AnalyticsTags.md +63 -0
  6. data/lib/mailgun/address.rb +5 -5
  7. data/lib/mailgun/chains.rb +2 -3
  8. data/lib/mailgun/client.rb +47 -51
  9. data/lib/mailgun/domains/domains.rb +7 -8
  10. data/lib/mailgun/events/events.rb +4 -3
  11. data/lib/mailgun/exceptions/exceptions.rb +12 -15
  12. data/lib/mailgun/helpers/api_version_checker.rb +6 -1
  13. data/lib/mailgun/lists/opt_in_handler.rb +4 -6
  14. data/lib/mailgun/logs/logs.rb +4 -2
  15. data/lib/mailgun/messages/batch_message.rb +8 -9
  16. data/lib/mailgun/messages/message_builder.rb +36 -24
  17. data/lib/mailgun/metrics/metrics.rb +6 -4
  18. data/lib/mailgun/response.rb +11 -9
  19. data/lib/mailgun/subaccounts/subaccounts.rb +13 -8
  20. data/lib/mailgun/suppressions.rb +36 -43
  21. data/lib/mailgun/tags/analytics_tags.rb +33 -2
  22. data/lib/mailgun/tags/tags.rb +25 -17
  23. data/lib/mailgun/templates/templates.rb +40 -29
  24. data/lib/mailgun/version.rb +3 -1
  25. data/lib/mailgun/webhooks/webhooks.rb +22 -19
  26. data/lib/mailgun-ruby.rb +2 -0
  27. data/lib/mailgun.rb +4 -4
  28. data/lib/railgun/attachment.rb +9 -14
  29. data/lib/railgun/errors.rb +2 -3
  30. data/lib/railgun/mailer.rb +35 -39
  31. data/lib/railgun/railtie.rb +2 -0
  32. data/lib/railgun.rb +2 -0
  33. data/mailgun.gemspec +12 -11
  34. data/spec/integration/analytics_tags_spec.rb +54 -0
  35. data/spec/integration/bounces_spec.rb +12 -11
  36. data/spec/integration/campaign_spec.rb +20 -18
  37. data/spec/integration/complaints_spec.rb +8 -6
  38. data/spec/integration/domains_spec.rb +6 -6
  39. data/spec/integration/email_validation_spec.rb +35 -34
  40. data/spec/integration/events_spec.rb +7 -5
  41. data/spec/integration/list_members_spec.rb +27 -26
  42. data/spec/integration/list_spec.rb +22 -21
  43. data/spec/integration/logs_spec.rb +48 -46
  44. data/spec/integration/mailer_spec.rb +7 -3
  45. data/spec/integration/mailgun_spec.rb +82 -90
  46. data/spec/integration/metrics_spec.rb +130 -130
  47. data/spec/integration/routes_spec.rb +41 -40
  48. data/spec/integration/stats_spec.rb +4 -2
  49. data/spec/integration/subaccounts_spec.rb +9 -10
  50. data/spec/integration/suppressions_spec.rb +21 -20
  51. data/spec/integration/templates_spec.rb +14 -12
  52. data/spec/integration/unsubscribes_spec.rb +8 -6
  53. data/spec/integration/webhook_spec.rb +13 -12
  54. data/spec/spec_helper.rb +8 -8
  55. data/spec/unit/connection/test_client.rb +61 -55
  56. data/spec/unit/events/events_spec.rb +25 -22
  57. data/spec/unit/exceptions/exceptions_spec.rb +8 -7
  58. data/spec/unit/lists/opt_in_handler_spec.rb +8 -6
  59. data/spec/unit/mailgun_spec.rb +64 -63
  60. data/spec/unit/messages/batch_message_spec.rb +15 -15
  61. data/spec/unit/messages/message_builder_spec.rb +98 -94
  62. data/spec/unit/railgun/content_type_spec.rb +24 -23
  63. data/spec/unit/railgun/mailer_spec.rb +58 -58
  64. data/vcr_cassettes/analytics_tags.yml +187 -0
  65. metadata +49 -33
  66. data/.rubocop.yml +0 -8
  67. data/.rubocop_todo.yml +0 -22
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Railgun
2
4
  class Railtie < ::Rails::Railtie
3
5
  ActiveSupport.on_load(:action_mailer) do
data/lib/railgun.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # require ruby dependencies
2
4
  require 'json'
3
5
 
data/mailgun.gemspec CHANGED
@@ -1,10 +1,10 @@
1
- # coding: utf-8
2
- lib = File.expand_path('../lib', __FILE__)
1
+ # frozen_string_literal: true
2
+
3
+ lib = File.expand_path('lib', __dir__)
3
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
5
  require 'mailgun/version'
5
6
 
6
7
  Gem::Specification.new do |spec|
7
-
8
8
  spec.name = 'mailgun-ruby'
9
9
  spec.version = Mailgun::VERSION
10
10
  spec.homepage = 'https://www.mailgun.com/'
@@ -23,21 +23,22 @@ Gem::Specification.new do |spec|
23
23
  spec.files = `git ls-files -z`.split("\x0")
24
24
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
25
25
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
26
- spec.require_paths = ["lib"]
26
+ spec.require_paths = ['lib']
27
27
 
28
28
  spec.required_ruby_version = '>= 3.0.0'
29
29
 
30
30
  spec.add_development_dependency 'bundler', '>= 1.16.2'
31
+ spec.add_development_dependency 'pry', '~> 0.16.0'
32
+ spec.add_development_dependency 'rails'
33
+ spec.add_development_dependency 'rake', '~> 13.3.1'
31
34
  spec.add_development_dependency 'rspec', '~> 3.13.0'
32
35
  spec.add_development_dependency 'rspec-its', '~> 2.0.0'
33
- spec.add_development_dependency 'rake', '~> 13.3.1'
34
- spec.add_development_dependency 'webmock', '~> 3.7'
35
- spec.add_development_dependency 'pry', '~> 0.16.0'
36
- spec.add_development_dependency 'vcr', '~> 6.4.0'
36
+ spec.add_development_dependency 'rubocop'
37
37
  spec.add_development_dependency 'simplecov', '~> 0.16.1'
38
- spec.add_development_dependency 'rails'
39
- spec.add_dependency 'mini_mime'
40
- spec.add_dependency 'faraday', "~> 2.1"
38
+ spec.add_development_dependency 'vcr', '~> 6.4.0'
39
+ spec.add_development_dependency 'webmock', '~> 3.7'
40
+ spec.add_dependency 'faraday', '~> 2.1'
41
41
  spec.add_dependency 'faraday-multipart', '< 2'
42
+ spec.add_dependency 'mini_mime'
42
43
  spec.add_dependency 'zeitwerk'
43
44
  end
@@ -0,0 +1,54 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+ require 'mailgun'
5
+
6
+ vcr_opts = { cassette_name: 'analytics_tags' }
7
+
8
+ describe 'AnalyticsTags', vcr: vcr_opts do
9
+ let(:api_version) { APIVERSION }
10
+ let(:mg_client) { Mailgun::Client.new(APIKEY, APIHOST, api_version, SSL) }
11
+ let(:mg_obj) { Mailgun::AnalyticsTags.new(mg_client) }
12
+ let(:api_version) { 'v1' }
13
+
14
+ describe '#update' do
15
+ it 'updates a tag' do
16
+ response = mg_obj.update('test1', 'test_description')
17
+
18
+ expect(response).to be_truthy
19
+ end
20
+ end
21
+
22
+ describe '#list' do
23
+ it 'returns a list of tags' do
24
+ response = mg_obj.list(
25
+ {
26
+ pagination: {
27
+ sort: 'lastseen:desc',
28
+ limit: 10
29
+ },
30
+ include_subaccounts: true
31
+ }
32
+ )
33
+
34
+ expect(response[0]['account_id']).to eq('test')
35
+ expect(response[0]['tag']).to eq('test1')
36
+ end
37
+ end
38
+
39
+ describe '#remove' do
40
+ it 'removes a tag' do
41
+ response = mg_obj.remove('test1')
42
+
43
+ expect(response).to be_truthy
44
+ end
45
+ end
46
+
47
+ context '#limits' do
48
+ it 'returns limits' do
49
+ response = mg_obj.limits
50
+
51
+ expect(response['limit']).to eq(100_000)
52
+ end
53
+ end
54
+ end
@@ -1,7 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
  require 'mailgun'
3
5
 
4
- vcr_opts = { :cassette_name => "bounces" }
6
+ vcr_opts = { cassette_name: 'bounces' }
5
7
 
6
8
  describe 'For the Bounces endpoint', order: :defined, vcr: vcr_opts do
7
9
  before(:all) do
@@ -12,33 +14,32 @@ describe 'For the Bounces endpoint', order: :defined, vcr: vcr_opts do
12
14
 
13
15
  it 'creates a bounce' do
14
16
  @result = @mg_obj.post("#{@domain}/bounces",
15
- {:address => @email,
16
- :code => 550,
17
- :error => "Integration Test"})
17
+ { address: @email,
18
+ code: 550,
19
+ error: 'Integration Test' })
18
20
 
19
21
  @result.to_h!
20
- expect(@result.body["message"]).to eq("Address has been added to the bounces table")
21
- expect(@result.body["address"]).to eq(@email)
22
+ expect(@result.body['message']).to eq('Address has been added to the bounces table')
23
+ expect(@result.body['address']).to eq(@email)
22
24
  end
23
25
 
24
26
  it 'get a bounce.' do
25
27
  result = @mg_obj.get("#{@domain}/bounces/#{CGI.escape(@email)}")
26
28
 
27
29
  result.to_h!
28
- expect(result.body["code"]).to eq("550")
29
- expect(result.body["address"]).to eq(@email)
30
- expect(result.body["error"]).to eq("Integration Test")
30
+ expect(result.body['code']).to eq('550')
31
+ expect(result.body['address']).to eq(@email)
32
+ expect(result.body['error']).to eq('Integration Test')
31
33
  end
32
34
 
33
35
  it 'gets a list of bounces.' do
34
36
  result = @mg_obj.get("#{@domain}/bounces")
35
37
 
36
38
  result.to_h!
37
- expect(result.body["items"].length).to be > 0
39
+ expect(result.body['items'].length).to be > 0
38
40
  end
39
41
 
40
42
  it 'deletes a bounce' do
41
43
  @mg_obj.delete("#{@domain}/bounces/#{CGI.escape(@email)}")
42
44
  end
43
-
44
45
  end
@@ -1,57 +1,59 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
  require 'mailgun'
3
5
 
4
- vcr_opts = { :cassette_name => "campaigns" }
6
+ vcr_opts = { cassette_name: 'campaigns' }
5
7
 
6
8
  describe 'For the campaigns endpoint', vcr: vcr_opts do
7
9
  before(:all) do
8
10
  skip 'pending removal'
9
11
  @mg_obj = Mailgun::Client.new(APIKEY, APIHOST, APIVERSION, SSL)
10
12
  @domain = TESTDOMAIN
11
- @campaign_id = "integration_test_campaign"
13
+ @campaign_id = 'integration_test_campaign'
12
14
  end
13
15
 
14
16
  it 'creates a campaign' do
15
- result = @mg_obj.post("#{@domain}/campaigns", {:name => 'My Campaign',
16
- :id => @campaign_id})
17
+ result = @mg_obj.post("#{@domain}/campaigns", { name: 'My Campaign',
18
+ id: @campaign_id })
17
19
 
18
20
  result.to_h!
19
- expect(result.body["message"]).to eq("Campaign created")
20
- expect(result.body["campaign"]["id"]).to eq(@campaign_id)
21
- expect(result.body["campaign"]["name"]).to eq('My Campaign')
21
+ expect(result.body['message']).to eq('Campaign created')
22
+ expect(result.body['campaign']['id']).to eq(@campaign_id)
23
+ expect(result.body['campaign']['name']).to eq('My Campaign')
22
24
  end
23
25
 
24
26
  it 'get a campaign.' do
25
27
  result = @mg_obj.get("#{@domain}/campaigns/#{@campaign_id}")
26
28
 
27
29
  result.to_h!
28
- expect(result.body["id"]).to eq(@campaign_id)
29
- expect(result.body["name"]).to eq('My Campaign')
30
+ expect(result.body['id']).to eq(@campaign_id)
31
+ expect(result.body['name']).to eq('My Campaign')
30
32
  end
31
33
 
32
34
  it 'gets a list of all campaigns.' do
33
- result = @mg_obj.get("#{@domain}/campaigns", {:limit => 50})
35
+ result = @mg_obj.get("#{@domain}/campaigns", { limit: 50 })
34
36
 
35
37
  result.to_h!
36
- expect(result.body["total_count"]).to be > 0
38
+ expect(result.body['total_count']).to be > 0
37
39
  end
38
40
 
39
41
  it 'update a campaign.' do
40
- result = @mg_obj.put("#{@domain}/campaigns/#{@campaign_id}", {:name => 'My Updated Campaign',
41
- :id => @campaign_id})
42
+ result = @mg_obj.put("#{@domain}/campaigns/#{@campaign_id}", { name: 'My Updated Campaign',
43
+ id: @campaign_id })
42
44
 
43
45
  result.to_h!
44
- expect(result.body["message"]).to eq("Campaign updated")
45
- expect(result.body["campaign"]["id"]).to eq(@campaign_id)
46
- expect(result.body["campaign"]["name"]).to eq('My Updated Campaign')
46
+ expect(result.body['message']).to eq('Campaign updated')
47
+ expect(result.body['campaign']['id']).to eq(@campaign_id)
48
+ expect(result.body['campaign']['name']).to eq('My Updated Campaign')
47
49
  end
48
50
 
49
51
  it 'get campaign events.' do
50
- expect{@mg_obj.get("#{@domain}/campaigns/#{@campaign_id}/events", {:groupby => "clicked"})}.not_to raise_error
52
+ expect { @mg_obj.get("#{@domain}/campaigns/#{@campaign_id}/events", { groupby: 'clicked' }) }.not_to raise_error
51
53
  end
52
54
 
53
55
  it 'get campaign stats.' do
54
- expect{@mg_obj.get("#{@domain}/campaigns/#{@campaign_id}/stats", {:groupby => "domain"})}.not_to raise_error
56
+ expect { @mg_obj.get("#{@domain}/campaigns/#{@campaign_id}/stats", { groupby: 'domain' }) }.not_to raise_error
55
57
  end
56
58
 
57
59
  it 'removes a campaign' do
@@ -1,7 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
  require 'mailgun'
3
5
 
4
- vcr_opts = { :cassette_name => "complaints" }
6
+ vcr_opts = { cassette_name: 'complaints' }
5
7
 
6
8
  describe 'For the Complaints endpoint', order: :defined, vcr: vcr_opts do
7
9
  before(:all) do
@@ -11,25 +13,25 @@ describe 'For the Complaints endpoint', order: :defined, vcr: vcr_opts do
11
13
  end
12
14
 
13
15
  it 'creates a complaint' do
14
- @result = @mg_obj.post("#{@domain}/complaints", {:address => @email})
16
+ @result = @mg_obj.post("#{@domain}/complaints", { address: @email })
15
17
 
16
18
  @result.to_h!
17
- expect(@result.body["message"]).to eq("Address has been added to the complaints table")
18
- expect(@result.body["address"]).to eq(@email)
19
+ expect(@result.body['message']).to eq('Address has been added to the complaints table')
20
+ expect(@result.body['address']).to eq(@email)
19
21
  end
20
22
 
21
23
  it 'get a complaint.' do
22
24
  result = @mg_obj.get("#{@domain}/complaints/#{@email}")
23
25
 
24
26
  result.to_h!
25
- expect(result.body["address"]).to eq(@email)
27
+ expect(result.body['address']).to eq(@email)
26
28
  end
27
29
 
28
30
  it 'gets a list of complaints.' do
29
31
  result = @mg_obj.get("#{@domain}/complaints")
30
32
 
31
33
  result.to_h!
32
- expect(result.body["items"].length).to be > 0
34
+ expect(result.body['items'].length).to be > 0
33
35
  end
34
36
 
35
37
  it 'removes a complaint' do
@@ -1,7 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
  require 'mailgun'
3
5
 
4
- vcr_opts = { :cassette_name => "domains" }
6
+ vcr_opts = { cassette_name: 'domains' }
5
7
 
6
8
  describe 'For the domains endpoint', vcr: vcr_opts do
7
9
  let(:api_version) { APIVERSION }
@@ -71,7 +73,6 @@ describe 'For the domains endpoint', vcr: vcr_opts do
71
73
  end
72
74
  end
73
75
 
74
-
75
76
  context 'Domain::Keys methods' do
76
77
  describe '#list_domain_keys' do
77
78
  let(:api_version) { 'v1' }
@@ -123,7 +124,6 @@ describe 'For the domains endpoint', vcr: vcr_opts do
123
124
  let(:api_version) { 'v4' }
124
125
 
125
126
  it 'activates a domain key' do
126
-
127
127
  result = mg_obj.activate_domain_key(
128
128
  domain,
129
129
  'mailo1'
@@ -187,7 +187,7 @@ describe 'For the domains endpoint', vcr: vcr_opts do
187
187
  end
188
188
 
189
189
  context 'Domain::Tracking methods' do
190
- # TODO add missing:
190
+ # TODO: add missing:
191
191
  # get_domain_tracking_certificate
192
192
  # regenerate_domain_tracking_certificate
193
193
  # generate_domain_tracking_certificate
@@ -244,7 +244,7 @@ describe 'For the domains endpoint', vcr: vcr_opts do
244
244
  end
245
245
 
246
246
  context 'Domain::DKIM_Security methods' do
247
- # TODO add missing:
247
+ # TODO: add missing:
248
248
  # dkim_rotation
249
249
  # dkim_rotate
250
250
  end
@@ -261,7 +261,7 @@ describe 'For the domains endpoint', vcr: vcr_opts do
261
261
  }
262
262
  )
263
263
 
264
- expect(result['message']).to eq("Created 1 credentials pair(s)")
264
+ expect(result['message']).to eq('Created 1 credentials pair(s)')
265
265
  end
266
266
  end
267
267
 
@@ -1,16 +1,18 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  require 'mailgun'
4
6
  require 'mailgun/address'
5
7
 
6
- vcr_opts = { :cassette_name => "email_validation" }
8
+ vcr_opts = { cassette_name: 'email_validation' }
7
9
 
8
10
  describe 'For the email validation endpoint', order: :defined, vcr: vcr_opts do
9
11
  before(:all) do
10
12
  @mg_obj = Mailgun::Address.new
11
13
 
12
- @valid = ["Alice <alice@example.com>", "bob@example.com"]
13
- @invalid = ["example.org"]
14
+ @valid = ['Alice <alice@example.com>', 'bob@example.com']
15
+ @invalid = ['example.org']
14
16
 
15
17
  @all_addrs = @valid + @invalid
16
18
  end
@@ -19,54 +21,53 @@ describe 'For the email validation endpoint', order: :defined, vcr: vcr_opts do
19
21
  skip 'is parse method removed?'
20
22
  res = @mg_obj.parse(@all_addrs)
21
23
 
22
- expect(res["parsed"]).to eq(@valid)
23
- expect(res["unparsable"]).to eq(@invalid)
24
+ expect(res['parsed']).to eq(@valid)
25
+ expect(res['unparsable']).to eq(@invalid)
24
26
  end
25
27
 
26
28
  it 'validates alice@mailgun.net with info' do
27
- res = @mg_obj.validate("alice@mailgun.net")
29
+ res = @mg_obj.validate('alice@mailgun.net')
28
30
 
29
31
  expected = {
30
- "address" => "alice@mailgun.net",
31
- "did_you_mean" => nil,
32
- "is_disposable_address" => false,
33
- "is_role_address" => false,
34
- "is_valid" => true,
35
- "mailbox_verification" => "true",
36
- "reason" => nil,
37
- "parts" => {
38
- "display_name" => nil,
39
- "domain" => "mailgun.net",
40
- "local_part" => "alice",
41
- },
32
+ 'address' => 'alice@mailgun.net',
33
+ 'did_you_mean' => nil,
34
+ 'is_disposable_address' => false,
35
+ 'is_role_address' => false,
36
+ 'is_valid' => true,
37
+ 'mailbox_verification' => 'true',
38
+ 'reason' => nil,
39
+ 'parts' => {
40
+ 'display_name' => nil,
41
+ 'domain' => 'mailgun.net',
42
+ 'local_part' => 'alice'
43
+ }
42
44
  }
43
45
  expect(res).to eq(expected)
44
46
  end
45
47
 
46
48
  it 'performs mailbox validation for alice@mailgun.net' do
47
- res = @mg_obj.validate("alice@mailgun.net", true)
49
+ res = @mg_obj.validate('alice@mailgun.net', true)
48
50
 
49
- expect(res["mailbox_verification"]).to eq("true")
51
+ expect(res['mailbox_verification']).to eq('true')
50
52
  end
51
53
 
52
54
  it 'fails to validate example.org' do
53
- res = @mg_obj.validate("example.org")
55
+ res = @mg_obj.validate('example.org')
54
56
 
55
57
  expected = {
56
- "address" => "example.org",
57
- "did_you_mean" => nil,
58
- "is_disposable_address" => false,
59
- "is_role_address" => false,
60
- "is_valid" => false,
61
- "mailbox_verification" => "unknown",
62
- #"reason" => "Validation failed for 'example.org', reason: 'malformed address; missing @ sign'",
63
- "parts" => {
64
- "display_name" => nil,
65
- "domain" => nil,
66
- "local_part" => nil,
67
- },
58
+ 'address' => 'example.org',
59
+ 'did_you_mean' => nil,
60
+ 'is_disposable_address' => false,
61
+ 'is_role_address' => false,
62
+ 'is_valid' => false,
63
+ 'mailbox_verification' => 'unknown',
64
+ # "reason" => "Validation failed for 'example.org', reason: 'malformed address; missing @ sign'",
65
+ 'parts' => {
66
+ 'display_name' => nil,
67
+ 'domain' => nil,
68
+ 'local_part' => nil
69
+ }
68
70
  }
69
71
  expect(res).to eq(expected)
70
72
  end
71
-
72
73
  end
@@ -1,8 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
  require 'mailgun'
3
5
  require 'mailgun/events/events'
4
6
 
5
- vcr_opts = { :cassette_name => "events" }
7
+ vcr_opts = { cassette_name: 'events' }
6
8
 
7
9
  describe 'For the Events endpoint', vcr: vcr_opts do
8
10
  before(:all) do
@@ -12,12 +14,12 @@ describe 'For the Events endpoint', vcr: vcr_opts do
12
14
  end
13
15
 
14
16
  it 'can get an event.' do
15
- result = @mg_obj.get("#{@domain}/events", {:limit => 1})
17
+ result = @mg_obj.get("#{@domain}/events", { limit: 1 })
16
18
 
17
19
  result.to_h!
18
- expect(result.body["items"].length).to be_within(1).of(1)
19
- expect(result.body["paging"]).to include("next")
20
- expect(result.body["paging"]).to include("previous")
20
+ expect(result.body['items'].length).to be_within(1).of(1)
21
+ expect(result.body['paging']).to include('next')
22
+ expect(result.body['paging']).to include('previous')
21
23
  end
22
24
 
23
25
  it 'can iterate over all events with `each`' do
@@ -1,7 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
  require 'mailgun'
3
5
 
4
- vcr_opts = { :cassette_name => "list_members" }
6
+ vcr_opts = { cassette_name: 'list_members' }
5
7
 
6
8
  describe 'For the Mailing Lists Members endpoint', order: :defined, vcr: vcr_opts do
7
9
  before(:all) do
@@ -10,54 +12,53 @@ describe 'For the Mailing Lists Members endpoint', order: :defined, vcr: vcr_opt
10
12
  @ml_address = "integration_test_list@#{@domain}"
11
13
  @ml_member = "integration_test_member_member@#{@domain}"
12
14
  end
13
-
15
+
14
16
  it 'creates a list' do
15
- result = @mg_obj.post("lists", {:address => @ml_address,
16
- :name => 'Integration Test List',
17
- :description => 'This list should be deleted automatically.',
18
- :access_level => 'members'})
17
+ result = @mg_obj.post('lists', { address: @ml_address,
18
+ name: 'Integration Test List',
19
+ description: 'This list should be deleted automatically.',
20
+ access_level: 'members' })
19
21
  result.to_h!
20
- expect(result.body["message"]).to eq("Mailing list has been created")
21
- expect(result.body["list"]["address"]).to eq(@ml_address)
22
- expect(result.body["list"]["name"]).to eq('Integration Test List')
22
+ expect(result.body['message']).to eq('Mailing list has been created')
23
+ expect(result.body['list']['address']).to eq(@ml_address)
24
+ expect(result.body['list']['name']).to eq('Integration Test List')
23
25
  end
24
26
 
25
27
  it 'adds a list member' do
26
28
  result = @mg_obj.post("lists/#{@ml_address}/members",
27
- {:address => @ml_member,
28
- :name => 'Jane Doe',
29
- :subscribed => true,
30
- :upsert => 'no'})
29
+ { address: @ml_member,
30
+ name: 'Jane Doe',
31
+ subscribed: true,
32
+ upsert: 'no' })
31
33
 
32
34
  result.to_h!
33
- expect(result.body["message"]).to eq("Mailing list member has been created")
34
- expect(result.body["member"]["address"]).to eq(@ml_member)
35
- expect(result.body["member"]["name"]).to eq('Jane Doe')
35
+ expect(result.body['message']).to eq('Mailing list member has been created')
36
+ expect(result.body['member']['address']).to eq(@ml_member)
37
+ expect(result.body['member']['name']).to eq('Jane Doe')
36
38
  end
37
-
39
+
38
40
  it 'gets a list member.' do
39
41
  result = @mg_obj.get("lists/#{@ml_address}/members/#{@ml_member}")
40
42
 
41
43
  result.to_h!
42
- expect(result.body["member"]["address"]).to eq(@ml_member)
43
- expect(result.body["member"]["name"]).to eq('Jane Doe')
44
+ expect(result.body['member']['address']).to eq(@ml_member)
45
+ expect(result.body['member']['name']).to eq('Jane Doe')
44
46
  end
45
47
 
46
48
  it 'updates a list member.' do
47
49
  result = @mg_obj.put("lists/#{@ml_address}/members/#{@ml_member}",
48
- {:name => 'Jane Doe Update',
49
- :subscribed => false})
50
+ { name: 'Jane Doe Update',
51
+ subscribed: false })
50
52
 
51
53
  result.to_h!
52
- expect(result.body["message"]).to eq("Mailing list member has been updated")
53
- expect(result.body["member"]["address"]).to eq(@ml_member)
54
- expect(result.body["member"]["name"]).to eq('Jane Doe Update')
55
- expect(result.body["member"]["subscribed"]).to eq(false)
54
+ expect(result.body['message']).to eq('Mailing list member has been updated')
55
+ expect(result.body['member']['address']).to eq(@ml_member)
56
+ expect(result.body['member']['name']).to eq('Jane Doe Update')
57
+ expect(result.body['member']['subscribed']).to eq(false)
56
58
  end
57
59
 
58
60
  it 'removes a list member' do
59
61
  @mg_obj.delete("lists/#{@ml_address}/members/#{@ml_member}")
60
62
  @mg_obj.delete("lists/#{@ml_address}")
61
63
  end
62
-
63
64
  end
@@ -1,7 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
  require 'mailgun'
3
5
 
4
- vcr_opts = { :cassette_name => "mailing_list" }
6
+ vcr_opts = { cassette_name: 'mailing_list' }
5
7
 
6
8
  describe 'For the Mailing Lists endpoint', vcr: vcr_opts do
7
9
  before(:all) do
@@ -11,48 +13,47 @@ describe 'For the Mailing Lists endpoint', vcr: vcr_opts do
11
13
  end
12
14
 
13
15
  it 'creates a list' do
14
- result = @mg_obj.post("lists", {:address => @ml_address,
15
- :name => 'Integration Test List',
16
- :description => 'This list should be deleted automatically.',
17
- :access_level => 'members'})
16
+ result = @mg_obj.post('lists', { address: @ml_address,
17
+ name: 'Integration Test List',
18
+ description: 'This list should be deleted automatically.',
19
+ access_level: 'members' })
18
20
 
19
21
  result.to_h!
20
- expect(result.body["message"]).to eq("Mailing list has been created")
21
- expect(result.body["list"]["address"]).to eq(@ml_address)
22
- expect(result.body["list"]["name"]).to eq('Integration Test List')
22
+ expect(result.body['message']).to eq('Mailing list has been created')
23
+ expect(result.body['list']['address']).to eq(@ml_address)
24
+ expect(result.body['list']['name']).to eq('Integration Test List')
23
25
  end
24
26
 
25
27
  it 'gets a list.' do
26
28
  result = @mg_obj.get("lists/#{@ml_address}")
27
29
 
28
30
  result.to_h!
29
- expect(result.body["list"]["address"]).to eq(@ml_address)
30
- expect(result.body["list"]["name"]).to eq('Integration Test List')
31
+ expect(result.body['list']['address']).to eq(@ml_address)
32
+ expect(result.body['list']['name']).to eq('Integration Test List')
31
33
  end
32
34
 
33
35
  it 'gets a list of all lists.' do
34
- result = @mg_obj.get("lists", {:limit => 50})
36
+ result = @mg_obj.get('lists', { limit: 50 })
35
37
 
36
38
  result.to_h!
37
- expect(result.body["total_count"]).to be > 0
39
+ expect(result.body['total_count']).to be > 0
38
40
  end
39
41
 
40
42
  it 'updates a list.' do
41
43
  result = @mg_obj.put("lists/#{@ml_address}",
42
- {:address => @ml_address,
43
- :name => 'Integration Test List Update',
44
- :description => 'This list should be deleted automatically.',
45
- :access_level => 'readonly'})
44
+ { address: @ml_address,
45
+ name: 'Integration Test List Update',
46
+ description: 'This list should be deleted automatically.',
47
+ access_level: 'readonly' })
46
48
 
47
49
  result.to_h!
48
- expect(result.body["message"]).to eq("Mailing list has been updated")
49
- expect(result.body["list"]["address"]).to eq(@ml_address)
50
- expect(result.body["list"]["name"]).to eq('Integration Test List Update')
51
- expect(result.body["list"]["access_level"]).to eq('readonly')
50
+ expect(result.body['message']).to eq('Mailing list has been updated')
51
+ expect(result.body['list']['address']).to eq(@ml_address)
52
+ expect(result.body['list']['name']).to eq('Integration Test List Update')
53
+ expect(result.body['list']['access_level']).to eq('readonly')
52
54
  end
53
55
 
54
56
  it 'deletes a list' do
55
57
  @mg_obj.delete("lists/#{@ml_address}")
56
58
  end
57
-
58
59
  end