sendgrid-ruby 6.3.4 → 6.3.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (101) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +7 -5
  3. data/.rubocop_todo.yml +109 -0
  4. data/.travis.yml +1 -2
  5. data/CHANGELOG.md +43 -1
  6. data/CONTRIBUTING.md +2 -5
  7. data/FIRST_TIMERS.md +7 -7
  8. data/{LICENSE.md → LICENSE} +1 -1
  9. data/Makefile +1 -0
  10. data/PULL_REQUEST_TEMPLATE.md +4 -4
  11. data/README.md +3 -9
  12. data/Rakefile +2 -3
  13. data/USAGE.md +111 -3
  14. data/examples/accesssettings/accesssettings.rb +9 -12
  15. data/examples/alerts/alerts.rb +8 -11
  16. data/examples/apikeys/apikeys.rb +12 -15
  17. data/examples/asm/asm.rb +27 -30
  18. data/examples/browsers/browsers.rb +0 -3
  19. data/examples/campaigns/campaigns.rb +29 -32
  20. data/examples/categories/categories.rb +0 -3
  21. data/examples/clients/clients.rb +1 -4
  22. data/examples/contactdb/contactdb.rb +63 -66
  23. data/examples/devices/devices.rb +0 -3
  24. data/examples/emailactivity/emailactivity.rb +52 -0
  25. data/examples/geo/geo.rb +0 -3
  26. data/examples/helpers/eventwebhook/example.rb +4 -4
  27. data/examples/helpers/mail/example.rb +9 -10
  28. data/examples/helpers/settings/example.rb +1 -1
  29. data/examples/helpers/stats/example.rb +4 -4
  30. data/examples/ips/ips.rb +19 -22
  31. data/examples/mail/mail.rb +72 -75
  32. data/examples/mailboxproviders/mailboxproviders.rb +0 -3
  33. data/examples/mailsettings/mailsettings.rb +21 -24
  34. data/examples/partnersettings/partnersettings.rb +3 -6
  35. data/examples/scopes/scopes.rb +8 -10
  36. data/examples/senderauthentication/senderauthentication.rb +41 -44
  37. data/examples/senders/senders.rb +28 -31
  38. data/examples/stats/stats.rb +0 -3
  39. data/examples/subusers/subusers.rb +17 -20
  40. data/examples/suppression/suppression.rb +15 -18
  41. data/examples/templates/templates.rb +29 -31
  42. data/examples/trackingsettings/trackingsettings.rb +14 -17
  43. data/examples/user/user.rb +41 -44
  44. data/lib/rack/sendgrid_webhook_verification.rb +5 -2
  45. data/lib/sendgrid/base_interface.rb +2 -1
  46. data/lib/sendgrid/helpers/eventwebhook/eventwebhook.rb +4 -6
  47. data/lib/sendgrid/helpers/inbound/app.rb +2 -2
  48. data/lib/sendgrid/helpers/inbound/send.rb +3 -3
  49. data/lib/sendgrid/helpers/ip_management/ip_management.rb +1 -1
  50. data/lib/sendgrid/helpers/mail/asm.rb +6 -18
  51. data/lib/sendgrid/helpers/mail/attachment.rb +12 -42
  52. data/lib/sendgrid/helpers/mail/bcc_settings.rb +6 -18
  53. data/lib/sendgrid/helpers/mail/bypass_list_management.rb +8 -18
  54. data/lib/sendgrid/helpers/mail/category.rb +2 -2
  55. data/lib/sendgrid/helpers/mail/click_tracking.rb +6 -18
  56. data/lib/sendgrid/helpers/mail/content.rb +4 -3
  57. data/lib/sendgrid/helpers/mail/custom_arg.rb +6 -10
  58. data/lib/sendgrid/helpers/mail/email.rb +10 -5
  59. data/lib/sendgrid/helpers/mail/footer.rb +7 -27
  60. data/lib/sendgrid/helpers/mail/ganalytics.rb +10 -54
  61. data/lib/sendgrid/helpers/mail/header.rb +6 -10
  62. data/lib/sendgrid/helpers/mail/mail.rb +32 -48
  63. data/lib/sendgrid/helpers/mail/mail_settings.rb +9 -25
  64. data/lib/sendgrid/helpers/mail/open_tracking.rb +6 -18
  65. data/lib/sendgrid/helpers/mail/personalization.rb +34 -27
  66. data/lib/sendgrid/helpers/mail/section.rb +6 -10
  67. data/lib/sendgrid/helpers/mail/spam_check.rb +7 -27
  68. data/lib/sendgrid/helpers/mail/subscription_tracking.rb +8 -36
  69. data/lib/sendgrid/helpers/mail/substitution.rb +6 -10
  70. data/lib/sendgrid/helpers/mail/tracking_settings.rb +8 -20
  71. data/lib/sendgrid/helpers/permissions/scope.rb +2 -2
  72. data/lib/sendgrid/helpers/settings/settings.rb +1 -1
  73. data/lib/sendgrid/helpers/settings/tracking_settings_dto.rb +3 -5
  74. data/lib/sendgrid/helpers/stats/metrics.rb +5 -5
  75. data/lib/sendgrid/sendgrid.rb +1 -1
  76. data/lib/sendgrid/twilio_email.rb +1 -1
  77. data/lib/sendgrid/version.rb +1 -1
  78. data/mail_helper_v3.md +3 -3
  79. data/sendgrid-ruby.gemspec +7 -8
  80. data/spec/fixtures/event_webhook.rb +17 -11
  81. data/spec/rack/sendgrid_webhook_verification_spec.rb +30 -4
  82. data/spec/sendgrid/helpers/eventwebhook/eventwebhook_spec.rb +38 -36
  83. data/spec/sendgrid/helpers/settings/mail_settings_dto_spec.rb +1 -1
  84. data/spec/sendgrid/helpers/settings/partner_settings_dto_spec.rb +1 -1
  85. data/spec/sendgrid/helpers/settings/settings_spec.rb +2 -2
  86. data/spec/sendgrid/helpers/settings/tracking_settings_dto_spec.rb +1 -1
  87. data/spec/sendgrid/helpers/settings/user_settings_dto_spec.rb +1 -1
  88. data/spec/sendgrid/helpers/stats/email_stats_spec.rb +22 -23
  89. data/spec/sendgrid/helpers/stats/metrics_spec.rb +19 -20
  90. data/spec/sendgrid/helpers/stats/stats_response_spec.rb +22 -23
  91. data/spec/spec_helper.rb +1 -1
  92. data/test/sendgrid/helpers/mail/test_attachment.rb +4 -6
  93. data/test/sendgrid/helpers/mail/test_category.rb +0 -2
  94. data/test/sendgrid/helpers/mail/test_email.rb +17 -10
  95. data/test/sendgrid/helpers/mail/test_mail.rb +101 -102
  96. data/test/sendgrid/helpers/mail/test_personalizations.rb +133 -93
  97. data/test/sendgrid/permissions/test_scopes.rb +1 -3
  98. data/test/sendgrid/test_sendgrid-ruby.rb +1947 -1948
  99. data/use-cases/legacy-templates.md +1 -1
  100. data/use-cases/transactional-templates.md +1 -1
  101. metadata +39 -37
