sendgrid-api 0.0.2 → 0.0.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.
Files changed (76) hide show
  1. data/.gitignore +4 -2
  2. data/.yardopts +6 -0
  3. data/Gemfile +2 -0
  4. data/Gemfile.lock +5 -1
  5. data/README.md +200 -12
  6. data/Rakefile +3 -0
  7. data/lib/sendgrid/api/client.rb +16 -0
  8. data/lib/sendgrid/api/entities/category.rb +13 -0
  9. data/lib/sendgrid/api/entities/email.rb +13 -0
  10. data/lib/sendgrid/api/entities/entity.rb +2 -2
  11. data/lib/sendgrid/api/entities/list.rb +30 -0
  12. data/lib/sendgrid/api/entities/marketing_email.rb +20 -0
  13. data/lib/sendgrid/api/entities/response_insert.rb +23 -0
  14. data/lib/sendgrid/api/entities/response_remove.rb +23 -0
  15. data/lib/sendgrid/api/entities/schedule.rb +13 -0
  16. data/lib/sendgrid/api/entities/sender_address.rb +13 -0
  17. data/lib/sendgrid/api/newsletter/categories.rb +74 -0
  18. data/lib/sendgrid/api/newsletter/emails.rb +69 -0
  19. data/lib/sendgrid/api/newsletter/lists.rb +64 -0
  20. data/lib/sendgrid/api/newsletter/marketing_emails.rb +72 -0
  21. data/lib/sendgrid/api/newsletter/recipients.rb +55 -0
  22. data/lib/sendgrid/api/newsletter/schedule.rb +70 -0
  23. data/lib/sendgrid/api/newsletter/sender_addresses.rb +80 -0
  24. data/lib/sendgrid/api/newsletter/utils.rb +34 -0
  25. data/lib/sendgrid/api/rest/errors/error.rb +9 -3
  26. data/lib/sendgrid/api/rest/resource.rb +3 -1
  27. data/lib/sendgrid/api/version.rb +1 -1
  28. data/lib/sendgrid/api/web/mail.rb +44 -0
  29. data/lib/sendgrid/api/web/profile.rb +3 -3
  30. data/lib/sendgrid/api/web/stats.rb +3 -3
  31. data/spec/fixtures/categories.json +11 -0
  32. data/spec/fixtures/emails/email.json +6 -0
  33. data/spec/fixtures/emails/emails.json +10 -0
  34. data/spec/fixtures/errors/already_exists.json +3 -0
  35. data/spec/fixtures/errors/bad_request.json +6 -0
  36. data/spec/fixtures/errors/database_error.json +3 -0
  37. data/spec/fixtures/errors/does_not_exist.json +3 -0
  38. data/spec/fixtures/{forbidden.json → errors/forbidden.json} +0 -0
  39. data/spec/fixtures/errors/invalid_fields.json +3 -0
  40. data/spec/fixtures/errors/not_scheduled.json +3 -0
  41. data/spec/fixtures/errors/unauthorized.json +6 -0
  42. data/spec/fixtures/lists/list.json +5 -0
  43. data/spec/fixtures/lists/lists.json +11 -0
  44. data/spec/fixtures/marketing_emails/marketing_email.json +19 -0
  45. data/spec/fixtures/marketing_emails/marketing_emails.json +10 -0
  46. data/spec/fixtures/recipients.json +8 -0
  47. data/spec/fixtures/schedule.json +3 -0
  48. data/spec/fixtures/sender_addresses/sender_address.json +11 -0
  49. data/spec/fixtures/sender_addresses/sender_addresses.json +11 -0
  50. data/spec/sendgrid/api/client_spec.rb +16 -0
  51. data/spec/sendgrid/api/entities/category_spec.rb +14 -0
  52. data/spec/sendgrid/api/entities/email_spec.rb +15 -0
  53. data/spec/sendgrid/api/entities/list_spec.rb +34 -0
  54. data/spec/sendgrid/api/entities/marketing_email_spec.rb +31 -0
  55. data/spec/sendgrid/api/entities/response_insert_spec.rb +28 -0
  56. data/spec/sendgrid/api/entities/response_remove_spec.rb +28 -0
  57. data/spec/sendgrid/api/entities/schedule_spec.rb +14 -0
  58. data/spec/sendgrid/api/entities/sender_address_spec.rb +21 -0
  59. data/spec/sendgrid/api/newsletter/categories_spec.rb +247 -0
  60. data/spec/sendgrid/api/newsletter/emails_spec.rb +265 -0
  61. data/spec/sendgrid/api/newsletter/lists_spec.rb +307 -0
  62. data/spec/sendgrid/api/newsletter/marketing_emails_spec.rb +306 -0
  63. data/spec/sendgrid/api/newsletter/recipients_spec.rb +252 -0
  64. data/spec/sendgrid/api/newsletter/schedule_spec.rb +263 -0
  65. data/spec/sendgrid/api/newsletter/sender_addresses_spec.rb +300 -0
  66. data/spec/sendgrid/api/rest/errors/error_spec.rb +40 -16
  67. data/spec/sendgrid/api/rest/resource_spec.rb +2 -0
  68. data/spec/sendgrid/api/web/mail_spec.rb +111 -0
  69. data/spec/sendgrid/api/web/profile_spec.rb +13 -29
  70. data/spec/sendgrid/api/web/stats_spec.rb +9 -15
  71. data/spec/support/helpers.rb +8 -0
  72. data/spec/support/mock.rb +6 -2
  73. data/spec/support/online.rb +114 -0
  74. data/spec/support/shared_examples.rb +93 -0
  75. metadata +96 -10
  76. data/spec/fixtures/unauthorized.json +0 -6
