sendgrid4r 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,42 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.unshift File.dirname(__FILE__)
3
+
4
+ require "rest-client"
5
+ require "uri"
6
+ require "json"
7
+
8
+ module SendGrid4r
9
+ module REST
10
+ module Request
11
+
12
+ def get(auth, endpoint)
13
+ resource = RestClient::Resource.new(endpoint, auth.get_username, auth.get_password)
14
+ body = resource.get.body
15
+ JSON.parse(body)
16
+ end
17
+
18
+ def post(auth, endpoint, params = nil)
19
+ resource = RestClient::Resource.new(endpoint, auth.get_username, auth.get_password)
20
+ if params == nil
21
+ body = resource.post(:content_type => :json).body
22
+ else
23
+ body = resource.post(params.to_json, :content_type => :json).body
24
+ end
25
+ JSON.parse(body)
26
+ end
27
+
28
+ def patch(auth, endpoint, params)
29
+ resource = RestClient::Resource.new(endpoint, auth.get_username, auth.get_password)
30
+ body = resource.patch(params.to_json, :content_type => :json).body
31
+ JSON.parse(body)
32
+ end
33
+
34
+ def delete(auth, endpoint)
35
+ resource = RestClient::Resource.new(endpoint, auth.get_username, auth.get_password)
36
+ resource.delete
37
+ end
38
+
39
+ end
40
+
41
+ end
42
+ end
@@ -0,0 +1,58 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.unshift File.dirname(__FILE__)
3
+
4
+ require "sendgrid4r/rest/request"
5
+
6
+ module SendGrid4r
7
+ module REST
8
+ module Asm
9
+ module Suppressions
10
+
11
+ include SendGrid4r::REST::Request
12
+
13
+ def get_suppressions(email_address)
14
+ response = get(@auth, "#{SendGrid4r::Client::BASE_URL}/asm/suppressions/#{email_address}")
15
+ suppressions = Array.new
16
+ response["suppressions"].each{|spr|
17
+ suppression = Suppression.create(spr)
18
+ suppressions.push(suppression)
19
+ } if response["suppressions"] != nil
20
+ suppressions
21
+ end
22
+
23
+ def get_suppressed_emails(group_id)
24
+ get(@auth, "#{SendGrid4r::Client::BASE_URL}/asm/groups/#{group_id}/suppressions")
25
+ end
26
+
27
+ def post_suppressed_emails(group_id, recipient_emails)
28
+ params = Hash.new
29
+ params["recipient_emails"] = recipient_emails
30
+ response = post(@auth, "#{SendGrid4r::Client::BASE_URL}/asm/groups/#{group_id}/suppressions", params.to_hash)
31
+ recipient_emails = response["recipient_emails"]
32
+ recipient_emails
33
+ end
34
+
35
+ def delete_suppressed_email(group_id, email_address)
36
+ delete(@auth, "#{SendGrid4r::Client::BASE_URL}/asm/groups/#{group_id}/suppressions/#{email_address}")
37
+ end
38
+
39
+ class Suppression
40
+
41
+ attr_accessor :id, :name, :description, :suppressed
42
+
43
+ def self.create(value)
44
+ obj = Suppression.new
45
+ obj.id = value["id"]
46
+ obj.name = value["name"]
47
+ obj.description = value["description"]
48
+ obj.suppressed = value["suppressed"]
49
+ obj
50
+ end
51
+
52
+ end
53
+
54
+ end
55
+ end
56
+
57
+ end
58
+ end
@@ -0,0 +1,64 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.unshift File.dirname(__FILE__)
3
+
4
+ require "sendgrid4r/rest/request"
5
+
6
+ require "versions"
7
+
8
+ module SendGrid4r
9
+ module REST
10
+ module Templates
11
+
12
+ include SendGrid4r::REST::Request
13
+
14
+ def get_templates
15
+ response = get(@auth, "#{SendGrid4r::Client::BASE_URL}/templates")
16
+ tmps = Array.new
17
+ response["templates"].each{|template|
18
+ tmp = Template.create(template)
19
+ tmps.push(tmp)
20
+ } if response["templates"] != nil
21
+ tmps
22
+ end
23
+
24
+ def get_template(template_id)
25
+ Template.create(get(@auth, "#{SendGrid4r::Client::BASE_URL}/templates/#{template_id}"))
26
+ end
27
+
28
+ def post_template(name)
29
+ params = Hash.new
30
+ params["name"] = name
31
+ Template.create(post(@auth, "#{SendGrid4r::Client::BASE_URL}/templates", params))
32
+ end
33
+
34
+ def patch_template(template_id, name)
35
+ params = Hash.new
36
+ params["name"] = name
37
+ Template.create(patch(@auth, "#{SendGrid4r::Client::BASE_URL}/templates/#{template_id}", params))
38
+ end
39
+
40
+ def delete_template(template_id)
41
+ delete(@auth, "#{SendGrid4r::Client::BASE_URL}/templates/#{template_id}")
42
+ end
43
+
44
+ class Template
45
+
46
+ attr_accessor :id, :name, :versions
47
+
48
+ def self.create(value)
49
+ obj = Template.new
50
+ obj.id = value["id"]
51
+ obj.name = value["name"]
52
+ obj.versions = []
53
+ value["versions"].each{|version|
54
+ ver = Version.create(version)
55
+ obj.versions.push(ver)
56
+ }
57
+ obj
58
+ end
59
+
60
+ end
61
+ end
62
+
63
+ end
64
+ end
@@ -0,0 +1,66 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.unshift File.dirname(__FILE__)
3
+
4
+ require "sendgrid4r/rest/request"
5
+
6
+ module SendGrid4r
7
+ module REST
8
+ module Templates
9
+ module Versions
10
+
11
+ include SendGrid4r::REST::Request
12
+
13
+ def get_version(template_id, version_id)
14
+ Version.create(get(@auth, "#{SendGrid4r::Client::BASE_URL}/templates/#{template_id}/versions/#{version_id}"))
15
+ end
16
+
17
+ def post_version(template_id, version)
18
+ Version.create(post(@auth, "#{SendGrid4r::Client::BASE_URL}/templates/#{template_id}/versions", version.to_hash))
19
+ end
20
+
21
+ def activate_version(template_id, version_id)
22
+ Version.create(post(@auth, "#{SendGrid4r::Client::BASE_URL}/templates/#{template_id}/versions/#{version_id}/activate"))
23
+ end
24
+
25
+ def patch_version(template_id, version_id, version)
26
+ Version.create(patch(@auth, "#{SendGrid4r::Client::BASE_URL}/templates/#{template_id}/versions/#{version_id}", version.to_hash))
27
+ end
28
+
29
+ def delete_version(template_id, version_id)
30
+ delete(@auth, "#{SendGrid4r::Client::BASE_URL}/templates/#{template_id}/versions/#{version_id}")
31
+ end
32
+
33
+ end
34
+
35
+ class Version
36
+
37
+ attr_accessor :id, :template_id, :active, :name, :html_content, :plain_content, :subject, :updated_at
38
+
39
+ def self.create(value)
40
+ obj = Version.new
41
+ obj.id = value["id"]
42
+ obj.template_id = value["template_id"]
43
+ obj.active = value["active"]
44
+ obj.name = value["name"]
45
+ obj.html_content = value["html_content"]
46
+ obj.plain_content = value["plain_content"]
47
+ obj.subject = value["subject"]
48
+ obj.updated_at = value["updated_at"]
49
+ obj
50
+ end
51
+
52
+ def to_hash
53
+ hash = {
54
+ "active" => @active,
55
+ "name" => @name,
56
+ "html_content" => @html_content,
57
+ "plain_content" => @plain_content,
58
+ "subject" => @subject,
59
+ }
60
+ hash
61
+ end
62
+
63
+ end
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,53 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.unshift File.dirname(__FILE__)
3
+
4
+ require "sendgrid4r/rest/request"
5
+
6
+ module SendGrid4r
7
+ module REST
8
+ module Ips
9
+ module Warmup
10
+
11
+ include SendGrid4r::REST::Request
12
+
13
+ def get_warmup_ips
14
+ response = get(@auth, "#{SendGrid4r::Client::BASE_URL}/ips/warmup")
15
+ ips = Array.new
16
+ response.each{|ip|
17
+ ip_address = WarmupIp.create(ip)
18
+ ips.push(ip_address)
19
+ } if response.length > 0
20
+ ips
21
+ end
22
+
23
+ def get_warmup_ip(ip_address)
24
+ WarmupIp.create(get(@auth, "#{SendGrid4r::Client::BASE_URL}/ips/warmup/#{ip_address}"))
25
+ end
26
+
27
+ def post_warmup_ip(ip_address)
28
+ params = Hash.new
29
+ params["ip"] = ip_address
30
+ WarmupIp.create(post(@auth, "#{SendGrid4r::Client::BASE_URL}/ips/warmup", params))
31
+ end
32
+
33
+ def delete_warmup_ip(ip_address)
34
+ delete(@auth, "#{SendGrid4r::Client::BASE_URL}/ips/warmup/#{ip_address}")
35
+ end
36
+
37
+ class WarmupIp
38
+
39
+ attr_accessor :ip, :start_date
40
+
41
+ def self.create(value)
42
+ obj = WarmupIp.new
43
+ obj.ip = value["ip"]
44
+ obj.start_date = value["start_date"]
45
+ obj
46
+ end
47
+
48
+ end
49
+ end
50
+ end
51
+
52
+ end
53
+ end
@@ -0,0 +1,3 @@
1
+ module SendGrid4r
2
+ VERSION = "0.0.2"
3
+ end
data/lib/sendgrid4r.rb ADDED
@@ -0,0 +1,2 @@
1
+ require "client"
2
+ require "sendgrid4r/version"
@@ -0,0 +1,25 @@
1
+ # coding: utf-8
2
+ src = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(src) unless $LOAD_PATH.include?(src)
4
+ require 'sendgrid4r/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "sendgrid4r"
8
+ spec.version = SendGrid4r::VERSION
9
+ spec.authors = ["awwa500@gmail.com"]
10
+ spec.email = ["awwa500@gmail.com"]
11
+ spec.summary = "SendGrid Web API v3 module"
12
+ spec.description = "SendGrid Web API v3 module"
13
+ spec.homepage = ""
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files -z`.split("\x0")
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_dependency "rest-client"
22
+ spec.add_development_dependency "bundler", "~> 1.6"
23
+ spec.add_development_dependency "rspec"
24
+ spec.add_development_dependency "dotenv"
25
+ end
@@ -0,0 +1,68 @@
1
+ # encoding: utf-8
2
+ require File.dirname(__FILE__) + '/spec_helper'
3
+
4
+ describe "SendGrid4r::Client" do
5
+
6
+ before :all do
7
+ Dotenv.load
8
+ end
9
+
10
+ describe "initialize" do
11
+ it "create instance" do
12
+ SendGrid4r::Client.new("username", "password")
13
+ end
14
+ end
15
+
16
+ describe "available method" do
17
+ it "is exist method" do
18
+
19
+ client = SendGrid4r::Client.new(ENV["SENDGRID_USERNAME"], ENV["SENDGRID_PASSWORD"])
20
+ # enforced_tls
21
+ expect(client.respond_to?("get_enforced_tls")).to eq(true)
22
+ expect(client.respond_to?("patch_enforced_tls")).to eq(true)
23
+ # global suppressions
24
+ expect(client.respond_to?("post_global_suppressed_emails")).to eq(true)
25
+ expect(client.respond_to?("get_global_suppressed_email")).to eq(true)
26
+ expect(client.respond_to?("delete_global_suppressed_email")).to eq(true)
27
+ # groups
28
+ expect(client.respond_to?("get_groups")).to eq(true)
29
+ expect(client.respond_to?("get_group")).to eq(true)
30
+ expect(client.respond_to?("post_group")).to eq(true)
31
+ expect(client.respond_to?("patch_group")).to eq(true)
32
+ expect(client.respond_to?("delete_group")).to eq(true)
33
+ # ip addresses
34
+ expect(client.respond_to?("get_ips")).to eq(true)
35
+ # suppressions
36
+ expect(client.respond_to?("get_suppressions")).to eq(true)
37
+ expect(client.respond_to?("get_suppressed_emails")).to eq(true)
38
+ expect(client.respond_to?("post_suppressed_emails")).to eq(true)
39
+ expect(client.respond_to?("delete_suppressed_email")).to eq(true)
40
+ # templates
41
+ expect(client.respond_to?("get_templates")).to eq(true)
42
+ expect(client.respond_to?("get_template")).to eq(true)
43
+ expect(client.respond_to?("post_template")).to eq(true)
44
+ expect(client.respond_to?("patch_template")).to eq(true)
45
+ expect(client.respond_to?("delete_template")).to eq(true)
46
+ # versions
47
+ expect(client.respond_to?("get_version")).to eq(true)
48
+ expect(client.respond_to?("post_version")).to eq(true)
49
+ expect(client.respond_to?("activate_version")).to eq(true)
50
+ expect(client.respond_to?("patch_version")).to eq(true)
51
+ expect(client.respond_to?("delete_version")).to eq(true)
52
+ # warmup
53
+ expect(client.respond_to?("get_warmup_ips")).to eq(true)
54
+ expect(client.respond_to?("get_warmup_ip")).to eq(true)
55
+ expect(client.respond_to?("post_warmup_ip")).to eq(true)
56
+ expect(client.respond_to?("delete_warmup_ip")).to eq(true)
57
+ end
58
+ end
59
+
60
+ describe "Version" do
61
+
62
+ it "Validate version" do
63
+ expect(SendGrid4r::VERSION).to eq("0.0.2")
64
+ end
65
+
66
+ end
67
+
68
+ end
@@ -0,0 +1,38 @@
1
+ # encoding: utf-8
2
+ require File.dirname(__FILE__) + '/spec_helper'
3
+
4
+ describe "SendGrid4r::REST::Settings::EnforcedTls" do
5
+
6
+ before :all do
7
+ Dotenv.load
8
+ end
9
+
10
+ context "normal" do
11
+ it "is normal" do
12
+
13
+ begin
14
+ client = SendGrid4r::Client.new(ENV["SENDGRID_USERNAME"], ENV["SENDGRID_PASSWORD"])
15
+ # get original enforced_tls settings
16
+ original = client.get_enforced_tls
17
+ # patch a value
18
+ edit_params = original.dup
19
+ edit_params.require_tls = true
20
+ actual_params = client.patch_enforced_tls(edit_params)
21
+ expect(actual_params.require_tls).to eq(edit_params.require_tls)
22
+ # patch both value
23
+ edit_params.require_tls = false
24
+ edit_params.require_valid_cert = false
25
+ actual_params = client.patch_enforced_tls(edit_params)
26
+ expect(actual_params.require_tls).to eq(edit_params.require_tls)
27
+ expect(actual_params.require_valid_cert).to eq(edit_params.require_valid_cert)
28
+ # revert
29
+ client.patch_enforced_tls(original)
30
+ rescue => ex
31
+ puts ex.inspect
32
+ raise ex
33
+ end
34
+
35
+ end
36
+ end
37
+
38
+ end
@@ -0,0 +1,49 @@
1
+ # encoding: utf-8
2
+ require File.dirname(__FILE__) + '/spec_helper'
3
+
4
+ describe "SendGrid4r::REST::Asm::GlobalSuppressions" do
5
+
6
+ before :all do
7
+ Dotenv.load
8
+ @email1 = "test1@test.com"
9
+ @email2 = "test2@test.com"
10
+ @email3 = "test3@test.com"
11
+ end
12
+
13
+ context "normal" do
14
+ it "is normal" do
15
+
16
+ begin
17
+ client = SendGrid4r::Client.new(ENV["SENDGRID_USERNAME"], ENV["SENDGRID_PASSWORD"])
18
+ # celan up test env
19
+ client.delete_global_suppressed_email(@email1)
20
+ client.delete_global_suppressed_email(@email2)
21
+ client.delete_global_suppressed_email(@email3)
22
+ # post recipient emails to the global suppression group
23
+ suppressed_emails = client.post_global_suppressed_emails([@email1, @email2, @email3])
24
+ expect(suppressed_emails.length).to eq(3)
25
+ expect(suppressed_emails[0]).to eq(@email1)
26
+ expect(suppressed_emails[1]).to eq(@email2)
27
+ expect(suppressed_emails[2]).to eq(@email3)
28
+ # get the recipient emails
29
+ actual_email1 = client.get_global_suppressed_email(@email1)
30
+ actual_email2 = client.get_global_suppressed_email(@email2)
31
+ actual_email3 = client.get_global_suppressed_email(@email3)
32
+ actual_notexist = client.get_global_suppressed_email("notexist")
33
+ expect(actual_email1).to eq(@email1)
34
+ expect(actual_email2).to eq(@email2)
35
+ expect(actual_email3).to eq(@email3)
36
+ expect(actual_notexist).to eq(nil)
37
+ # delete the suppressed email
38
+ expect(client.delete_global_suppressed_email(@email1)).to eq("")
39
+ expect(client.delete_global_suppressed_email(@email2)).to eq("")
40
+ expect(client.delete_global_suppressed_email(@email3)).to eq("")
41
+ rescue => ex
42
+ puts ex.inspect
43
+ raise ex
44
+ end
45
+
46
+ end
47
+ end
48
+
49
+ end
@@ -0,0 +1,63 @@
1
+ # encoding: utf-8
2
+ require File.dirname(__FILE__) + '/spec_helper'
3
+
4
+ describe "SendGrid4r::REST::Asm::Groups" do
5
+
6
+ before :all do
7
+ Dotenv.load
8
+ @group_name = "group_test"
9
+ @group_edit = "group_edit"
10
+ @group_desc = "group_desc"
11
+ @group_desc_edit = "group_desc_edit"
12
+ end
13
+
14
+ context "normal" do
15
+ it "is normal" do
16
+
17
+ begin
18
+ client = SendGrid4r::Client.new(ENV["SENDGRID_USERNAME"], ENV["SENDGRID_PASSWORD"])
19
+ # celan up test env
20
+ grps = client.get_groups
21
+ expect(grps.length >= 0).to eq(true)
22
+ grps.each{|grp|
23
+ if grp.name == @group_name || grp.name == @group_edit then
24
+ client.delete_group(grp.id)
25
+ end
26
+ }
27
+ # post a group
28
+ new_group = client.post_group(@group_name, @group_desc)
29
+ expect(@group_name).to eq(new_group.name)
30
+ expect(@group_desc).to eq(new_group.description)
31
+ # pach the group
32
+ new_group.name = @group_edit
33
+ new_group.description = @group_desc_edit
34
+ client.patch_group(new_group.id, new_group)
35
+ # get the group
36
+ edit_group = client.get_group(new_group.id)
37
+ expect(edit_group.respond_to?("id")).to eq(true)
38
+ expect(edit_group.respond_to?("name")).to eq(true)
39
+ expect(edit_group.respond_to?("description")).to eq(true)
40
+ expect(edit_group.respond_to?("last_email_sent_at")).to eq(true)
41
+ expect(edit_group.respond_to?("unsubscribes")).to eq(true)
42
+ expect(new_group.id).to eq(edit_group.id)
43
+ expect(@group_edit).to eq(edit_group.name)
44
+ expect(@group_desc_edit).to eq(edit_group.description)
45
+ # delete the group
46
+ client.delete_group(edit_group.id)
47
+ expect{client.get_group(edit_group.id)}.to raise_error(RestClient::ResourceNotFound)
48
+ rescue => ex
49
+ puts ex.inspect
50
+ raise ex
51
+ end
52
+
53
+ end
54
+ end
55
+
56
+ context "abnormal" do
57
+ it "raise resource not found for none existance id" do
58
+ client = SendGrid4r::Client.new(ENV["SENDGRID_USERNAME"], ENV["SENDGRID_PASSWORD"])
59
+ expect{client.get_group("notexistid")}.to raise_error(RestClient::ResourceNotFound)
60
+ end
61
+ end
62
+
63
+ end
@@ -0,0 +1,25 @@
1
+ # encoding: utf-8
2
+ require File.dirname(__FILE__) + '/spec_helper'
3
+
4
+ describe "SendGrid4r::REST::Ips::IpAddresses" do
5
+
6
+ before :all do
7
+ Dotenv.load
8
+ end
9
+
10
+ context "normal" do
11
+ it "is normal" do
12
+
13
+ begin
14
+ client = SendGrid4r::Client.new(ENV["SENDGRID_USERNAME"], ENV["SENDGRID_PASSWORD"])
15
+ # get the ips
16
+ expect{client.get_ips}.to raise_error(RestClient::Forbidden)
17
+ rescue => ex
18
+ puts ex.inspect
19
+ raise ex
20
+ end
21
+
22
+ end
23
+ end
24
+
25
+ end
@@ -0,0 +1,5 @@
1
+ require File.join(File.dirname(__FILE__), '../lib', 'sendgrid4r.rb')
2
+
3
+ require 'rubygems'
4
+ require 'rspec'
5
+ require 'dotenv'
@@ -0,0 +1,75 @@
1
+ # encoding: utf-8
2
+ require File.dirname(__FILE__) + '/spec_helper'
3
+
4
+ describe "SendGrid4r::REST::Asm::Groups::Suppressions" do
5
+
6
+ before :all do
7
+ Dotenv.load
8
+ @group_name = "suppressions_test"
9
+ @email1 = "test1@test.com"
10
+ @email2 = "test2@test.com"
11
+ @email3 = "test3@test.com"
12
+
13
+ @group_desc = "group_desc"
14
+ end
15
+
16
+ context "normal" do
17
+ it "is normal" do
18
+
19
+ begin
20
+ client = SendGrid4r::Client.new(ENV["SENDGRID_USERNAME"], ENV["SENDGRID_PASSWORD"])
21
+ # celan up test env
22
+ grps = client.get_groups
23
+ expect(grps.length >= 0).to eq(true)
24
+ grps.each{|grp|
25
+ if grp.name == @group_name then
26
+ emails = client.get_suppressed_emails(grp.id)
27
+ emails.each{|email|
28
+ client.delete_suppressed_email(grp.id, email)
29
+ }
30
+ client.delete_group(grp.id)
31
+ end
32
+ }
33
+ # post a group
34
+ new_group = client.post_group(@group_name, @group_desc)
35
+ # post recipient emails to the suppression group
36
+ suppressed_emails = client.post_suppressed_emails(new_group.id, [@email1, @email2, @email3])
37
+ expect(suppressed_emails.length).to eq(3)
38
+ expect(suppressed_emails[0]).to eq(@email1)
39
+ expect(suppressed_emails[1]).to eq(@email2)
40
+ expect(suppressed_emails[2]).to eq(@email3)
41
+ # get the suppressions
42
+ suppressions = client.get_suppressions(@email1)
43
+ expect(suppressions.length).to eq(1)
44
+ expect(suppressions[0].name).to eq(@group_name)
45
+ expect(suppressions[0].description).to eq(@group_desc)
46
+ expect(suppressions[0].suppressed).to eq(true)
47
+ # get the recipient emails
48
+ actual_emails = client.get_suppressed_emails(new_group.id)
49
+ expect(actual_emails.length).to eq(suppressed_emails.length)
50
+ expect(actual_emails[0]).to eq(suppressed_emails[0])
51
+ expect(actual_emails[1]).to eq(suppressed_emails[1])
52
+ expect(actual_emails[2]).to eq(suppressed_emails[2])
53
+ # delete the suppressed email
54
+ client.delete_suppressed_email(new_group.id, @email1)
55
+ client.delete_suppressed_email(new_group.id, @email2)
56
+ client.delete_suppressed_email(new_group.id, @email3)
57
+ # delete the group
58
+ client.delete_group(new_group.id)
59
+ expect{client.get_group(new_group.id)}.to raise_error(RestClient::ResourceNotFound)
60
+ rescue => ex
61
+ puts ex.inspect
62
+ raise ex
63
+ end
64
+
65
+ end
66
+ end
67
+
68
+ context "abnormal" do
69
+ it "raise resource not found for none existance id" do
70
+ client = SendGrid4r::Client.new(ENV["SENDGRID_USERNAME"], ENV["SENDGRID_PASSWORD"])
71
+ expect{client.post_suppressed_emails("notexistid", [@email1, @email2, @email3])}.to raise_error(RestClient::ResourceNotFound)
72
+ end
73
+ end
74
+
75
+ end