@@ -1,12 +1,12 @@
1
1
  module SendGrid
2
2
  class Metrics
3
3
  attr_reader :blocks, :bounce_drops,
4
- :bounces, :clicks, :deferred, :delivered,
5
- :invalid_emails, :opens, :processed, :requests,
6
- :spam_report_drops, :spam_reports, :unique_clicks,
7
- :unique_opens, :unsubscribe_drops, :unsubscribes
4
+ :bounces, :clicks, :deferred, :delivered,
5
+ :invalid_emails, :opens, :processed, :requests,
6
+ :spam_report_drops, :spam_reports, :unique_clicks,
7
+ :unique_opens, :unsubscribe_drops, :unsubscribes
8
8
 
9
- def initialize(args={})
9
+ def initialize(args = {})
10
10
  @date = args['date']
11
11
  @blocks = args['blocks']
12
12
  @bounce_drops = args['bounce_drops']
@@ -12,7 +12,7 @@ module SendGrid
12
12
  #
13
13
  def initialize(api_key:, host: nil, request_headers: nil, version: nil, impersonate_subuser: nil)
14
14
  auth = "Bearer #{api_key}"
15
- host = 'https://api.sendgrid.com' unless host
15
+ host ||= 'https://api.sendgrid.com'
16
16
 
17
17
  super(auth: auth, host: host, request_headers: request_headers, version: version, impersonate_subuser: impersonate_subuser)