@@ -0,0 +1,307 @@
1
+ require 'spec_helper'
2
+
3
+ module Sendgrid
4
+ module API
5
+ module Newsletter
6
+ module Lists
7
+ describe Services do
8
+
9
+ subject { service }
10
+ let(:service) { described_class.new(resource) }
11
+ let(:resource) { REST::Resource.new(user, key) }
12
+ let(:user) { 'my_user' }
13
+ let(:key) { 'my_key' }
14
+ let(:sg_mock) { Sendgrid::Mock.new(user, key) }
15
+
16
+ describe '#add' do
17
+ let(:url) { 'newsletter/lists/add.json' }
18
+ let(:listname) { 'list 1' }
19
+ let(:stub_post) { sg_mock.stub_post(url, :list => listname) }
20
+
21
+ subject { service.add(listname) }
22
+
23
+ context 'when add a list successfully' do
24
+ context 'with name' do
25
+ it_behaves_like 'a success response'
26
+ end
27
+
28
+ context 'with object' do
29
+ let(:list) { Entities::List.new(:list => listname) }
30
+ subject { service.add(list) }
31
+ it_behaves_like 'a success response'
32
+ end
33
+ end
34
+
35
+ context 'when permission failed' do
36
+ it_behaves_like 'a forbidden response'
37
+ end
38
+
39
+ context 'when list already exists' do
40
+ it_behaves_like 'an already exists response'
41
+ end
42
+ end
43
+
44
+ describe '#edit' do
45
+ let(:url) { 'newsletter/lists/edit.json' }
46
+ let(:listname) { 'list 1' }
47
+ let(:newlistname) { 'new list 1' }
48
+ let(:stub_post) { sg_mock.stub_post(url, :list => listname, :newlist => newlistname) }
49
+
50
+ subject { service.edit(listname, newlistname) }
51
+
52
+ context 'when edit a list successfully' do
53
+ context 'with name' do
54
+ it_behaves_like 'a success response'
55
+ end
56
+
57
+ context 'with object' do
58
+ let(:list) { Entities::List.new(:list => listname) }
59
+ let(:newlist) { Entities::List.new(:list => newlistname) }
60
+ subject { service.edit(list, newlist) }
61
+ it_behaves_like 'a success response'
62
+ end
63
+ end
64
+
65
+ context 'when permission failed' do
66
+ it_behaves_like 'a forbidden response'
67
+ end
68
+
69
+ context 'when list already exists' do
70
+ it_behaves_like 'an already exists response'
71
+ end
72
+
73
+ context 'when list does not exist' do
74
+ it_behaves_like 'a does not exist response'
75
+ end
76
+ end
77
+
78
+ describe '#delete' do
79
+ let(:url) { 'newsletter/lists/delete.json' }
80
+ let(:listname) { 'list 1' }
81
+ let(:stub_post) { sg_mock.stub_post(url, :list => listname) }
82
+
83
+ subject { service.delete(listname) }
84
+
85
+ context 'when delete a list successfully' do
86
+ context 'with name' do
87
+ it_behaves_like 'a success response'
88
+ end
89
+
90
+ context 'with object' do
91
+ let(:list) { Entities::List.new(:list => listname) }
92
+ subject { service.delete(list) }
93
+ it_behaves_like 'a success response'
94
+ end
95
+ end
96
+
97
+ context 'when permission failed' do
98
+ it_behaves_like 'a forbidden response'
99
+ end
100
+
101
+ context 'when list does not exist' do
102
+ it_behaves_like 'a does not exist response'
103
+ end
104
+ end
105
+
106
+ describe '#get' do
107
+ let(:url) { 'newsletter/lists/get.json' }
108
+ let(:response) { service.get(listname) }
109
+ let(:listname) { 'list 1' }
110
+ let(:stub_post) { sg_mock.stub_post(url, :list => listname) }
111
+ subject { response }
112
+
113
+ context 'when get all lists successfully' do
114
+ let(:stub_post) { sg_mock.stub_post(url) }
115
+ let(:response) { service.get }
116
+
117
+ before do
118
+ stub_post.to_return(:body => fixture('lists/lists.json'))
119
+ end
120
+
121
+ it { should_not be_empty }
122
+ it { should have(3).items }
123
+
124
+ describe 'first list' do
125
+ subject { response.first }
126
+ it { should be_instance_of(Entities::List) }
127
+ its(:list) { should == 'list 1' }
128
+ end
129
+ end
130
+
131
+ context 'when get a list successfully' do
132
+ before do
133
+ stub_post.to_return(:body => fixture('lists/list.json'))
134
+ end
135
+
136
+ context 'with name' do
137
+ it { should_not be_empty }
138
+ it { should have(1).item }
139
+ end
140
+
141
+ context 'with object' do
142
+ let(:response) { service.get(list) }
143
+ let(:list) { Entities::List.new(:list => listname) }
144
+
145
+ it { should_not be_empty }
146
+ it { should have(1).item }
147
+ end
148
+ end
149
+
150
+ context 'when permission failed' do
151
+ it_behaves_like 'a forbidden response'
152
+ end
153
+
154
+ context 'when not found' do
155
+ it_behaves_like 'a does not exist response'
156
+ end
157
+ end
158
+
159
+ describe 'online tests', :online => true do
160
+ include_examples 'online tests'
161
+ let(:online) { Online.new(env_user, env_key) }
162
+ let(:list) { online.list_example }
163
+ let(:newlistname) { 'sendgrid-api new list test' }
164
+
165
+ context 'when credentials are valid' do
166
+ let(:resource) { REST::Resource.new(env_user, env_key) }
167
+
168
+ describe '#add' do
169
+ after do
170
+ subject.delete(list).success? or raise 'could not remove the created list'
171
+ end
172
+
173
+ context 'when add a list successfully' do
174
+ it 'adds a list' do
175
+ subject.add(list).success?.should be_true
176
+ end
177
+ end
178
+
179
+ context 'when list already exists' do
180
+ before do
181
+ subject.add(list).success? or raise 'could not create the list'
182
+ end
183
+ it 'raises an error' do
184
+ expect { subject.add(list) }.to raise_error(REST::Errors::UnprocessableEntity)
185
+ end
186
+ end
187
+ end
188
+
189
+ describe '#edit' do
190
+ context 'when edit a list successfully' do
191
+ before do
192
+ subject.add(list).success? or raise 'could not create the list'
193
+ end
194
+ after do
195
+ subject.delete(newlistname).success? or raise 'could not remove the created list'
196
+ end
197
+ it 'edits a list' do
198
+ subject.edit(list, newlistname).success?.should be_true
199
+ end
200
+ end
201
+
202
+ context 'when list does not exist' do
203
+ before do
204
+ subject.add(newlistname).success? or raise 'could not create the list'
205
+ end
206
+ after do
207
+ subject.delete(newlistname).success? or raise 'could not remove the created list'
208
+ end
209
+ it 'raises an error' do
210
+ expect { subject.edit(list, newlistname) }.to raise_error(REST::Errors::Unauthorized)
211
+ end
212
+ end
213
+
214
+ context 'when list already exists' do
215
+ before do
216
+ subject.add(list).success? or raise 'could not create the list'
217
+ subject.add(newlistname).success? or raise 'could not create the list'
218
+ end
219
+ after do
220
+ subject.delete(list).success? or raise 'could not remove the created list'
221
+ subject.delete(newlistname).success? or raise 'could not remove the created list'
222
+ end
223
+ it 'raises an error' do
224
+ expect { subject.edit(list, newlistname) }.to raise_error(REST::Errors::Unauthorized)
225
+ end
226
+ end
227
+ end
228
+
229
+ describe '#delete' do
230
+ context 'when delete a list successfully' do
231
+ before do
232
+ subject.add(list).success? or raise 'could not create the list'
233
+ end
234
+ it 'deletes a list' do
235
+ subject.delete(list).success?.should be_true
236
+ end
237
+ end
238
+
239
+ context 'when list does not exist' do
240
+ it 'raises an error' do
241
+ expect { subject.delete(list) }.to raise_error(REST::Errors::UnprocessableEntity)
242
+ end
243
+ end
244
+ end
245
+
246
+ describe '#get' do
247
+ context 'when get all lists successfully' do
248
+ before do
249
+ subject.add(list).success? or raise 'could not create the list'
250
+ end
251
+ after do
252
+ subject.delete(list).success? or raise 'could not remove the created list'
253
+ end
254
+ it 'gets a list' do
255
+ subject.get.should_not be_empty
256
+ end
257
+ end
258
+
259
+ context 'when get a list successfully' do
260
+ before do
261
+ subject.add(list).success? or raise 'could not create the list'
262
+ end
263
+ after do
264
+ subject.delete(list).success? or raise 'could not remove the created list'
265
+ end
266
+ it 'gets a list' do
267
+ subject.get(list).should_not be_empty
268
+ end
269
+ end
270
+
271
+ context 'when list does not exist' do
272
+ it 'raises an error' do
273
+ expect { subject.get(list) }.to raise_error(REST::Errors::Unauthorized)
274
+ end
275
+ end
276
+ end
277
+ end
278
+
279
+ context 'when credentials are invalid' do
280
+ describe '#add' do
281
+ it 'raises an error' do
282
+ expect { subject.add(list) }.to raise_error(REST::Errors::Forbidden)
283
+ end
284
+ end
285
+ describe '#edit' do
286
+ it 'raises an error' do
287
+ expect { subject.edit(list, newlistname) }.to raise_error(REST::Errors::Forbidden)
288
+ end
289
+ end
290
+ describe '#delete' do
291
+ it 'raises an error' do
292
+ expect { subject.delete(list) }.to raise_error(REST::Errors::Forbidden)
293
+ end
294
+ end
295
+ describe '#get' do
296
+ it 'raises an error' do
297
+ expect { subject.get(list) }.to raise_error(REST::Errors::Forbidden)
298
+ end
299
+ end
300
+ end
301
+ end
302
+
303
+ end
304
+ end
305
+ end
306
+ end
307
+ end
@@ -0,0 +1,306 @@
1
+ require 'spec_helper'
2
+
3
+ module Sendgrid
4
+ module API
5
+ module Newsletter
6
+ module MarketingEmails
7
+ describe Services do
8
+
9
+ subject { service }
10
+ let(:service) { described_class.new(resource) }
11
+ let(:resource) { REST::Resource.new(user, key) }
12
+ let(:user) { 'my_user' }
13
+ let(:key) { 'my_key' }
14
+ let(:sg_mock) { Sendgrid::Mock.new(user, key) }
15
+
16
+ let(:marketing_email) do
17
+ Entities::MarketingEmail.new(:identity => identity, :name => name, :subject => email_subject, :text => text, :html => html)
18
+ end
19
+ let(:identity) { 'my identity' }
20
+ let(:name) { 'my name' }
21
+ let(:email_subject) { 'my subject' }
22
+ let(:text) { 'my text' }
23
+ let(:html) { 'my html' }
24
+
25
+ describe '#add' do
26
+ let(:url) { 'newsletter/add.json' }
27
+ let(:stub_post) { sg_mock.stub_post(url, marketing_email.as_json) }
28
+ subject { service.add(marketing_email) }
29
+
30
+ context 'when add a marketing email successfully' do
31
+ it_behaves_like 'a success response'
32
+ end
33
+
34
+ context 'when the marketing email is not valid' do
35
+ it_behaves_like 'an invalid fields response'
36
+ end
37
+
38
+ context 'when a marketing email already exists' do
39
+ it_behaves_like 'an already exists unauthorized response'
40
+ end
41
+
42
+ context 'when permission failed' do
43
+ it_behaves_like 'a forbidden response'
44
+ end
45
+ end
46
+
47
+ describe '#edit' do
48
+ let(:url) { 'newsletter/edit.json' }
49
+ let(:stub_post) { sg_mock.stub_post(url, marketing_email.as_json) }
50
+ subject { service.edit(marketing_email) }
51
+
52
+ context 'when edit a marketing email successfully' do
53
+ it_behaves_like 'a success response'
54
+ end
55
+
56
+ context 'when edit a marketing email name successfully' do
57
+ it_behaves_like 'a success response'
58
+ end
59
+
60
+ context 'when a new marketing email name already exists' do
61
+ let(:newname) { 'my new name' }
62
+ let(:stub_post) { sg_mock.stub_post(url, marketing_email.as_json.merge(:newname => newname)) }
63
+ subject { service.edit(marketing_email, newname) }
64
+ it_behaves_like 'a success response'
65
+ end
66
+
67
+ context 'when the marketing email is not found' do
68
+ it_behaves_like 'a does not exist response'
69
+ end
70
+
71
+ context 'when permission failed' do
72
+ it_behaves_like 'a forbidden response'
73
+ end
74
+ end
75
+
76
+ describe '#get' do
77
+ let(:url) { 'newsletter/get.json' }
78
+ let(:stub_post) { sg_mock.stub_post(url, :name => name) }
79
+ subject { service.get(marketing_email) }
80
+
81
+ context 'when get a marketing email successfully' do
82
+ before do
83
+ stub_post.to_return(:body => fixture('marketing_emails/marketing_email.json'))
84
+ end
85
+
86
+ context 'with name' do
87
+ subject { service.get(name) }
88
+ its(:name) { should == 'sendgrid tutorial' }
89
+ its(:subject) { should == 'SendGrid Email Marketing Service Tutorial' }
90
+ end
91
+
92
+ context 'with object' do
93
+ its(:name) { should == 'sendgrid tutorial' }
94
+ its(:subject) { should == 'SendGrid Email Marketing Service Tutorial' }
95
+ end
96
+ end
97
+
98
+ context 'when the marketing email is not found' do
99
+ it_behaves_like 'a does not exist response'
100
+ end
101
+
102
+ context 'when permission failed' do
103
+ it_behaves_like 'a forbidden response'
104
+ end
105
+ end
106
+
107
+ describe '#list' do
108
+ let(:url) { 'newsletter/list.json' }
109
+ let(:stub_post) { sg_mock.stub_post(url) }
110
+ subject { service.list }
111
+
112
+ context 'when get all marketing emails successfully' do
113
+ before do
114
+ stub_post.to_return(:body => fixture('marketing_emails/marketing_emails.json'))
115
+ end
116
+ it { should have(2).items }
117
+
118
+ describe 'first item' do
119
+ subject { service.list.first }
120
+ its(:name) { should == 'Sendgrid Tutorial' }
121
+ its(:newsletter_id) { should == 123456 }
122
+ end
123
+ end
124
+
125
+ context 'when permission failed' do
126
+ it_behaves_like 'a forbidden response'
127
+ end
128
+ end
129
+
130
+ describe '#delete' do
131
+ let(:url) { 'newsletter/delete.json' }
132
+ let(:stub_post) { sg_mock.stub_post(url, :name => name) }
133
+ subject { service.delete(marketing_email) }
134
+
135
+ context 'when delete a marketing email successfully' do
136
+ context 'with name' do
137
+ subject { service.delete(name) }
138
+ it_behaves_like 'a success response'
139
+ end
140
+
141
+ context 'with object' do
142
+ it_behaves_like 'a success response'
143
+ end
144
+ end
145
+
146
+ context 'when the marketing email is not found' do
147
+ it_behaves_like 'a does not exist response'
148
+ end
149
+
150
+ context 'when permission failed' do
151
+ it_behaves_like 'a forbidden response'
152
+ end
153
+ end
154
+
155
+ describe 'online tests', :online => true do
156
+ include_examples 'online tests'
157
+ let(:online) { Online.new(env_user, env_key) }
158
+ let(:marketing_email) { online.marketing_email_example }
159
+ let(:sender_address) { online.sender_address_example }
160
+ let(:client) { online.client }
161
+
162
+ context 'when credentials are valid' do
163
+ let(:resource) { REST::Resource.new(env_user, env_key) }
164
+
165
+ before do
166
+ client.sender_addresses.add(sender_address)
167
+ end
168
+ after do
169
+ client.sender_addresses.delete(sender_address)
170
+ end
171
+
172
+ describe '#add' do
173
+ context 'when add a marketing email successfully' do
174
+ after do
175
+ subject.delete(marketing_email)
176
+ end
177
+ it 'adds the marketing email' do
178
+ subject.add(marketing_email).success?.should be_true
179
+ end
180
+ end
181
+
182
+ context 'when the marketing email is not valid' do
183
+ it 'raises an error' do
184
+ marketing_email.subject = nil
185
+ expect { subject.add(marketing_email) }.to raise_error(REST::Errors::BadRequest)
186
+ end
187
+ end
188
+
189
+ context 'when a marketing email already exists' do
190
+ before do
191
+ subject.add(marketing_email)
192
+ end
193
+ after do
194
+ subject.delete(marketing_email)
195
+ end
196
+ it 'raises an error' do
197
+ expect { subject.add(marketing_email) }.to raise_error(REST::Errors::Unauthorized)
198
+ end
199
+ end
200
+ end
201
+
202
+ describe '#edit' do
203
+ context 'when edit a marketing email successfully' do
204
+ before do
205
+ subject.add(marketing_email)
206
+ end
207
+ after do
208
+ subject.delete(marketing_email)
209
+ end
210
+ it 'edits the marketing email' do
211
+ subject.edit(marketing_email).success?.should be_true
212
+ end
213
+ end
214
+
215
+ context 'when the marketing email is not found' do
216
+ it 'raises an error' do
217
+ expect { subject.edit(marketing_email) }.to raise_error(REST::Errors::Unauthorized)
218
+ end
219
+ end
220
+ end
221
+
222
+ describe '#get' do
223
+ context 'when get a marketing email successfully' do
224
+ before do
225
+ subject.add(marketing_email)
226
+ end
227
+ after do
228
+ subject.delete(marketing_email)
229
+ end
230
+ it 'gets the marketing email' do
231
+ response = subject.get(marketing_email)
232
+ response.name.should == marketing_email.name
233
+ end
234
+ end
235
+
236
+ context 'when the marketing email is not found' do
237
+ it 'raises an error' do
238
+ expect { subject.get(marketing_email) }.to raise_error(REST::Errors::Unauthorized)
239
+ end
240
+ end
241
+ end
242
+
243
+ describe '#list' do
244
+ context 'when get all marketing emails successfully' do
245
+ it 'get all the marketing emails' do
246
+ subject.list.should_not be_empty
247
+ end
248
+ end
249
+ end
250
+
251
+ describe '#delete' do
252
+ context 'when delete a marketing email successfully' do
253
+ before do
254
+ subject.add(marketing_email)
255
+ end
256
+ it 'deletes the marketing email' do
257
+ subject.delete(marketing_email).success?.should be_true
258
+ end
259
+ end
260
+
261
+ context 'when the marketing email is not found' do
262
+ it 'raises an error' do
263
+ expect { subject.delete(marketing_email) }.to raise_error(REST::Errors::Unauthorized)
264
+ end
265
+ end
266
+ end
267
+ end
268
+
269
+ context 'when credentials are invalid' do
270
+ describe '#add' do
271
+ it 'raises an error' do
272
+ expect { subject.add(marketing_email) }.to raise_error(REST::Errors::Forbidden)
273
+ end
274
+ end
275
+
276
+ describe '#edit' do
277
+ it 'raises an error' do
278
+ expect { subject.edit(marketing_email) }.to raise_error(REST::Errors::Forbidden)
279
+ end
280
+ end
281
+
282
+ describe '#get' do
283
+ it 'raises an error' do
284
+ expect { subject.get(marketing_email) }.to raise_error(REST::Errors::Forbidden)
285
+ end
286
+ end
287
+
288
+ describe '#list' do
289
+ it 'raises an error' do
290
+ expect { subject.list }.to raise_error(REST::Errors::Forbidden)
291
+ end
292
+ end
293
+
294
+ describe '#delete' do
295
+ it 'raises an error' do
296
+ expect { subject.delete(marketing_email) }.to raise_error(REST::Errors::Forbidden)
297
+ end
298
+ end
299
+ end
300
+ end
301
+
302
+ end
303
+ end
304
+ end
305
+ end
306
+ end