sendgrid4r 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.env.example +2 -0
- data/.gitignore +23 -0
- data/.travis.yml +9 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +324 -0
- data/Rakefile +1 -0
- data/lib/auth.rb +18 -0
- data/lib/client.rb +22 -0
- data/lib/sendgrid4r/factory/version_factory.rb +15 -0
- data/lib/sendgrid4r/rest/api.rb +23 -0
- data/lib/sendgrid4r/rest/enforced_tls.rb +47 -0
- data/lib/sendgrid4r/rest/global_suppressions.rb +35 -0
- data/lib/sendgrid4r/rest/groups.rb +69 -0
- data/lib/sendgrid4r/rest/ip_addresses.rb +46 -0
- data/lib/sendgrid4r/rest/request.rb +42 -0
- data/lib/sendgrid4r/rest/suppressions.rb +58 -0
- data/lib/sendgrid4r/rest/templates.rb +64 -0
- data/lib/sendgrid4r/rest/versions.rb +66 -0
- data/lib/sendgrid4r/rest/warmup.rb +53 -0
- data/lib/sendgrid4r/version.rb +3 -0
- data/lib/sendgrid4r.rb +2 -0
- data/sendgrid4r.gemspec +25 -0
- data/spec/client_spec.rb +68 -0
- data/spec/enforced_tls_spec.rb +38 -0
- data/spec/global_suppressions_spec.rb +49 -0
- data/spec/groups_spec.rb +63 -0
- data/spec/ip_addresses_spec.rb +25 -0
- data/spec/spec_helper.rb +5 -0
- data/spec/suppressions_spec.rb +75 -0
- data/spec/templates_spec.rb +53 -0
- data/spec/version_factory_spec.rb +37 -0
- data/spec/versions_spec.rb +90 -0
- data/spec/warmup_spec.rb +52 -0
- metadata +146 -0
@@ -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
|
data/lib/sendgrid4r.rb
ADDED
data/sendgrid4r.gemspec
ADDED
@@ -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
|
data/spec/client_spec.rb
ADDED
@@ -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
|
data/spec/groups_spec.rb
ADDED
@@ -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
|
data/spec/spec_helper.rb
ADDED
@@ -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
|