18
18
  end
@@ -13,7 +13,7 @@ module TwilioEmail
13
13
  #
14
14
  def initialize(username:, password:, host: nil, request_headers: nil, version: nil, impersonate_subuser: nil)
15
15
  auth = "Basic #{Base64.strict_encode64("#{username}:#{password}")}"
16
- host = 'https://email.twilio.com' unless host
16
+ host ||= 'https://email.twilio.com'
17
17
 
18
18
  super(auth: auth, host: host, request_headers: request_headers, version: version, impersonate_subuser: impersonate_subuser)
19
19
  end
@@ -1,3 +1,3 @@
1
1
  module SendGrid
2
- VERSION = '6.3.4'
2
+ VERSION = '6.3.9'.freeze
3
3
  end
@@ -263,7 +263,7 @@ attachments = [
263
263
  'base64 encoded content',
264
264
  'image/png',
265
265
  'inline',
266
- 'Banner 2'),
266
+ 'Banner 2'),
267
267
  ]
268
268
  msg.add_attachments(attachments)
269
269
 
@@ -279,7 +279,7 @@ msg.set_global_headers(global_headers)
279
279
  msg.add_section('%section1%', 'Substitution for Section 1 Tag')
280
280
  sections = [
281
281
  '%section2%' => 'Substitution for Section 2 Tag',
282
- '%section3%' => 'Substitution for Section 3 Tag'
282
+ '%section3%' => 'Substitution for Section 3 Tag'
283
283
  ]
284
284
  msg.add_sections(sections)
285
285
 
@@ -328,7 +328,7 @@ puts response.headers
328
328
 
