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.
- checksums.yaml +4 -4
- data/Gemfile +3 -1
- data/README.md +1 -1
- data/Rakefile +5 -3
- data/docs/AnalyticsTags.md +63 -0
- data/lib/mailgun/address.rb +5 -5
- data/lib/mailgun/chains.rb +2 -3
- data/lib/mailgun/client.rb +47 -51
- data/lib/mailgun/domains/domains.rb +7 -8
- data/lib/mailgun/events/events.rb +4 -3
- data/lib/mailgun/exceptions/exceptions.rb +12 -15
- data/lib/mailgun/helpers/api_version_checker.rb +6 -1
- data/lib/mailgun/lists/opt_in_handler.rb +4 -6
- data/lib/mailgun/logs/logs.rb +4 -2
- data/lib/mailgun/messages/batch_message.rb +8 -9
- data/lib/mailgun/messages/message_builder.rb +36 -24
- data/lib/mailgun/metrics/metrics.rb +6 -4
- data/lib/mailgun/response.rb +11 -9
- data/lib/mailgun/subaccounts/subaccounts.rb +13 -8
- data/lib/mailgun/suppressions.rb +36 -43
- data/lib/mailgun/tags/analytics_tags.rb +33 -2
- data/lib/mailgun/tags/tags.rb +25 -17
- data/lib/mailgun/templates/templates.rb +40 -29
- data/lib/mailgun/version.rb +3 -1
- data/lib/mailgun/webhooks/webhooks.rb +22 -19
- data/lib/mailgun-ruby.rb +2 -0
- data/lib/mailgun.rb +4 -4
- data/lib/railgun/attachment.rb +9 -14
- data/lib/railgun/errors.rb +2 -3
- data/lib/railgun/mailer.rb +35 -39
- data/lib/railgun/railtie.rb +2 -0
- data/lib/railgun.rb +2 -0
- data/mailgun.gemspec +12 -11
- data/spec/integration/analytics_tags_spec.rb +54 -0
- data/spec/integration/bounces_spec.rb +12 -11
- data/spec/integration/campaign_spec.rb +20 -18
- data/spec/integration/complaints_spec.rb +8 -6
- data/spec/integration/domains_spec.rb +6 -6
- data/spec/integration/email_validation_spec.rb +35 -34
- data/spec/integration/events_spec.rb +7 -5
- data/spec/integration/list_members_spec.rb +27 -26
- data/spec/integration/list_spec.rb +22 -21
- data/spec/integration/logs_spec.rb +48 -46
- data/spec/integration/mailer_spec.rb +7 -3
- data/spec/integration/mailgun_spec.rb +82 -90
- data/spec/integration/metrics_spec.rb +130 -130
- data/spec/integration/routes_spec.rb +41 -40
- data/spec/integration/stats_spec.rb +4 -2
- data/spec/integration/subaccounts_spec.rb +9 -10
- data/spec/integration/suppressions_spec.rb +21 -20
- data/spec/integration/templates_spec.rb +14 -12
- data/spec/integration/unsubscribes_spec.rb +8 -6
- data/spec/integration/webhook_spec.rb +13 -12
- data/spec/spec_helper.rb +8 -8
- data/spec/unit/connection/test_client.rb +61 -55
- data/spec/unit/events/events_spec.rb +25 -22
- data/spec/unit/exceptions/exceptions_spec.rb +8 -7
- data/spec/unit/lists/opt_in_handler_spec.rb +8 -6
- data/spec/unit/mailgun_spec.rb +64 -63
- data/spec/unit/messages/batch_message_spec.rb +15 -15
- data/spec/unit/messages/message_builder_spec.rb +98 -94
- data/spec/unit/railgun/content_type_spec.rb +24 -23
- data/spec/unit/railgun/mailer_spec.rb +58 -58
- data/vcr_cassettes/analytics_tags.yml +187 -0
- metadata +49 -33
- data/.rubocop.yml +0 -8
- data/.rubocop_todo.yml +0 -22
data/spec/unit/mailgun_spec.rb
CHANGED
|
@@ -1,26 +1,28 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require 'spec_helper'
|
|
2
4
|
|
|
3
5
|
describe 'Mailgun instantiation' do
|
|
4
6
|
it 'instantiates an HttpClient object' do
|
|
5
|
-
expect {@mg_obj = Mailgun::UnitClient.new(
|
|
7
|
+
expect { @mg_obj = Mailgun::UnitClient.new('messages') }.not_to raise_error
|
|
6
8
|
end
|
|
7
9
|
end
|
|
8
10
|
|
|
9
11
|
describe 'The method send_message()' do
|
|
10
12
|
before(:each) do
|
|
11
|
-
@mg_obj = Mailgun::UnitClient.new(
|
|
12
|
-
@domain =
|
|
13
|
-
@list_address =
|
|
14
|
-
@member_address =
|
|
13
|
+
@mg_obj = Mailgun::UnitClient.new('messages')
|
|
14
|
+
@domain = 'test.com'
|
|
15
|
+
@list_address = 'mylist@test.com'
|
|
16
|
+
@member_address = 'subscribee@test.com'
|
|
15
17
|
end
|
|
16
18
|
|
|
17
19
|
it 'accepts only specific data types' do
|
|
18
|
-
@mb_obj = Mailgun::MessageBuilder.new
|
|
20
|
+
@mb_obj = Mailgun::MessageBuilder.new
|
|
19
21
|
@mh_obj = {}
|
|
20
22
|
|
|
21
|
-
expect {@mg_obj.send_message(
|
|
22
|
-
expect {@mg_obj.send_message(
|
|
23
|
-
expect {@mg_obj.send_message(
|
|
23
|
+
expect { @mg_obj.send_message('test.com', 'incorrect data') }.to raise_error Mailgun::ParameterError
|
|
24
|
+
expect { @mg_obj.send_message('test.com', @mb_obj) }.not_to raise_error
|
|
25
|
+
expect { @mg_obj.send_message('test.com', @mh_obj) }.not_to raise_error
|
|
24
26
|
end
|
|
25
27
|
|
|
26
28
|
it 'sends a message' do
|
|
@@ -28,12 +30,12 @@ describe 'The method send_message()' do
|
|
|
28
30
|
'to' => 'bob@example.com',
|
|
29
31
|
'subject' => 'Test',
|
|
30
32
|
'text' => 'Test Data' }
|
|
31
|
-
result = @mg_obj.send_message(
|
|
33
|
+
result = @mg_obj.send_message('testdomain.com', data)
|
|
32
34
|
|
|
33
35
|
result.to_h!
|
|
34
36
|
|
|
35
|
-
expect(result.body).to include(
|
|
36
|
-
expect(result.body).to include(
|
|
37
|
+
expect(result.body).to include('message')
|
|
38
|
+
expect(result.body).to include('id')
|
|
37
39
|
end
|
|
38
40
|
|
|
39
41
|
it 'opens the message MIME and sends the MIME message.' do
|
|
@@ -42,119 +44,118 @@ describe 'The method send_message()' do
|
|
|
42
44
|
'message' => 'Sample Data/mime.txt',
|
|
43
45
|
'from' => 'joe@test.com'
|
|
44
46
|
}
|
|
45
|
-
result = @mg_obj.send_message(
|
|
47
|
+
result = @mg_obj.send_message('testdomain.com', data)
|
|
46
48
|
|
|
47
49
|
result.to_h!
|
|
48
50
|
|
|
49
|
-
expect(result.body).to include(
|
|
50
|
-
expect(result.body).to include(
|
|
51
|
+
expect(result.body).to include('message')
|
|
52
|
+
expect(result.body).to include('id')
|
|
51
53
|
end
|
|
52
54
|
|
|
53
55
|
context 'when domain is missing' do
|
|
54
56
|
it 'shows failure message' do
|
|
55
|
-
expect(@mg_obj).to receive(:
|
|
57
|
+
expect(@mg_obj).to receive(:raise)
|
|
56
58
|
@mg_obj.send_message(nil, {})
|
|
57
59
|
end
|
|
58
60
|
end
|
|
59
61
|
|
|
60
62
|
context 'when to is missing' do
|
|
61
63
|
it 'shows failure message' do
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
64
|
+
data = {
|
|
65
|
+
'to' => '',
|
|
66
|
+
'message' => 'Sample Data/mime.txt',
|
|
67
|
+
'from' => 'joe@test.com'
|
|
68
|
+
}
|
|
69
|
+
expect(@mg_obj).to receive(:raise)
|
|
70
|
+
@mg_obj.send_message('testdomain.com', data)
|
|
69
71
|
end
|
|
70
72
|
end
|
|
71
73
|
end
|
|
72
74
|
|
|
73
75
|
describe 'The method post()' do
|
|
74
76
|
before(:each) do
|
|
75
|
-
@mg_obj = Mailgun::UnitClient.new(
|
|
76
|
-
@domain =
|
|
77
|
+
@mg_obj = Mailgun::UnitClient.new('messages')
|
|
78
|
+
@domain = 'test.com'
|
|
77
79
|
end
|
|
78
80
|
it 'in this case, sends a simple message.' do
|
|
79
|
-
data = {'from' => 'joe@test.com',
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
81
|
+
data = { 'from' => 'joe@test.com',
|
|
82
|
+
'to' => 'bob@example.com',
|
|
83
|
+
'subject' => 'Test',
|
|
84
|
+
'text' => 'Test Data' }
|
|
83
85
|
result = @mg_obj.post("#{@domain}/messages", data)
|
|
84
86
|
|
|
85
87
|
result.to_h!
|
|
86
88
|
|
|
87
|
-
expect(result.body).to include(
|
|
88
|
-
expect(result.body).to include(
|
|
89
|
+
expect(result.body).to include('message')
|
|
90
|
+
expect(result.body).to include('id')
|
|
89
91
|
end
|
|
90
92
|
|
|
91
93
|
context 'when Unknown API error is raised' do
|
|
92
94
|
before do
|
|
93
|
-
allow(Mailgun::Response).to receive(:new).and_raise(StandardError,
|
|
95
|
+
allow(Mailgun::Response).to receive(:new).and_raise(StandardError, 'message')
|
|
94
96
|
allow(JSON).to receive(:parse).and_raise('Unknown')
|
|
95
97
|
end
|
|
96
98
|
|
|
97
99
|
it 'adds Unknown API error to message' do
|
|
98
|
-
data = {'from' => 'joe@test.com',
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
100
|
+
data = { 'from' => 'joe@test.com',
|
|
101
|
+
'to' => 'bob@example.com',
|
|
102
|
+
'subject' => 'Test',
|
|
103
|
+
'text' => 'Test Data' }
|
|
102
104
|
@mg_obj.post("#{@domain}/messages", data)
|
|
103
|
-
rescue Mailgun::CommunicationError =>
|
|
104
|
-
expect(
|
|
105
|
+
rescue Mailgun::CommunicationError => e
|
|
106
|
+
expect(e.message).to eq('message: Unknown API error')
|
|
105
107
|
else
|
|
106
|
-
|
|
108
|
+
raise
|
|
107
109
|
end
|
|
108
110
|
end
|
|
109
111
|
end
|
|
110
112
|
|
|
111
113
|
describe 'The method put()' do
|
|
112
114
|
before(:each) do
|
|
113
|
-
@mg_obj = Mailgun::UnitClient.new(
|
|
114
|
-
@domain =
|
|
115
|
-
@list_address =
|
|
116
|
-
@member_address =
|
|
115
|
+
@mg_obj = Mailgun::UnitClient.new('lists')
|
|
116
|
+
@domain = 'test.com'
|
|
117
|
+
@list_address = 'mylist@test.com'
|
|
118
|
+
@member_address = 'subscribee@test.com'
|
|
117
119
|
end
|
|
118
120
|
|
|
119
121
|
it 'in this case, updates a member with the attributes in data.' do
|
|
120
|
-
data = {'subscribed' => false,
|
|
121
|
-
|
|
122
|
+
data = { 'subscribed' => false,
|
|
123
|
+
'name' => 'Foo Bar' }
|
|
122
124
|
result = @mg_obj.put("lists/#{@list_address}/members#{@member_address}", data)
|
|
123
125
|
|
|
124
126
|
result.to_h!
|
|
125
127
|
|
|
126
|
-
expect(result.body).to include(
|
|
127
|
-
expect(result.body[
|
|
128
|
-
expect(result.body[
|
|
129
|
-
expect(result.body[
|
|
130
|
-
expect(result.body[
|
|
131
|
-
expect(result.body[
|
|
132
|
-
expect(result.body).to include(
|
|
128
|
+
expect(result.body).to include('member')
|
|
129
|
+
expect(result.body['member']).to include('vars')
|
|
130
|
+
expect(result.body['member']['vars']).to include('age')
|
|
131
|
+
expect(result.body['member']).to include('name')
|
|
132
|
+
expect(result.body['member']).to include('subscribed')
|
|
133
|
+
expect(result.body['member']).to include('address')
|
|
134
|
+
expect(result.body).to include('message')
|
|
133
135
|
end
|
|
134
|
-
|
|
135
136
|
end
|
|
136
137
|
|
|
137
138
|
describe 'The method get()' do
|
|
138
139
|
before(:each) do
|
|
139
|
-
@mg_obj = Mailgun::UnitClient.new(
|
|
140
|
-
@domain =
|
|
140
|
+
@mg_obj = Mailgun::UnitClient.new('bounces')
|
|
141
|
+
@domain = 'test.com'
|
|
141
142
|
end
|
|
142
143
|
it 'in this case, obtains a list of bounces for the domain, limit of 5, skipping the first 10.' do
|
|
143
|
-
query_string = {'skip' => '10',
|
|
144
|
-
|
|
144
|
+
query_string = { 'skip' => '10',
|
|
145
|
+
'limit' => '5' }
|
|
145
146
|
result = @mg_obj.get("#{@domain}/bounces", query_string)
|
|
146
147
|
|
|
147
148
|
result.to_h!
|
|
148
149
|
|
|
149
|
-
expect(result.body).to include(
|
|
150
|
-
expect(result.body).to include(
|
|
150
|
+
expect(result.body).to include('total_count')
|
|
151
|
+
expect(result.body).to include('items')
|
|
151
152
|
end
|
|
152
153
|
end
|
|
153
154
|
|
|
154
155
|
describe 'The method delete()' do
|
|
155
156
|
before(:each) do
|
|
156
|
-
@mg_obj = Mailgun::UnitClient.new(
|
|
157
|
-
@domain =
|
|
157
|
+
@mg_obj = Mailgun::UnitClient.new('campaigns')
|
|
158
|
+
@domain = 'test.com'
|
|
158
159
|
end
|
|
159
160
|
|
|
160
161
|
it 'issues a generic delete request.' do
|
|
@@ -162,7 +163,7 @@ describe 'The method delete()' do
|
|
|
162
163
|
|
|
163
164
|
result.to_h!
|
|
164
165
|
|
|
165
|
-
expect(result.body).to include(
|
|
166
|
-
expect(result.body).to include(
|
|
166
|
+
expect(result.body).to include('message')
|
|
167
|
+
expect(result.body).to include('id')
|
|
167
168
|
end
|
|
168
169
|
end
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require 'spec_helper'
|
|
2
4
|
|
|
3
5
|
describe 'BatchMessage attribute readers' do
|
|
4
6
|
it 'should be readable' do
|
|
5
|
-
@mb_client = Mailgun::UnitClient.new(
|
|
6
|
-
@mb_obj = Mailgun::BatchMessage.new(@mb_client,
|
|
7
|
+
@mb_client = Mailgun::UnitClient.new('messages')
|
|
8
|
+
@mb_obj = Mailgun::BatchMessage.new(@mb_client, 'example.com')
|
|
7
9
|
|
|
8
10
|
expect(@mb_obj).to respond_to(:message_ids)
|
|
9
11
|
expect(@mb_obj).to respond_to(:message)
|
|
@@ -14,10 +16,9 @@ describe 'BatchMessage attribute readers' do
|
|
|
14
16
|
end
|
|
15
17
|
|
|
16
18
|
describe 'The instantiation of Batch Message' do
|
|
17
|
-
|
|
18
19
|
before(:each) do
|
|
19
|
-
@mb_client = Mailgun::UnitClient.new(
|
|
20
|
-
@mb_obj = Mailgun::BatchMessage.new(@mb_client,
|
|
20
|
+
@mb_client = Mailgun::UnitClient.new('messages')
|
|
21
|
+
@mb_obj = Mailgun::BatchMessage.new(@mb_client, 'example.com')
|
|
21
22
|
end
|
|
22
23
|
|
|
23
24
|
it 'contains Message, which should be of type Hash and empty' do
|
|
@@ -63,14 +64,14 @@ end
|
|
|
63
64
|
|
|
64
65
|
describe 'The method add_recipient' do
|
|
65
66
|
before(:each) do
|
|
66
|
-
@mb_client = Mailgun::UnitClient.new(
|
|
67
|
-
@mb_obj = Mailgun::BatchMessage.new(@mb_client,
|
|
67
|
+
@mb_client = Mailgun::UnitClient.new('messages')
|
|
68
|
+
@mb_obj = Mailgun::BatchMessage.new(@mb_client, 'example.com')
|
|
68
69
|
@address_1 = 'jane@example.com'
|
|
69
|
-
@variables_1 = {'first' => 'Jane', 'last' => 'Doe', 'tracking' => 'ABC123'}
|
|
70
|
+
@variables_1 = { 'first' => 'Jane', 'last' => 'Doe', 'tracking' => 'ABC123' }
|
|
70
71
|
@address_2 = 'bob@example.com'
|
|
71
|
-
@variables_2 = {'first' => 'Bob', 'last' => 'Doe', 'tracking' => 'DEF123'}
|
|
72
|
+
@variables_2 = { 'first' => 'Bob', 'last' => 'Doe', 'tracking' => 'DEF123' }
|
|
72
73
|
@address_3 = 'sam@example.com'
|
|
73
|
-
@variables_3 = {'first' => 'Sam', 'last' => 'Doe', 'tracking' => 'GHI123'}
|
|
74
|
+
@variables_3 = { 'first' => 'Sam', 'last' => 'Doe', 'tracking' => 'GHI123' }
|
|
74
75
|
end
|
|
75
76
|
context 'when from is present' do
|
|
76
77
|
before(:each) do
|
|
@@ -84,9 +85,9 @@ describe 'The method add_recipient' do
|
|
|
84
85
|
end
|
|
85
86
|
|
|
86
87
|
expect(@mb_obj.counters[:recipients][recipient_type]).to eq(1000)
|
|
87
|
-
|
|
88
|
+
|
|
88
89
|
@mb_obj.add_recipient(recipient_type, @address_1, @variables_1)
|
|
89
|
-
|
|
90
|
+
|
|
90
91
|
expect(@mb_obj.counters[:recipients][recipient_type]).to eq(1)
|
|
91
92
|
end
|
|
92
93
|
|
|
@@ -127,7 +128,7 @@ describe 'The method add_recipient' do
|
|
|
127
128
|
@mb_obj.add_recipient(recipient_type, @address_1, @variables_1)
|
|
128
129
|
@mb_obj.add_recipient(recipient_type, @address_2, @variables_2)
|
|
129
130
|
@mb_obj.add_recipient(recipient_type, @address_3, @variables_3)
|
|
130
|
-
|
|
131
|
+
|
|
131
132
|
expect(@mb_obj.recipient_variables[@address_1]).to eq(@variables_1)
|
|
132
133
|
expect(@mb_obj.recipient_variables[@address_2]).to eq(@variables_2)
|
|
133
134
|
expect(@mb_obj.recipient_variables[@address_3]).to eq(@variables_3)
|
|
@@ -139,9 +140,8 @@ describe 'The method add_recipient' do
|
|
|
139
140
|
recipient_type = :to
|
|
140
141
|
@mb_obj.add_recipient(recipient_type, @address_1, @variables_1)
|
|
141
142
|
@mb_obj.add_recipient(recipient_type, @address_2, @variables_2)
|
|
142
|
-
expect(@mb_client).to receive(:
|
|
143
|
+
expect(@mb_client).to receive(:raise)
|
|
143
144
|
@mb_obj.finalize
|
|
144
145
|
end
|
|
145
146
|
end
|
|
146
|
-
|
|
147
147
|
end
|