hello_sign 0.2.0 → 0.3.0
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.
- data/lib/hello_sign.rb +5 -0
- data/lib/hello_sign/account_proxy.rb +1 -1
- data/lib/hello_sign/client.rb +13 -21
- data/lib/hello_sign/team_proxy.rb +47 -0
- data/lib/hello_sign/version.rb +1 -1
- data/spec/integration/hello_sign_spec.rb +22 -3
- data/spec/integration/reusable_form_spec.rb +2 -2
- data/spec/integration/team_spec.rb +73 -0
- data/spec/unit/account_proxy_spec.rb +1 -1
- data/spec/unit/client_spec.rb +0 -18
- data/spec/unit/hello_sign_spec.rb +6 -0
- data/spec/unit/team_proxy_spec.rb +141 -0
- metadata +7 -2
data/lib/hello_sign.rb
CHANGED
@@ -3,6 +3,7 @@ require 'hello_sign/client'
|
|
3
3
|
require 'hello_sign/account_proxy'
|
4
4
|
require 'hello_sign/signature_request_proxy'
|
5
5
|
require 'hello_sign/reusable_form_proxy'
|
6
|
+
require 'hello_sign/team_proxy'
|
6
7
|
|
7
8
|
module HelloSign
|
8
9
|
class << self
|
@@ -20,6 +21,10 @@ module HelloSign
|
|
20
21
|
ReusableFormProxy.new(client)
|
21
22
|
end
|
22
23
|
|
24
|
+
def team
|
25
|
+
TeamProxy.new(client)
|
26
|
+
end
|
27
|
+
|
23
28
|
def client
|
24
29
|
@client ||= Client.new(email, password)
|
25
30
|
end
|
data/lib/hello_sign/client.rb
CHANGED
@@ -7,7 +7,6 @@ module HelloSign
|
|
7
7
|
API_VERSION = '/v3'
|
8
8
|
|
9
9
|
attr_reader :email, :password
|
10
|
-
attr_writer :connection
|
11
10
|
|
12
11
|
def initialize(email, password)
|
13
12
|
@email = email
|
@@ -25,29 +24,22 @@ module HelloSign
|
|
25
24
|
private
|
26
25
|
|
27
26
|
def request(method, path, options)
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
request.
|
32
|
-
request.body
|
33
|
-
end
|
34
|
-
|
35
|
-
request.body
|
27
|
+
base_connection do |connection|
|
28
|
+
connection.request :basic_auth, email, password unless options[:auth_not_required]
|
29
|
+
end.send(method) do |request|
|
30
|
+
request.url "#{API_VERSION}#{path}", options[:params]
|
31
|
+
request.body = options[:body]
|
32
|
+
end.body
|
36
33
|
end
|
37
34
|
|
38
|
-
def
|
39
|
-
Faraday.new(:url => API_ENDPOINT) do |
|
40
|
-
|
41
|
-
faraday.request :multipart
|
42
|
-
faraday.request :url_encoded
|
43
|
-
faraday.response :multi_json, :symbolize_keys => true
|
44
|
-
faraday.adapter Faraday.default_adapter
|
45
|
-
end
|
46
|
-
end
|
35
|
+
def base_connection
|
36
|
+
Faraday.new(:url => API_ENDPOINT) do |connection|
|
37
|
+
yield connection
|
47
38
|
|
48
|
-
|
49
|
-
|
50
|
-
|
39
|
+
connection.request :multipart
|
40
|
+
connection.request :url_encoded
|
41
|
+
connection.response :multi_json, :symbolize_keys => true
|
42
|
+
connection.adapter :net_http
|
51
43
|
end
|
52
44
|
end
|
53
45
|
|
@@ -0,0 +1,47 @@
|
|
1
|
+
module HelloSign
|
2
|
+
class TeamProxy
|
3
|
+
attr_reader :client
|
4
|
+
|
5
|
+
def initialize(client)
|
6
|
+
@client = client
|
7
|
+
end
|
8
|
+
|
9
|
+
def create(params)
|
10
|
+
name = params.fetch(:name)
|
11
|
+
client.post('/team/create', :body => {:name => name})
|
12
|
+
end
|
13
|
+
|
14
|
+
def show
|
15
|
+
client.get('/team')
|
16
|
+
end
|
17
|
+
|
18
|
+
def update(attributes)
|
19
|
+
client.post('/team', :body => attributes)
|
20
|
+
end
|
21
|
+
|
22
|
+
def destroy
|
23
|
+
client.post('/team/destroy')
|
24
|
+
end
|
25
|
+
|
26
|
+
def add_member(params)
|
27
|
+
client.post("/team/add_member", :body => body_by_identifier(params))
|
28
|
+
end
|
29
|
+
|
30
|
+
def remove_member(params)
|
31
|
+
client.post("/team/remove_member", :body => body_by_identifier(params))
|
32
|
+
end
|
33
|
+
|
34
|
+
private
|
35
|
+
|
36
|
+
def body_by_identifier(params)
|
37
|
+
if email = params[:email]
|
38
|
+
{:email_address => email}
|
39
|
+
elsif account_id = params[:account_id]
|
40
|
+
{:account_id => account_id}
|
41
|
+
else
|
42
|
+
raise ArgumentError, 'An email address or account ID must be provided.'
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
47
|
+
end
|
data/lib/hello_sign/version.rb
CHANGED
@@ -1,11 +1,30 @@
|
|
1
1
|
require 'integration/helper'
|
2
|
+
require 'json'
|
2
3
|
|
3
4
|
describe HelloSign do
|
4
5
|
context "when returning a response with a body" do
|
5
|
-
before {
|
6
|
+
before { stub_get_with_auth('/json').to_return(:body => {:account_id => 1}.to_json) }
|
6
7
|
|
7
|
-
it "
|
8
|
-
expect(HelloSign.client.get('/json'
|
8
|
+
it "parses the body into a hash with symbols as keys" do
|
9
|
+
expect(HelloSign.client.get('/json')).to eq({:account_id => 1})
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
describe "#get" do
|
14
|
+
before { stub_get_with_auth('/resource') }
|
15
|
+
|
16
|
+
example do
|
17
|
+
HelloSign.client.get('/resource')
|
18
|
+
expect(a_get_with_auth('/resource')).to have_been_made
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
describe "#post" do
|
23
|
+
before { stub_post_with_auth('/resource') }
|
24
|
+
|
25
|
+
example do
|
26
|
+
HelloSign.client.post('/resource')
|
27
|
+
expect(a_post_with_auth('/resource')).to have_been_made
|
9
28
|
end
|
10
29
|
end
|
11
30
|
end
|
@@ -31,7 +31,7 @@ describe HelloSign do
|
|
31
31
|
|
32
32
|
it "sends a request to grant form access to the HelloSign API" do
|
33
33
|
expect(a_post_with_auth('/reusable_form/add_user/form_id')
|
34
|
-
.with(:
|
34
|
+
.with(:email_address => 'john@johnson.com')
|
35
35
|
).to have_been_made
|
36
36
|
end
|
37
37
|
end
|
@@ -44,7 +44,7 @@ describe HelloSign do
|
|
44
44
|
|
45
45
|
it "sends a request to grant form access to the HelloSign API" do
|
46
46
|
expect(a_post_with_auth('/reusable_form/remove_user/form_id')
|
47
|
-
.with(:
|
47
|
+
.with(:email_address => 'john@johnson.com')
|
48
48
|
).to have_been_made
|
49
49
|
end
|
50
50
|
end
|
@@ -0,0 +1,73 @@
|
|
1
|
+
require 'integration/helper'
|
2
|
+
|
3
|
+
describe HelloSign do
|
4
|
+
context "creating a team" do
|
5
|
+
before { stub_post_with_auth('/team/create') }
|
6
|
+
|
7
|
+
example do
|
8
|
+
HelloSign.team.create(:name => 'The Browncoats')
|
9
|
+
|
10
|
+
expect(a_post_with_auth('/team/create')
|
11
|
+
.with(:body => {:name => 'The Browncoats'}))
|
12
|
+
.to have_been_made
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
context "fetching team information" do
|
17
|
+
before { stub_get_with_auth('/team') }
|
18
|
+
|
19
|
+
example do
|
20
|
+
HelloSign.team.show
|
21
|
+
|
22
|
+
expect(a_get_with_auth('/team'))
|
23
|
+
.to have_been_made
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
context "updating team information" do
|
28
|
+
before { stub_post_with_auth('/team') }
|
29
|
+
|
30
|
+
example do
|
31
|
+
HelloSign.team.update(:name => 'The Bluecoats')
|
32
|
+
|
33
|
+
expect(a_post_with_auth('/team')
|
34
|
+
.with(:name => 'The Bluecoats'))
|
35
|
+
.to have_been_made
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
context "destroying a team" do
|
40
|
+
before { stub_post_with_auth('/team/destroy') }
|
41
|
+
|
42
|
+
example do
|
43
|
+
HelloSign.team.destroy
|
44
|
+
|
45
|
+
expect(a_post_with_auth('/team/destroy'))
|
46
|
+
.to have_been_made
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
context "adding a member to a team" do
|
51
|
+
before { stub_post_with_auth('/team/add_member') }
|
52
|
+
|
53
|
+
example do
|
54
|
+
HelloSign.team.add_member(:email => 'bob@smith.com')
|
55
|
+
|
56
|
+
expect(a_post_with_auth('/team/add_member')
|
57
|
+
.with(:email => 'bob@smith.com'))
|
58
|
+
.to have_been_made
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
context "removing a member from a team" do
|
63
|
+
before { stub_post_with_auth('/team/remove_member') }
|
64
|
+
|
65
|
+
example do
|
66
|
+
HelloSign.team.remove_member(:email => 'bob@smith.com')
|
67
|
+
|
68
|
+
expect(a_post_with_auth('/team/remove_member')
|
69
|
+
.with(:email => 'bob@smith.com'))
|
70
|
+
.to have_been_made
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
@@ -22,7 +22,7 @@ describe HelloSign::AccountProxy do
|
|
22
22
|
.with(
|
23
23
|
'/account/create',
|
24
24
|
:body => {:email_address => 'david@bowman.com', :password => 'space'},
|
25
|
-
:
|
25
|
+
:auth_not_required => true
|
26
26
|
)
|
27
27
|
account_proxy.create(:email => 'david@bowman.com', :password => 'space')
|
28
28
|
end
|
data/spec/unit/client_spec.rb
CHANGED
@@ -6,8 +6,6 @@ describe HelloSign::Client do
|
|
6
6
|
let(:connection) { double('connection') }
|
7
7
|
subject(:client) { HelloSign::Client.new('david@bowman.com', 'space') }
|
8
8
|
|
9
|
-
before { client.connection = connection }
|
10
|
-
|
11
9
|
describe "#email" do
|
12
10
|
it "returns the email address" do
|
13
11
|
expect(client.email).to eq 'david@bowman.com'
|
@@ -19,20 +17,4 @@ describe HelloSign::Client do
|
|
19
17
|
expect(client.password).to eq 'space'
|
20
18
|
end
|
21
19
|
end
|
22
|
-
|
23
|
-
describe "#get" do
|
24
|
-
before { subject.should_receive(:request).with(:get, 'path', {:options => {}}) }
|
25
|
-
|
26
|
-
it "makes a GET request" do
|
27
|
-
subject.get('path', :options => {})
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
describe "#post" do
|
32
|
-
before { subject.should_receive(:request).with(:post, 'path', {:options => {}}) }
|
33
|
-
|
34
|
-
it "makes a POST request" do
|
35
|
-
subject.post('path', :options => {})
|
36
|
-
end
|
37
|
-
end
|
38
20
|
end
|
@@ -20,6 +20,12 @@ describe HelloSign do
|
|
20
20
|
end
|
21
21
|
end
|
22
22
|
|
23
|
+
describe "::team" do
|
24
|
+
it "returns a team proxy" do
|
25
|
+
expect(HelloSign.team).to be_a HelloSign::TeamProxy
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
23
29
|
describe "::client" do
|
24
30
|
context "when it has not previously been called" do
|
25
31
|
it "returns a new client" do
|
@@ -0,0 +1,141 @@
|
|
1
|
+
require 'helper'
|
2
|
+
require 'hello_sign/team_proxy'
|
3
|
+
|
4
|
+
describe HelloSign::TeamProxy do
|
5
|
+
let(:client) { double('client') }
|
6
|
+
let(:api_response) { double('API response') }
|
7
|
+
subject(:team_proxy) { HelloSign::TeamProxy.new(client) }
|
8
|
+
|
9
|
+
before do
|
10
|
+
client.stub(:get).and_return(api_response)
|
11
|
+
client.stub(:post).and_return(api_response)
|
12
|
+
end
|
13
|
+
|
14
|
+
describe "#client" do
|
15
|
+
it "returns the client" do
|
16
|
+
expect(team_proxy.client).to be client
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
describe "#create" do
|
21
|
+
let(:name) { 'The Browncoats' }
|
22
|
+
|
23
|
+
context "when called with the proper parameters" do
|
24
|
+
it "sends a team creation request" do
|
25
|
+
client.should_receive(:post).with('/team/create', :body => {:name => name})
|
26
|
+
team_proxy.create(:name => name)
|
27
|
+
end
|
28
|
+
|
29
|
+
it "returns the API response" do
|
30
|
+
expect(team_proxy.create(:name => name)).to eq api_response
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
context "when called without the proper parameters" do
|
35
|
+
it "raises an exception" do
|
36
|
+
expect { team_proxy.create }.to raise_error
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
describe "#show" do
|
42
|
+
it "fetches the team information" do
|
43
|
+
client.should_receive(:get).with('/team')
|
44
|
+
team_proxy.show
|
45
|
+
end
|
46
|
+
|
47
|
+
it "returns the API response" do
|
48
|
+
expect(team_proxy.show).to eq api_response
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
describe "#update" do
|
53
|
+
let(:new_name) { 'The Bluecoats' }
|
54
|
+
|
55
|
+
it "sends a team update request" do
|
56
|
+
client.should_receive(:post).with('/team', :body => {:name => new_name})
|
57
|
+
team_proxy.update(:name => new_name)
|
58
|
+
end
|
59
|
+
|
60
|
+
it "returns the API response" do
|
61
|
+
expect(team_proxy.update(:name => new_name)).to eq api_response
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
describe "#destroy" do
|
66
|
+
it "sends a team destroy request" do
|
67
|
+
client.should_receive(:post).with('/team/destroy')
|
68
|
+
team_proxy.destroy
|
69
|
+
end
|
70
|
+
|
71
|
+
it "returns the API response" do
|
72
|
+
expect(team_proxy.destroy).to eq api_response
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
describe "#add_member" do
|
77
|
+
let(:email) { 'john@johnson.com' }
|
78
|
+
let(:account_id) { '15' }
|
79
|
+
|
80
|
+
context "when called with an email address" do
|
81
|
+
it "adds the user with the email address to the team" do
|
82
|
+
client.should_receive(:post).with('/team/add_member', :body => {:email_address => email})
|
83
|
+
team_proxy.add_member(:email => email)
|
84
|
+
end
|
85
|
+
|
86
|
+
it "returns the API response" do
|
87
|
+
expect(team_proxy.add_member(:email => email)).to eq api_response
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
context "when called with an account ID" do
|
92
|
+
it "adds the user with the account ID to the team" do
|
93
|
+
client.should_receive(:post).with('/team/add_member', :body => {:account_id => account_id})
|
94
|
+
team_proxy.add_member(:account_id => account_id)
|
95
|
+
end
|
96
|
+
|
97
|
+
it "returns the API response" do
|
98
|
+
expect(team_proxy.add_member(:account_id => account_id)).to eq api_response
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
context "when called without proper parameters" do
|
103
|
+
it "raises an argument error exception" do
|
104
|
+
expect { team_proxy.add_member }.to raise_error ArgumentError
|
105
|
+
end
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
describe "#remove_member" do
|
110
|
+
let(:email) { 'john@johnson.com' }
|
111
|
+
let(:account_id) { '15' }
|
112
|
+
|
113
|
+
context "when called with an email address" do
|
114
|
+
it "removes the user with the email address from the team" do
|
115
|
+
client.should_receive(:post).with('/team/remove_member', :body => {:email_address => email})
|
116
|
+
team_proxy.remove_member(:email => email)
|
117
|
+
end
|
118
|
+
|
119
|
+
it "returns the API response" do
|
120
|
+
expect(team_proxy.remove_member(:email => email)).to eq api_response
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
124
|
+
context "when called with an account ID" do
|
125
|
+
it "removes the user with the account ID from the team" do
|
126
|
+
client.should_receive(:post).with('/team/remove_member', :body => {:account_id => account_id})
|
127
|
+
team_proxy.remove_member(:account_id => account_id)
|
128
|
+
end
|
129
|
+
|
130
|
+
it "returns the API response" do
|
131
|
+
expect(team_proxy.remove_member(:account_id => account_id)).to eq api_response
|
132
|
+
end
|
133
|
+
end
|
134
|
+
|
135
|
+
context "when called without proper parameters" do
|
136
|
+
it "raises an argument error exception" do
|
137
|
+
expect { team_proxy.remove_member }.to raise_error ArgumentError
|
138
|
+
end
|
139
|
+
end
|
140
|
+
end
|
141
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hello_sign
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-01-
|
12
|
+
date: 2013-01-30 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: faraday
|
@@ -89,6 +89,7 @@ files:
|
|
89
89
|
- lib/hello_sign/reusable_form_proxy.rb
|
90
90
|
- lib/hello_sign/settings_proxy.rb
|
91
91
|
- lib/hello_sign/signature_request_proxy.rb
|
92
|
+
- lib/hello_sign/team_proxy.rb
|
92
93
|
- lib/hello_sign/version.rb
|
93
94
|
- lib/hello_sign.rb
|
94
95
|
- spec/fixtures/test.jpg
|
@@ -100,6 +101,7 @@ files:
|
|
100
101
|
- spec/integration/helper.rb
|
101
102
|
- spec/integration/reusable_form_spec.rb
|
102
103
|
- spec/integration/signature_request_spec.rb
|
104
|
+
- spec/integration/team_spec.rb
|
103
105
|
- spec/unit/account_proxy_spec.rb
|
104
106
|
- spec/unit/client_spec.rb
|
105
107
|
- spec/unit/hello_sign_spec.rb
|
@@ -108,6 +110,7 @@ files:
|
|
108
110
|
- spec/unit/reusable_form_proxy_spec.rb
|
109
111
|
- spec/unit/settings_proxy_spec.rb
|
110
112
|
- spec/unit/signature_request_proxy_spec.rb
|
113
|
+
- spec/unit/team_proxy_spec.rb
|
111
114
|
homepage: http://www.github.com/craiglittle/hello_sign
|
112
115
|
licenses: []
|
113
116
|
post_install_message:
|
@@ -142,6 +145,7 @@ test_files:
|
|
142
145
|
- spec/integration/helper.rb
|
143
146
|
- spec/integration/reusable_form_spec.rb
|
144
147
|
- spec/integration/signature_request_spec.rb
|
148
|
+
- spec/integration/team_spec.rb
|
145
149
|
- spec/unit/account_proxy_spec.rb
|
146
150
|
- spec/unit/client_spec.rb
|
147
151
|
- spec/unit/hello_sign_spec.rb
|
@@ -150,3 +154,4 @@ test_files:
|
|
150
154
|
- spec/unit/reusable_form_proxy_spec.rb
|
151
155
|
- spec/unit/settings_proxy_spec.rb
|
152
156
|
- spec/unit/signature_request_proxy_spec.rb
|
157
|
+
- spec/unit/team_proxy_spec.rb
|