329
329
  The following code assumes you are storing the API key in an [environment variable (recommended)](TROUBLESHOOTING.md#environment-variables-and-your-sendgrid-api-key). If you don't have your key stored in an environment variable, you can assign it directly to `api_key` for testing purposes.
330
330
 
331
- For this example, we assume you have created a [transactional template](https://sendgrid.com/docs/User_Guide/Transactional_Templates/index.html). Following is the template content we used for testing.
331
+ For this example, we assume you have created a [legacy transactional template](https://sendgrid.com/docs/User_Guide/Transactional_Templates/index.html) in the UI or via the API. Following is the template content we used for testing.
332
332
 
333
333
  Template ID (replace with your own):
334
334
 
@@ -1,5 +1,4 @@
1
- # coding: utf-8
2
- lib = File.expand_path('../lib', __FILE__)
1
+ lib = File.expand_path('lib', __dir__)
3
2
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
3
  require 'sendgrid/version'
5
4
 
@@ -14,19 +13,19 @@ Gem::Specification.new do |spec|
14
13
 
15
14
  spec.required_ruby_version = '>= 2.2'
16
15
 
17
- spec.license = 'MIT'
16
+ spec.license = 'MIT'
18
17
  spec.files = `git ls-files -z`.split("\x0")
19
18
  spec.executables = spec.files.grep(/^bin/) { |f| File.basename(f) }
20
19
  spec.test_files = spec.files.grep(/^(test|spec|features)/)
21
20
  spec.require_paths = ['lib']
22
21
  spec.add_dependency 'ruby_http_client', '~> 3.4'
23
- spec.add_development_dependency 'sinatra', '>= 1.4.7', '< 3'
24
- spec.add_development_dependency 'rake', '~> 13.0'
25
- spec.add_development_dependency 'rspec'
26
- spec.add_development_dependency 'pry'
27
22
  spec.add_development_dependency 'faker'
28
- spec.add_development_dependency 'rubocop'
29
23
  spec.add_development_dependency 'minitest', '~> 5.9'
24
+ spec.add_development_dependency 'pry'
30
25
  spec.add_development_dependency 'rack'
26
+ spec.add_development_dependency 'rake', '~> 13.0'
27
+ spec.add_development_dependency 'rspec'
28
+ spec.add_development_dependency 'rubocop'
31
29
  spec.add_development_dependency 'simplecov', '~> 0.18.5'
30
+ spec.add_development_dependency 'sinatra', '>= 1.4.7', '< 3'
32
31
  end
@@ -1,16 +1,22 @@
1
- require "json"
1
+ require "json"
2
2
 
3
3
  module Fixtures
4
4
  module EventWebhook
5
- PUBLIC_KEY = 'MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEEDr2LjtURuePQzplybdC+u4CwrqDqBaWjcMMsTbhdbcwHBcepxo7yAQGhHPTnlvFYPAZFceEu/1FwCM/QmGUhA=='
6
- FAILING_PUBLIC_KEY = 'MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEqTxd43gyp8IOEto2LdIfjRQrIbsd4SXZkLW6jDutdhXSJCWHw8REntlo7aNDthvj+y7GjUuFDb/R1NGe1OPzpA=='
7
- SIGNATURE = 'MEUCIQCtIHJeH93Y+qpYeWrySphQgpNGNr/U+UyUlBkU6n7RAwIgJTz2C+8a8xonZGi6BpSzoQsbVRamr2nlxFDWYNH2j/0='
8
- FAILING_SIGNATURE = 'MEUCIQCtIHJeH93Y+qpYeWrySphQgpNGNr/U+UyUlBkU6n7RAwIgJTz2C+8a8xonZGi6BpSzoQsbVRamr2nlxFDWYNH3j/0='
9
- TIMESTAMP = '1588788367'
10
- PAYLOAD = {
11
- 'category'=>'example_payload',
12
- 'event'=>'test_event',
13
- 'message_id'=>'message_id',
14
- }.to_json
5
+ PUBLIC_KEY = 'MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE83T4O/n84iotIvIW4mdBgQ/7dAfSmpqIM8kF9mN1flpVKS3GRqe62gw+2fNNRaINXvVpiglSI8eNEc6wEA3F+g=='.freeze
6
+ FAILING_PUBLIC_KEY = 'MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEqTxd43gyp8IOEto2LdIfjRQrIbsd4SXZkLW6jDutdhXSJCWHw8REntlo7aNDthvj+y7GjUuFDb/R1NGe1OPzpA=='.freeze
7
+ SIGNATURE = 'MEUCIGHQVtGj+Y3LkG9fLcxf3qfI10QysgDWmMOVmxG0u6ZUAiEAyBiXDWzM+uOe5W0JuG+luQAbPIqHh89M15TluLtEZtM='.freeze
8
+ FAILING_SIGNATURE = 'MEUCIQCtIHJeH93Y+qpYeWrySphQgpNGNr/U+UyUlBkU6n7RAwIgJTz2C+8a8xonZGi6BpSzoQsbVRamr2nlxFDWYNH3j/0='.freeze
9
+ TIMESTAMP = '1600112502'.freeze
10
+ PAYLOAD = "#{[
11
+ {
12
+ email: 'hello@world.com',
13
+ event: 'dropped',
14
+ reason: 'Bounced Address',
15
+ sg_event_id: 'ZHJvcC0xMDk5NDkxOS1MUnpYbF9OSFN0T0doUTRrb2ZTbV9BLTA',
16
+ sg_message_id: 'LRzXl_NHStOGhQ4kofSm_A.filterdrecv-p3mdw1-756b745b58-kmzbl-18-5F5FC76C-9.0',
17
+ 'smtp-id': '<LRzXl_NHStOGhQ4kofSm_A@ismtpd0039p1iad1.sendgrid.net>',
18
+ timestamp: 1_600_112_492
19
+ }
20
+ ].to_json}\r\n".freeze # Be sure to include the trailing carriage return and newline!
15
21
  end
16
22
  end
@@ -12,19 +12,19 @@ unless RUBY_PLATFORM == 'java'
12
12
  describe 'new' do
13
13
  it 'should initialize with an app, public key and a path' do
14
14
  expect do
15
- Rack::SendGridWebhookVerification.new(@app, 'ABC', /\/email/)
15
+ Rack::SendGridWebhookVerification.new(@app, 'ABC', %r{/email})
16
16
  end.not_to raise_error
17
17
  end
18
18
 
19
19
  it 'should initialize with an app, public key and paths' do
20
20
  expect do
21
- Rack::SendGridWebhookVerification.new(@app, 'ABC', /\/email/, /\/event/)
21
+ Rack::SendGridWebhookVerification.new(@app, 'ABC', %r{/email}, %r{/event})
22
22
  end.not_to raise_error
23
23
  end
24
24
  end
25
25
 
26
26
  describe 'calling against one path' do
27
- let(:middleware) { Rack::SendGridWebhookVerification.new(@app, public_key, /\/email/) }
27
+ let(:middleware) { Rack::SendGridWebhookVerification.new(@app, public_key, %r{/email}) }
28
28
 
29
29
  it "should not intercept when the path doesn't match" do
30
30
  expect(SendGrid::EventWebhook).to_not receive(:new)
@@ -81,7 +81,7 @@ unless RUBY_PLATFORM == 'java'
81
81
  end
82
82
 
83
83
  describe 'calling with multiple paths' do
84
- let(:middleware) { Rack::SendGridWebhookVerification.new(@app, public_key, /\/email/, /\/events/) }
84
+ let(:middleware) { Rack::SendGridWebhookVerification.new(@app, public_key, %r{/email}, %r{/events}) }
85
85
 
86
86
  it "should not intercept when the path doesn't match" do
87
87
  expect(SendGrid::EventWebhook).to_not receive(:new)
@@ -112,5 +112,31 @@ unless RUBY_PLATFORM == 'java'
112
112
  expect(status).to eq(403)
113
113
  end
114
114
  end
115
+
116
+ describe 'request body which passed to an app' do
117
+ before do
118
+ @payload = nil
119
+ @spy_app = lambda do |env|
120
+ @payload = Rack::Request.new(env).body
121
+ [200, { 'Content-Type' => 'text/plain' }, ['Hello']]
122
+ end
123
+ end
124
+
125
+ let(:middleware) { Rack::SendGridWebhookVerification.new(@spy_app, public_key, %r{/email}) }
126
+
127
+ it 'keeps orignal reading position' do
128
+ options = {
129
+ :input => Fixtures::EventWebhook::PAYLOAD,
130
+ 'Content-Type' => "application/json"
131
+ }
132
+ options[SendGrid::EventWebhookHeader::SIGNATURE] = Fixtures::EventWebhook::SIGNATURE
133
+ options[SendGrid::EventWebhookHeader::TIMESTAMP] = Fixtures::EventWebhook::TIMESTAMP
134
+ request = Rack::MockRequest.env_for('/email', options)
135
+ status, headers, body = middleware.call(request)
136
+ expect(status).to eq(200)
137
+ expect(@payload).not_to be_nil
138
+ expect(@payload.pos).to be_zero
139
+ end
140
+ end
115
141
  end
116
142
  end
@@ -6,77 +6,79 @@ describe SendGrid::EventWebhook do
6
6
  it 'verifies a valid signature' do
7
7
  unless skip_jruby
8
8
  expect(verify(
9
- Fixtures::EventWebhook::PUBLIC_KEY,
10
- Fixtures::EventWebhook::PAYLOAD,
11
- Fixtures::EventWebhook::SIGNATURE,
12
- Fixtures::EventWebhook::TIMESTAMP
13
- )).to be true
9
+ Fixtures::EventWebhook::PUBLIC_KEY,
10
+ Fixtures::EventWebhook::PAYLOAD,
11
+ Fixtures::EventWebhook::SIGNATURE,
12
+ Fixtures::EventWebhook::TIMESTAMP
13
+ )).to be true
14
14
  end
