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.
Files changed (120) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +17 -1
  3. data/README.md +3 -1
  4. data/lib/mailgun/api_keys/api_keys.rb +2 -2
  5. data/lib/mailgun/client.rb +1 -1
  6. data/lib/mailgun/domains/domain_keys.rb +5 -5
  7. data/lib/mailgun/domains/domains.rb +12 -9
  8. data/lib/mailgun/events/events.rb +1 -1
  9. data/lib/mailgun/helpers/api_version_checker.rb +23 -12
  10. data/lib/mailgun/helpers/deprecation.rb +32 -0
  11. data/lib/mailgun/lists/mailing_lists.rb +250 -0
  12. data/lib/mailgun/messages/message_builder.rb +17 -7
  13. data/lib/mailgun/response.rb +1 -1
  14. data/lib/mailgun/routes/routes.rb +98 -0
  15. data/lib/mailgun/tags/analytics_tags.rb +2 -2
  16. data/lib/mailgun/tags/tags.rb +16 -8
  17. data/lib/mailgun/version.rb +1 -1
  18. data/lib/mailgun/webhooks/account_webhooks.rb +2 -2
  19. data/lib/mailgun/webhooks/webhooks.rb +17 -9
  20. data/lib/mailgun.rb +1 -0
  21. metadata +6 -326
  22. data/.github/workflows/ci.yml +0 -49
  23. data/.github_changelog_generator +0 -1
  24. data/.gitignore +0 -24
  25. data/.rubocop.yml +0 -68
  26. data/.ruby-env.yml.example +0 -13
  27. data/Gemfile +0 -9
  28. data/Rakefile +0 -32
  29. data/docs/AccountWebhooks.md +0 -55
  30. data/docs/AnalyticsTags.md +0 -63
  31. data/docs/ApiKeys.md +0 -65
  32. data/docs/DomainKeys.md +0 -49
  33. data/docs/Domains.md +0 -82
  34. data/docs/EmailValidation.md +0 -34
  35. data/docs/Events.md +0 -48
  36. data/docs/Logs.md +0 -67
  37. data/docs/MessageBuilder.md +0 -120
  38. data/docs/Metrics.md +0 -108
  39. data/docs/OptInHandler.md +0 -103
  40. data/docs/Snippets.md +0 -519
  41. data/docs/Subaccounts.md +0 -68
  42. data/docs/Suppressions.md +0 -92
  43. data/docs/Templates.md +0 -92
  44. data/docs/Webhooks.md +0 -65
  45. data/docs/railgun/EmailValidation.md +0 -34
  46. data/docs/railgun/Overview.md +0 -11
  47. data/docs/railgun/Parameters.md +0 -83
  48. data/mailgun.gemspec +0 -47
  49. data/spec/integration/account_webhooks_spec.rb +0 -57
  50. data/spec/integration/analytics_tags_spec.rb +0 -54
  51. data/spec/integration/api_keys_spec.rb +0 -50
  52. data/spec/integration/bounces_spec.rb +0 -45
  53. data/spec/integration/campaign_spec.rb +0 -62
  54. data/spec/integration/complaints_spec.rb +0 -40
  55. data/spec/integration/domain_keys_spec.rb +0 -124
  56. data/spec/integration/domains_spec.rb +0 -201
  57. data/spec/integration/email_validation_spec.rb +0 -73
  58. data/spec/integration/events_spec.rb +0 -28
  59. data/spec/integration/list_members_spec.rb +0 -64
  60. data/spec/integration/list_spec.rb +0 -59
  61. data/spec/integration/logs_spec.rb +0 -105
  62. data/spec/integration/mailer_spec.rb +0 -65
  63. data/spec/integration/mailgun_spec.rb +0 -198
  64. data/spec/integration/messages/sample_data/mime.txt +0 -38
  65. data/spec/integration/metrics_spec.rb +0 -224
  66. data/spec/integration/routes_spec.rb +0 -91
  67. data/spec/integration/stats_spec.rb +0 -17
  68. data/spec/integration/subaccounts_spec.rb +0 -57
  69. data/spec/integration/suppressions_spec.rb +0 -320
  70. data/spec/integration/templates_spec.rb +0 -137
  71. data/spec/integration/unsubscribes_spec.rb +0 -44
  72. data/spec/integration/webhook_spec.rb +0 -79
  73. data/spec/spec_helper.rb +0 -53
  74. data/spec/unit/client_spec.rb +0 -448
  75. data/spec/unit/connection/test_client.rb +0 -169
  76. data/spec/unit/events/events_spec.rb +0 -88
  77. data/spec/unit/exceptions/exceptions_spec.rb +0 -31
  78. data/spec/unit/helpers/api_version_checker_spec.rb +0 -206
  79. data/spec/unit/lists/opt_in_handler_spec.rb +0 -28
  80. data/spec/unit/mailgun_spec.rb +0 -171
  81. data/spec/unit/messages/batch_message_spec.rb +0 -148
  82. data/spec/unit/messages/message_builder_spec.rb +0 -745
  83. data/spec/unit/messages/sample_data/mailgun_icon.png +0 -0
  84. data/spec/unit/messages/sample_data/mime.txt +0 -38
  85. data/spec/unit/messages/sample_data/rackspace_logo.jpg +0 -0
  86. data/spec/unit/messages/sample_data/unknown.type +0 -0
  87. data/spec/unit/railgun/content_type_spec.rb +0 -89
  88. data/spec/unit/railgun/mailer_spec.rb +0 -391
  89. data/spec/unit/response_spec.rb +0 -225
  90. data/spec/unit/webhooks_spec.rb +0 -121
  91. data/vcr_cassettes/For_the_suppressions_handling_class/creates_a_single_bounce.yml +0 -55
  92. data/vcr_cassettes/account_webhooks.yml +0 -269
  93. data/vcr_cassettes/analytics_tags.yml +0 -187
  94. data/vcr_cassettes/api_keys.yml +0 -212
  95. data/vcr_cassettes/bounces.yml +0 -136
  96. data/vcr_cassettes/complaints.yml +0 -315
  97. data/vcr_cassettes/domains.todo.yml +0 -42
  98. data/vcr_cassettes/domains.yml +0 -1243
  99. data/vcr_cassettes/email_validation.yml +0 -152
  100. data/vcr_cassettes/events.yml +0 -69
  101. data/vcr_cassettes/exceptions-invalid-api-key.yml +0 -52
  102. data/vcr_cassettes/exceptions-invalid-data.yml +0 -52
  103. data/vcr_cassettes/exceptions-not-allowed.yml +0 -54
  104. data/vcr_cassettes/exceptions.yml +0 -92
  105. data/vcr_cassettes/list_members.yml +0 -328
  106. data/vcr_cassettes/logs.yml +0 -53
  107. data/vcr_cassettes/mailer_invalid_domain.yml +0 -109
  108. data/vcr_cassettes/mailing_list.todo.yml +0 -43
  109. data/vcr_cassettes/mailing_list.yml +0 -682
  110. data/vcr_cassettes/message_deliver.yml +0 -149
  111. data/vcr_cassettes/metrics.yml +0 -116
  112. data/vcr_cassettes/routes.yml +0 -359
  113. data/vcr_cassettes/send_message.yml +0 -158
  114. data/vcr_cassettes/stats.yml +0 -48
  115. data/vcr_cassettes/subaccounts.yml +0 -270
  116. data/vcr_cassettes/suppressions.yml +0 -1392
  117. data/vcr_cassettes/templates.yml +0 -1065
  118. data/vcr_cassettes/unsubscribes.yml +0 -401
  119. data/vcr_cassettes/webhooks.yml +0 -246
  120. data/vcr_cassettes/webhooks_v4.yml +0 -275
