sendgrid-ruby 6.3.8 → 6.3.9

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 231e75f3472085398e06a26224f22343ef40adc73f9f122dbfd821673f4c0dac
4
- data.tar.gz: 57528772f441e47a8daa7b0f334302ed4f7f65576c6e4de35a4eec6530786a4c
3
+ metadata.gz: bf21bd306727e384a838c428f07f5866f9108ab03f41160b8dfe429d3116537b
4
+ data.tar.gz: b73d7dfbb09c9d817096762a882e85e1eeb77bd2abd3397d45923fcf4f81b4cc
5
5
  SHA512:
6
- metadata.gz: 6260ae36de0b84530c0b981d4c741e9329ecbdbfe488507a9e8c20d9a5ed1096a1b1f2b364d8b2be0280b0c7cbcdd8b531897d5306744dc60b9a39b505b5c713
7
- data.tar.gz: 1844bf3d5888b0dd6239cd9c426ac749bfdc8b9736459ba45caced4d79f77a69a8ab756e1bb7191cc9b1cd96849bf4ce53d5d8ac31a1d890d757497f1ace7b2b
6
+ metadata.gz: 52f3285d9ff1f54c4fd46372118de4847fb7508e8c28720362d66aebde5f67decb780a51a9fdaa295d4a67c38bae70ae484ab17ec53e80b38aa8a614de7a0083
7
+ data.tar.gz: 21b3545263c927498194e31f628d91ded1d6ba39da5e81865a3368729a804338be697f6cb9ca9c89ddeb0dcebca7635b4c8a1a7c99516cf3b8c4425c2bca8688
@@ -1,6 +1,13 @@
1
1
  # Change Log
2
2
  All notable changes to this project will be documented in this file.
3
3
 