15
15
  end
16
16
 
17
17
  it 'rejects a bad key' do
18
18
  unless skip_jruby
19
19
  expect(verify(
20
- Fixtures::EventWebhook::FAILING_PUBLIC_KEY,
21
- Fixtures::EventWebhook::PAYLOAD,
22
- Fixtures::EventWebhook::SIGNATURE,
23
- Fixtures::EventWebhook::TIMESTAMP
24
- )).to be false
20
+ Fixtures::EventWebhook::FAILING_PUBLIC_KEY,
21
+ Fixtures::EventWebhook::PAYLOAD,
22
+ Fixtures::EventWebhook::SIGNATURE,
23
+ Fixtures::EventWebhook::TIMESTAMP
24
+ )).to be false
25
25
  end
26
26
  end
27
27
 
28
28
  it 'rejects a bad payload' do
29
29
  unless skip_jruby
30
30
  expect(verify(
31
- Fixtures::EventWebhook::PUBLIC_KEY,
32
- 'payload',
33
- Fixtures::EventWebhook::SIGNATURE,
34
- Fixtures::EventWebhook::TIMESTAMP
35
- )).to be false
31
+ Fixtures::EventWebhook::PUBLIC_KEY,
32
+ 'payload',
33
+ Fixtures::EventWebhook::SIGNATURE,
34
+ Fixtures::EventWebhook::TIMESTAMP
35
+ )).to be false
36
36
  end