@@ -1,124 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
- require 'mailgun'
5
-
6
- vcr_opts = { cassette_name: 'domains' }
7
-
8
- describe 'DomainKeys', 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::DomainKeys.new(mg_client) }
12
- let(:domain) { 'integration-test.domain.invalid' }
13
-
14
- describe '#list_domain_keys' do
15
- let(:api_version) { 'v1' }
16
-
17
- it 'lists all domain keys' do
18
- result = mg_obj.list_domain_keys(
19
- {
20
- signing_domain: domain
21
- }
22
- )
23
-
24
- expect(result).to include('items')
25
- expect(result['items'].first['selector']).to eq('k1')
26
- end
27
- end
28
-
29
- describe '#create_domain_key' do
30
- let(:api_version) { 'v1' }
31
-
32
- it 'creates a domain key' do
33
- result = mg_obj.create_domain_key(
34
- {
35
- signing_domain: domain,
36
- selector: 'test'
37
- }
38
- )
39
-
40
- expect(result['signing_domain']).to eq(domain)
41
- expect(result['selector']).to eq('test')
42
- end
43
- end
44
-
45
- describe '#delete_domain_key' do
46
- let(:api_version) { 'v1' }
47
-
48
- it 'deletes a domain key' do
49
- result = mg_obj.delete_domain_key(
50
- {
51
- signing_domain: domain,
52
- selector: 'test'
53
- }
54
- )
55
-
56
- expect(result['message']).to eq('success')
57
- end
58
- end
59
-
60
- describe '#activate_domain_key' do
61
- let(:api_version) { 'v4' }
62
-
63
- it 'activates a domain key' do
64
- result = mg_obj.activate_domain_key(
65
- domain,
66
- 'mailo1'
67
- )
68
-
69
- expect(result['message']).to eq('domain key activated')
70
- end
71
- end
72
-
73
- describe '#get_domain_keys' do
74
- let(:api_version) { 'v4' }
75
-
76
- it 'lists the domain keys for a specified signing domain' do
77
- result = mg_obj.get_domain_keys(
78
- domain
79
- )
80
-
81
- expect(result).to include('items')
82
- expect(result['items'].first['selector']).to eq('mailo1')
83
- end
84
- end
85
-
86
- describe '#deactivate_domain_key' do
87
- let(:api_version) { 'v4' }
88
-
89
- it 'deactivates a domain key' do
90
- result = mg_obj.deactivate_domain_key(
91
- domain,
92
- 'tetetet'
93
- )
94
-
95
- expect(result['message']).to eq('domain key deactivated')
96
- end
97
- end
98
-
99
- describe '#update_domain_dkim_authority' do
100
- it 'updates the DKIM authority for a domain' do
101
- result = mg_obj.update_domain_dkim_authority(
102
- domain,
103
- {
104
- self: true
105
- }
106
- )
107
-
108
- expect(result['message']).to eq('Domain DKIM authority has not been changed')
109
- end
110
- end
111
-
112
- describe '#update_domain_dkim_selector' do
113
- it 'updates the DKIM selector for a domain' do
114
- result = mg_obj.update_domain_dkim_selector(
115
- domain,
116
- {
117
- dkim_selector: 'mailo1'
118
- }
119
- )
120
-
121
- expect(result['message']).to eq('DKIM selector changed')
122
- end
123
- end
124
- end
@@ -1,201 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
- require 'mailgun'
5
-
6
- vcr_opts = { cassette_name: 'domains' }
7
-
8
- describe 'For the domains endpoint', 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::Domains.new(mg_client) }
12
- let(:domain) { 'integration-test.domain.invalid' }
13
-
14
- context 'Core Domains methods' do
15
- describe '#list' do
16
- let(:api_version) { 'v4' }
17
-
18
- it 'returns a list of domains' do
19
- response = mg_obj.list
20
-
21
- expect(response.size).to be > 0
22
- end
23
- end
24
-
25
- describe '#create' do
26
- let(:api_version) { 'v4' }
27
-
28
- it 'creates a domain' do
29
- response = mg_obj.create(domain, { spam_action: 'tag' })
30
-
31
- expect(response['domain']['name']).to eq(domain)
32
- expect(response['domain']['spam_action']).to eq('tag')
33
- end
34
- end
35
-
36
- describe '#get' do
37
- let(:api_version) { 'v4' }
38
-
39
- it 'returns the domain' do
40
- response = mg_obj.get(domain)
41
-
42
- expect(response).to include('domain')
43
- expect(response['domain']['name']).to eq(domain)
44
- end
45
- end
46
-
47
- describe '#update' do
48
- let(:api_version) { 'v4' }
49
-
50
- it 'updates the domain' do
51
- response = mg_obj.update(domain, { spam_action: 'block', web_scheme: 'https', wildcard: true })
52
-
53
- expect(response['domain']['spam_action']).to eq('block')
54
- expect(response['domain']['web_scheme']).to eq('https')
55
- expect(response['domain']['wildcard']).to be(true)
56
- end
57
- end
58
-
59
- describe '#verify' do
60
- let(:api_version) { 'v4' }
61
-
62
- it 'verifies the domain' do
63
- response = mg_obj.verify(domain)
64
-
65
- expect(response['message']).to eq('Domain DNS records have been updated')
66
- end
67
- end
68
-
69
- context 'delete a domain' do
70
- subject(:response) { mg_obj.remove(domain) }
71
-
72
- it { is_expected.to be_falsey }
73
- end
74
- end
75
-
76
- context 'Domain::Tracking methods' do
77
- # TODO: add missing:
78
- # get_domain_tracking_certificate
79
- # regenerate_domain_tracking_certificate
80
- # generate_domain_tracking_certificate
81
-
82
- describe '#get_domain_tracking_settings' do
83
- it 'returns tracking settings for the defined domain' do
84
- result = mg_obj.get_domain_tracking_settings(
85
- domain
86
- )
87
-
88
- expect(result).to include('tracking')
89
- expect(result['tracking']['click']['active']).to be(false)
90
- end
91
- end
92
-
93
- describe '#update_domain_tracking_click_settings' do
94
- it 'updates the specified tracking click settings' do
95
- result = mg_obj.update_domain_tracking_click_settings(
96
- domain,
97
- {
98
- active: false
99
- }
100
- )
101
-
102
- expect(result['click']['active']).to be(false)
103
- end
104
- end
105
-
106
- describe '#update_domain_tracking_open_settings' do
107
- it 'updates the specified tracking open settings' do
108
- result = mg_obj.update_domain_tracking_open_settings(
109
- domain,
110
- {
111
- active: false
112
- }
113
- )
114
-
115
- expect(result['open']['active']).to be(false)
116
- end
117
- end
118
-
119
- describe '#update_domain_tracking_unsubscribe_settings' do
120
- it 'updates the specified tracking unsubscribe settings' do
121
- result = mg_obj.update_domain_tracking_unsubscribe_settings(
122
- domain,
123
- {
124
- active: false
125
- }
126
- )
127
-
128
- expect(result['unsubscribe']['active']).to be(false)
129
- end
130
- end
131
- end
132
-
133
- context 'Credentials methods' do
134
- # TODO: to be moved to the dedicated module
135
-
136
- describe '#create_smtp_credentials' do
137
- it 'creates smtp credentials for domain' do
138
- result = mg_obj.create_smtp_credentials(
139
- domain,
140
- {
141
- login: 'test_login'
142
- }
143
- )
144
-
145
- expect(result['message']).to eq('Created 1 credentials pair(s)')
146
- end
147
- end
148
-
149
- describe '#update_smtp_credentials' do
150
- it 'updates smtp credentials for domain' do
151
- result = mg_obj.update_smtp_credentials(
152
- domain,
153
- 'test_login',
154
- {
155
- spec: 'abc'
156
- }
157
- )
158
-
159
- expect(result['message']).to eq('Password changed')
160
- end
161
- end
162
-
163
- describe '#delete_smtp_credentials' do
164
- it 'deletes smtp credentials for domain' do
165
- result = mg_obj.delete_smtp_credentials(
166
- domain,
167
- 'test_login'
168
- )
169
-
170
- expect(result['message']).to eq('Credentials have been deleted')
171
- end
172
- end
173
- end
174
-
175
- context 'Reporting::Stat methods' do
176
- # TODO: to be moved to the dedicated module
177
-
178
- describe '#get_domain_stats' do
179
- it 'returns total stats for a given domain' do
180
- result = mg_obj.get_domain_stats(
181
- domain,
182
- {
183
- event: 'clicked'
184
- }
185
- )
186
-
187
- expect(result).to include('stats')
188
- end
189
- end
190
- end
191
-
192
- def create_mg_object(version)
193
- mg_client = Mailgun::Client.new(APIKEY, APIHOST, version, SSL)
194
- Mailgun::Domains.new(mg_client)
195
- end
196
-
197
- def create_domain
198
- mg_obj = create_mg_object('v4')
199
- mg_obj.add_domain(domain)
200
- end
201
- end
@@ -1,73 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
-
5
- require 'mailgun'
6
- require 'mailgun/address'
7
-
8
- vcr_opts = { cassette_name: 'email_validation' }
9
-
10
- describe 'For the email validation endpoint', order: :defined, vcr: vcr_opts do
11
- before(:all) do
12
- @mg_obj = Mailgun::Address.new
13
-
14
- @valid = ['Alice <alice@example.com>', 'bob@example.com']
15
- @invalid = ['example.org']
16
-
17
- @all_addrs = @valid + @invalid
18
- end
19
-
20
- it 'returns parsed and unparsable lists' do
21
- skip 'is parse method removed?'
22
- res = @mg_obj.parse(@all_addrs)
23
-
24
- expect(res['parsed']).to eq(@valid)
25
- expect(res['unparsable']).to eq(@invalid)
26
- end
27
-
28
- it 'validates alice@mailgun.net with info' do
29
- res = @mg_obj.validate('alice@mailgun.net')
30
-
31
- expected = {
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
- }
44
- }
45
- expect(res).to eq(expected)
46
- end
47
-
48
- it 'performs mailbox validation for alice@mailgun.net' do
49
- res = @mg_obj.validate('alice@mailgun.net', true)
50
-
51
- expect(res['mailbox_verification']).to eq('true')
52
- end
53
-
54
- it 'fails to validate example.org' do
55
- res = @mg_obj.validate('example.org')
56
-
57
- expected = {
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
- }
70
- }
71
- expect(res).to eq(expected)
72
- end
73
- end
@@ -1,28 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
- require 'mailgun'
5
- require 'mailgun/events/events'
6
-
7
- vcr_opts = { cassette_name: 'events' }
8
-
9
- describe 'For the Events endpoint', vcr: vcr_opts do
10
- before(:all) do
11
- @mg_obj = Mailgun::Client.new(APIKEY, APIHOST, APIVERSION, SSL)
12
- @domain = TESTDOMAIN
13
- @events = Mailgun::Events.new(@mg_obj, @domain)
14
- end
15
-
16
- it 'can get an event.' do
17
- result = @mg_obj.get("#{@domain}/events", { limit: 1 })
18
-
19
- result.to_h!
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')
23
- end
24
-
25
- it 'can iterate over all events with `each`' do
26
- expect(@events).to all(have_key('event'))
27
- end
28
- end
@@ -1,64 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
- require 'mailgun'
5
-
6
- vcr_opts = { cassette_name: 'list_members' }
7
-
8
- describe 'For the Mailing Lists Members endpoint', order: :defined, vcr: vcr_opts do
9
- before(:all) do
10
- @mg_obj = Mailgun::Client.new(APIKEY, APIHOST, APIVERSION, SSL)
11
- @domain = TESTDOMAIN
12
- @ml_address = "integration_test_list@#{@domain}"
13
- @ml_member = "integration_test_member_member@#{@domain}"
14
- end
15
-
16
- it 'creates a list' do
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' })
21
- result.to_h!
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')
25
- end
26
-
27
- it 'adds a list member' do
28
- result = @mg_obj.post("lists/#{@ml_address}/members",
29
- { address: @ml_member,
30
- name: 'Jane Doe',
31
- subscribed: true,
32
- upsert: 'no' })
33
-
34
- result.to_h!
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')
38
- end
39
-
40
- it 'gets a list member.' do
41
- result = @mg_obj.get("lists/#{@ml_address}/members/#{@ml_member}")
42
-
43
- result.to_h!
44
- expect(result.body['member']['address']).to eq(@ml_member)
45
- expect(result.body['member']['name']).to eq('Jane Doe')
46
- end
47
-
48
- it 'updates a list member.' do
49
- result = @mg_obj.put("lists/#{@ml_address}/members/#{@ml_member}",
50
- { name: 'Jane Doe Update',
51
- subscribed: false })
52
-
53
- result.to_h!
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 be(false)
58
- end
59
-
60
- it 'removes a list member' do
61
- @mg_obj.delete("lists/#{@ml_address}/members/#{@ml_member}")
62
- @mg_obj.delete("lists/#{@ml_address}")
63
- end
64
- end
@@ -1,59 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
- require 'mailgun'
5
-
6
- vcr_opts = { cassette_name: 'mailing_list' }
7
-
8
- describe 'For the Mailing Lists endpoint', vcr: vcr_opts do
9
- before(:all) do
10
- @mg_obj = Mailgun::Client.new(APIKEY, APIHOST, APIVERSION, SSL)
11
- @domain = TESTDOMAIN || 'DOMAIN.TEST'
12
- @ml_address = "integration_test_list@#{@domain}"
13
- end
14
-
15
- it 'creates a list' do
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' })
20
-
21
- result.to_h!
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')
25
- end
26
-
27
- it 'gets a list.' do
28
- result = @mg_obj.get("lists/#{@ml_address}")
29
-
30
- result.to_h!
31
- expect(result.body['list']['address']).to eq(@ml_address)
32
- expect(result.body['list']['name']).to eq('Integration Test List')
33
- end
34
-
35
- it 'gets a list of all lists.' do
36
- result = @mg_obj.get('lists', { limit: 50 })
37
-
38
- result.to_h!
39
- expect(result.body['total_count']).to be > 0
40
- end
41
-
42
- it 'updates a list.' do
43
- result = @mg_obj.put("lists/#{@ml_address}",
44
- { address: @ml_address,
45
- name: 'Integration Test List Update',
46
- description: 'This list should be deleted automatically.',
47
- access_level: 'readonly' })
48
-
49
- result.to_h!
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')
54
- end
55
-
56
- it 'deletes a list' do
57
- @mg_obj.delete("lists/#{@ml_address}")
58
- end
59
- end
@@ -1,105 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
- require 'mailgun'
5
-
6
- vcr_opts = { cassette_name: 'logs' }
7
-
8
- describe Mailgun::Logs, vcr: vcr_opts do
9
- let(:logs) { described_class.new(Mailgun::Client.new(APIKEY, APIHOST, 'v1')) }
10
-
11
- describe '#account_logs' do
12
- let(:options) do
13
- {
14
- start: 'Wed, 25 Jun 2025 00:00:00 -0000',
15
- end: 'Wed, 25 Jun 2025 23:00:00 -0000',
16
- filter: {
17
- AND: [
18
- {
19
- attribute: 'domain',
20
- comparator: '!=',
21
- values: [
22
- {
23
- label: 'example.com',
24
- value: 'example.com'
25
- }
26
- ]
27
- }
28
- ]
29
- },
30
- include_subaccounts: true,
31
- pagination: {
32
- sort: 'timestamp:asc',
33
- token: '123',
34
- limit: 50
35
- }
36
- }
37
- end
38
-
39
- it 'responds with account logs' do
40
- expect(logs.account_logs(options)).to eq(
41
- {
42
- 'start' => 'Wed, 25 Jun 2025 00:00:00 -0000',
43
- 'end' => 'Wed, 25 Jun 2025 23:00:00 -0000',
44
- 'items' => [
45
- {
46
- 'id' => '123',
47
- 'event' => 'accepted',
48
- '@timestamp' => '2025-06-25T17:19:51.166Z',
49
- 'account' => {
50
- 'id' => '123'
51
- },
52
- 'method' => 'HTTP',
53
- 'originating-ip' => '123.123.12.123',
54
- 'api-key-id' => 'xxx',
55
- 'domain' => {
56
- 'name' => 'example.mailgun.org'
57
- },
58
- 'recipient' => 'alex@example.com',
59
- 'recipient-domain' => 'example.com',
60
- 'envelope' => {
61
- 'sender' => 'example.mailgun.org',
62
- 'transport' => 'smtp',
63
- 'targets' => 'alex@example.com'
64
- },
65
- 'storage' => {
66
- 'region' => 'us-east4',
67
- 'env' => 'production',
68
- 'key' => 'xxx',
69
- 'url' => ['https://storage.api.mailgun.net/v3/domains/example.mailgun.org/messages/123']
70
- },
71
- 'log-level' => 'info',
72
- 'user-variables' => '{}',
73
- 'message' => {
74
- 'headers' => {
75
- 'to' => 'alex@example.com',
76
- 'message-id' => '123@example.mailgun.org',
77
- 'from' => 'bob@sending_domain.com+4',
78
- 'subject' => 'The Ruby SDK is awesome!'
79
- },
80
- 'attachments' => [
81
- {
82
- 'filename' => 'image.jpg',
83
- 'content-type' => 'image/jpeg',
84
- 'size' => 16_712
85
- }
86
- ],
87
- 'size' => 23_476
88
- },
89
- 'flags' => {
90
- 'is-authenticated' => true,
91
- 'is-system-test' => false,
92
- 'is-routed' => false,
93
- 'is-test-mode' => false,
94
- 'is-delayed-bounce' => false,
95
- 'is-callback' => false
96
- }
97
- }
98
- ],
99
- 'pagination' => {},
100
- 'aggregates' => {}
101
- }
102
- )
103
- end
104
- end
105
- end