4
+ [2021-01-27] Version 6.3.9
5
+ --------------------------
6
+ **Library - Fix**
7
+ - [PR #446](https://github.com/sendgrid/sendgrid-ruby/pull/446): Accurate duplicate checking when adding email to Personalizations. Thanks to [@mito5525](https://github.com/mito5525)!
8
+ - [PR #457](https://github.com/sendgrid/sendgrid-ruby/pull/457): email is required. Thanks to [@luk4s](https://github.com/luk4s)!
9
+
10
+
4
11
  [2020-12-16] Version 6.3.8
5
12
  --------------------------
6
13
  **Library - Fix**
data/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (C) 2020, Twilio SendGrid, Inc. <help@twilio.com>
3
+ Copyright (C) 2021, Twilio SendGrid, Inc. <help@twilio.com>
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy of
6
6
  this software and associated documentation files (the "Software"), to deal in
@@ -4,7 +4,9 @@ module SendGrid
4
4
  class Email
5
5
  attr_accessor :email, :name
6
6
 
7
- def initialize(email: nil, name: nil)
7
+ # @param [String] email required e-mail address
8
+ # @param [String] name optionally personification
9
+ def initialize(email:, name: nil)
8
10
  if name
9
11
  @email = email
10
12
  @name = name
@@ -15,6 +17,8 @@ module SendGrid
15
17
 
16
18
  def split_email(email)
17
19
  split = /(?:(?<address>.+)\s)?<?(?<email>.+@[^>]+)>?/.match(email)
20
+ raise ArgumentError, "email (#{email}) is invalid" unless split
21
+
18
22
  [split[:email], split[:address]]
19
23
  end
20
24
 
@@ -76,7 +76,7 @@ module SendGrid
76
76
  additional_email = addition.email.downcase
77
77
 
78
78
  [@tos, @ccs, @bccs].flatten.each do |elm|
79
- return true if elm&.dig('email') == additional_email
79
+ return true if elm&.dig('email')&.downcase == additional_email
80
80
  end
81
81
 
82
82
  false
@@ -1,3 +1,3 @@
1
1
  module SendGrid
2
- VERSION = '6.3.8'.freeze
2
+ VERSION = '6.3.9'.freeze
3
3
  end
@@ -29,4 +29,13 @@ class TestEmail < Minitest::Test
29
29
  }
30
30
  assert_equal @email.to_json, expected_json
31
31
  end
32
+
33
+ def test_mandatory_email_missing
34
+ assert_raises(ArgumentError) { Email.new(email: nil) }
35
+ assert_raises(ArgumentError) { Email.new(email: "") }
36
+ end
37
+
38
+ def test_invalid_email
39
+ assert_raises(ArgumentError) { Email.new(email: "some-invalid-string") }
40
+ end
32
41
  end
@@ -26,6 +26,7 @@ class TestPersonalization < Minitest::Test
26
26
  def test_duplicate_add_to
27
27
  @personalization = Personalization.new
28
28
  @personalization.add_to(Email.new(email: 'test1@example.com', name: 'Example User'))
29
+ @personalization.add_to(Email.new(email: 'TEST2@EXAMPLE.COM', name: 'Example User 2'))
29
30
 
30
31
  assert_raises(DuplicatePersonalizationError) do
31
32
  @personalization.add_to(Email.new(email: 'test1@example.com', name: 'Duplicate User'))
@@ -34,6 +35,14 @@ class TestPersonalization < Minitest::Test
34
35
  assert_raises(DuplicatePersonalizationError) do
35
36
  @personalization.add_to(Email.new(email: 'TEST1@EXAMPLE.COM', name: 'Duplicate User'))
36
37
  end
38
+
39
+ assert_raises(DuplicatePersonalizationError) do
40
+ @personalization.add_to(Email.new(email: 'test2@example.com', name: 'Duplicate User 2'))
41
+ end
42
+
43
+ assert_raises(DuplicatePersonalizationError) do
44
+ @personalization.add_to(Email.new(email: 'TEST2@EXAMPLE.COM', name: 'Duplicate User 2'))
45
+ end
37
46
  end
38
47
 
39
48
  def test_add_cc
@@ -58,6 +67,7 @@ class TestPersonalization < Minitest::Test
58
67
  def test_duplicate_add_cc
59
68
  @personalization = Personalization.new
60
69
  @personalization.add_cc(Email.new(email: 'test1@example.com', name: 'Example User'))
70
+ @personalization.add_cc(Email.new(email: 'TEST2@EXAMPLE.COM', name: 'Example User 2'))
61
71
 
62
72
  assert_raises(DuplicatePersonalizationError) do
63
73
  @personalization.add_cc(Email.new(email: 'test1@example.com', name: 'Duplicate User'))
@@ -66,6 +76,14 @@ class TestPersonalization < Minitest::Test
66
76
  assert_raises(DuplicatePersonalizationError) do
67
77
  @personalization.add_cc(Email.new(email: 'TEST1@EXAMPLE.COM', name: 'Duplicate User'))
68
78
  end
79
+
80
+ assert_raises(DuplicatePersonalizationError) do
81
+ @personalization.add_cc(Email.new(email: 'test2@example.com', name: 'Duplicate User 2'))
82
+ end
83
+
84
+ assert_raises(DuplicatePersonalizationError) do
85
+ @personalization.add_cc(Email.new(email: 'TEST2@EXAMPLE.COM', name: 'Duplicate User 2'))
86
+ end
69
87
  end
70
88
 
71
89
  def test_add_bcc
@@ -90,6 +108,7 @@ class TestPersonalization < Minitest::Test
90
108
  def test_duplicate_add_bcc
91
109
  @personalization = Personalization.new
92
110
  @personalization.add_bcc(Email.new(email: 'test1@example.com', name: 'Example User'))
111
+ @personalization.add_bcc(Email.new(email: 'TEST2@EXAMPLE.COM', name: 'Example User 2'))
93
112
 
94
113
  assert_raises(DuplicatePersonalizationError) do
95
114
  @personalization.add_bcc(Email.new(email: 'test1@example.com', name: 'Duplicate User'))
@@ -98,6 +117,14 @@ class TestPersonalization < Minitest::Test
98
117
  assert_raises(DuplicatePersonalizationError) do
99
118
  @personalization.add_bcc(Email.new(email: 'TEST1@EXAMPLE.COM', name: 'Duplicate User'))
100
119
  end
120
+
121
+ assert_raises(DuplicatePersonalizationError) do
122
+ @personalization.add_bcc(Email.new(email: 'test2@example.com', name: 'Duplicate User 2'))
123
+ end
124
+
125
+ assert_raises(DuplicatePersonalizationError) do
126
+ @personalization.add_bcc(Email.new(email: 'TEST2@EXAMPLE.COM', name: 'Duplicate User 2'))
127
+ end
101
128
  end
102
129
 
103
130
  def test_add_header
@@ -33,7 +33,7 @@ class TestAPI < MiniTest::Test
33
33
  assert_equal(test_headers, sg.request_headers)
34
34
  assert_equal('v3', sg.version)
35
35
  assert_equal(subuser, sg.impersonate_subuser)
36
- assert_equal('6.3.8', SendGrid::VERSION)
36
+ assert_equal('6.3.9', SendGrid::VERSION)
37
37
  assert_instance_of(SendGrid::Client, sg.client)
38
38
  end
39
39
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sendgrid-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 6.3.8
4
+ version: 6.3.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Elmer Thomas
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2020-12-16 00:00:00.000000000 Z
13
+ date: 2021-01-27 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: ruby_http_client