37
37
  end
38
38
 
39
39
  it 'rejects a bad signature' do
40
40
  unless skip_jruby
41
41
  expect(verify(
42
- Fixtures::EventWebhook::PUBLIC_KEY,
43
- Fixtures::EventWebhook::PAYLOAD,
44
- Fixtures::EventWebhook::FAILING_SIGNATURE,
45
- Fixtures::EventWebhook::TIMESTAMP
46
- )).to be false
42
+ Fixtures::EventWebhook::PUBLIC_KEY,
43
+ Fixtures::EventWebhook::PAYLOAD,
44
+ Fixtures::EventWebhook::FAILING_SIGNATURE,
45
+ Fixtures::EventWebhook::TIMESTAMP
46
+ )).to be false
47
47
  end
48
48
  end
49
49
 
50
50
  it 'rejects a bad timestamp' do
51
51
  unless skip_jruby
52
52
  expect(verify(
53
- Fixtures::EventWebhook::PUBLIC_KEY,
54
- Fixtures::EventWebhook::PAYLOAD,
55
- Fixtures::EventWebhook::SIGNATURE,
56
- 'timestamp'
57
- )).to be false
53
+ Fixtures::EventWebhook::PUBLIC_KEY,
54
+ Fixtures::EventWebhook::PAYLOAD,
55
+ Fixtures::EventWebhook::SIGNATURE,
56
+ 'timestamp'
57
+ )).to be false
58
58
  end
59
59
  end
60
60
 
61
61
  it 'rejects a missing signature' do
62
62
  unless skip_jruby
63
63
  expect(verify(
64
- Fixtures::EventWebhook::PUBLIC_KEY,
65
- Fixtures::EventWebhook::PAYLOAD,
66
- nil,
67
- Fixtures::EventWebhook::TIMESTAMP
68
- )).to be false
64
+ Fixtures::EventWebhook::PUBLIC_KEY,
65
+ Fixtures::EventWebhook::PAYLOAD,
66
+ nil,
67
+ Fixtures::EventWebhook::TIMESTAMP
68
+ )).to be false
69
69
  end
70
70
  end
71
71
 
72
72
  it 'throws an error when using jruby' do
73
73
  if skip_jruby
