sendgrid-ruby 6.3.8 → 6.3.9

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 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