74
- expect{ verify(
75
- Fixtures::EventWebhook::PUBLIC_KEY,
76
- Fixtures::EventWebhook::PAYLOAD,
77
- Fixtures::EventWebhook::SIGNATURE,
78
- Fixtures::EventWebhook::TIMESTAMP
79
- )}.to raise_error(SendGrid::EventWebhook::NotSupportedError)
74
+ expect do
75
+ verify(
76
+ Fixtures::EventWebhook::PUBLIC_KEY,
77
+ Fixtures::EventWebhook::PAYLOAD,
78
+ Fixtures::EventWebhook::SIGNATURE,
79
+ Fixtures::EventWebhook::TIMESTAMP
80
+ )
81
+ end.to raise_error(SendGrid::EventWebhook::NotSupportedError)
80
82
  end
81
83
  end
82
84
  end
@@ -4,7 +4,7 @@ describe SendGrid::MailSettingsDto do
4
4
  let(:sendgrid_client) { SendGrid::API.new(api_key: 'fake_key').client }
5
5
  let(:mail_settings) { SendGrid::MailSettingsDto }
6
6
  let(:setting_name) { 'bcc' }
7
- let(:setting_params) { {email: Faker::Internet.email, enabled: rand(1..100).even?} }
7
+ let(:setting_params) { { email: Faker::Internet.email, enabled: rand(1..100).even? } }
8
8
 
9
9
  it { should respond_to :bcc }
10
10
  it { should respond_to :address_whitelist }
@@ -4,7 +4,7 @@ describe SendGrid::PartnerSettingsDto do
4
4
  let(:sendgrid_client) { SendGrid::API.new(api_key: 'fake_key').client }
5
5
  let(:partner_settings) { SendGrid::PartnerSettingsDto }
6
6
  let(:setting_name) { 'new_relic' }
7
- let(:setting_params) { {license_key: 'key', enabled: rand(1..100).even?} }
7
+ let(:setting_params) { { license_key: 'key', enabled: rand(1..100).even? } }
8
8
 
9
9
  it { should respond_to :new_relic }
10
10
 
@@ -18,8 +18,8 @@ describe SendGrid::Settings do
18
18
 
19
19
  describe '.update_bcc' do
20
20
  it 'updates bcc' do
21
- bcc_response = settings.update_bcc(enabled: true, email: "email@example.com")
21
+ bcc_response = settings.update_bcc(enabled: true, email: 'email@example.com')
22
22
  expect(bcc_response).to be_a SendGrid::Response
23
23
  end
24
24
  end
25
- end
25
+ end
@@ -4,7 +4,7 @@ describe SendGrid::TrackingSettingsDto do
4
4
  let(:sendgrid_client) { SendGrid::API.new(api_key: 'fake_key').client }
5
5
  let(:tracking_settings) { SendGrid::TrackingSettingsDto }
6
6
  let(:setting_name) { 'open_tracking' }
7
- let(:setting_params) { {enabled: rand(1..100).even?} }
7
+ let(:setting_params) { { enabled: rand(1..100).even? } }
8
8
 
9
9
  it { should respond_to :open_tracking }
10
10
  it { should respond_to :click_tracking }
@@ -4,7 +4,7 @@ describe SendGrid::UserSettingsDto do
4
4
  let(:sendgrid_client) { SendGrid::API.new(api_key: 'fake_key').client }
5
5
  let(:user_settings) { SendGrid::UserSettingsDto }
6
6
  let(:setting_name) { 'enforced_tls' }
7
- let(:setting_params) { {require_tls: rand(1..100).even?} }
7
+ let(:setting_params) { { require_tls: rand(1..100).even? } }
8
8
 
9
9
  it { should respond_to :enforced_tls }
10
10
 
@@ -7,37 +7,36 @@ describe SendGrid::EmailStats do
7
7
 
8
8
  let(:sample_response) do
9
9
  [{
10
- "date" => "2017-10-01",
11
- "stats" => [
12
- {"metrics" =>
10
+ 'date' => '2017-10-01',
11
+ 'stats' => [
12
+ { 'metrics' =>
13
13
  {
14
- "blocks" => 101,
15
- "bounce_drops" => 102,
16
- "bounces" => 103,
17
- "clicks" => 104,
18
- "deferred" => 105,
19
- "delivered" => 106,
20
- "invalid_emails" => 107,
21
- "opens" => 108,
22
- "processed" => 109,
23
- "requests" => 110,
24
- "spam_report_drops" => 111,
25
- "spam_reports" => 112,
26
- "unique_clicks" => 113,
27
- "unique_opens" => 114,
28
- "unsubscribe_drops" => 115,
29
- "unsubscribes" => 116
30
- }
31
- }
14
+ 'blocks' => 101,
15
+ 'bounce_drops' => 102,
16
+ 'bounces' => 103,
17
+ 'clicks' => 104,
18
+ 'deferred' => 105,
19
+ 'delivered' => 106,
20
+ 'invalid_emails' => 107,
21
+ 'opens' => 108,
22
+ 'processed' => 109,
23
+ 'requests' => 110,
24
+ 'spam_report_drops' => 111,
25
+ 'spam_reports' => 112,
26
+ 'unique_clicks' => 113,
27
+ 'unique_opens' => 114,
28
+ 'unsubscribe_drops' => 115,
29
+ 'unsubscribes' => 116
30
+ } }
32
31
  ]
33
32
  }]
34
33
  end
35
34
 
36
35
  let(:error_response) do
37
36
  {
38
- "errors" => [
37
+ 'errors' => [
39
38
  {
40
- "message" => "end_date should be a YYYY-MM-DD formatted date"
39
+ 'message' => 'end_date should be a YYYY-MM-DD formatted date'
41
40
  }
42
41
  ]
43
42
  }
@@ -3,23 +3,23 @@ require 'spec_helper'
3
3
  describe SendGrid::Metrics do
4
4
  let(:params) do
5
5
  {
6
- "date" => "2017-10-01",
7
- "blocks" => 101,
8
- "bounce_drops" => 102,
9
- "bounces" => 103,
10
- "clicks" => 104,
11
- "deferred" => 105,
12
- "delivered" => 106,
13
- "invalid_emails" => 107,
14
- "opens" => 108,
15
- "processed" => 109,
16
- "requests" => 110,
17
- "spam_report_drops" => 111,
18
- "spam_reports" => 112,
19
- "unique_clicks" => 113,
20
- "unique_opens" => 114,
21
- "unsubscribe_drops" => 115,
22
- "unsubscribes" => 116
6
+ 'date' => '2017-10-01',
7
+ 'blocks' => 101,
8
+ 'bounce_drops' => 102,
9
+ 'bounces' => 103,
10
+ 'clicks' => 104,
11
+ 'deferred' => 105,
12
+ 'delivered' => 106,
13
+ 'invalid_emails' => 107,
14
+ 'opens' => 108,
15
+ 'processed' => 109,
16
+ 'requests' => 110,
17
+ 'spam_report_drops' => 111,
18
+ 'spam_reports' => 112,
19
+ 'unique_clicks' => 113,
20
+ 'unique_opens' => 114,
21
+ 'unsubscribe_drops' => 115,
22
+ 'unsubscribes' => 116
23
23
  }
24
24
  end
25
25
 
@@ -33,14 +33,13 @@ describe SendGrid::Metrics do
33
33
  expect(subject.date).to be_a Date
34
34
  end
35
35
 
36
- %w(
36
+ %w[
37
37
  blocks bounce_drops bounces clicks deferred delivered invalid_emails
38
38
  opens processed requests spam_report_drops spam_reports unique_clicks
39
39
  unique_opens unsubscribe_drops unsubscribes
40
- ).each do |attribute|
40
+ ].each do |attribute|
41
41
  it "responds to #{attribute}" do
42
42
  expect(subject).to respond_to(attribute.to_sym)
43
43
  end
44
44
  end
45
-
46
45
  end