omniauth-applicaster 1.5.2 → 1.6.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.
- checksums.yaml +4 -4
- data/README.md +24 -0
- data/lib/applicaster/accounts.rb +12 -0
- data/lib/applicaster/test/accounts/mock_data.rb +9 -0
- data/lib/applicaster/test/accounts/web_mock_helper.rb +8 -0
- data/lib/omniauth-applicaster/version.rb +1 -1
- data/spec/lib/applicaster/accounts_spec.rb +43 -0
- data/spec/lib/applicaster/test/accounts/mock_data_spec.rb +8 -0
- data/spec/lib/applicaster/test/accounts/webmock_helper_spec.rb +1 -0
- data/spec/support/webmock_stubs_helper.rb +12 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f0ac378a39c598eb3656c8065628155e0b61bfde
|
4
|
+
data.tar.gz: 765f8acd6f8fac276beb05d58c91c218e64dc1d1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0486f7b9d14805c576d94ed13bc0bf84b26714123316360fc8bfb6473bfc2257b0ebb9f86169b486b38294f698c0cdc180e413004dba5fef5f3b73538ba562c4
|
7
|
+
data.tar.gz: 5d932c806d173728e1a389700b55e21253bb4566d65f99194933ea10da974890bd0e9c0605b402f54731de59f05c567bb7941aff3cef26ff59b12ce83ecfe7a8
|
data/README.md
CHANGED
@@ -97,6 +97,14 @@ service.accounts.each do |account|
|
|
97
97
|
end
|
98
98
|
```
|
99
99
|
|
100
|
+
#### Get user by id
|
101
|
+
|
102
|
+
```ruby
|
103
|
+
service = Applicaster::Accounts.new
|
104
|
+
user = service.find_user_by_id(user_id)
|
105
|
+
# user is an Applicaster::Accounts::User instance
|
106
|
+
```
|
107
|
+
|
100
108
|
#### Get a user using an access token
|
101
109
|
|
102
110
|
```ruby
|
@@ -125,6 +133,7 @@ end
|
|
125
133
|
|
126
134
|
You can use `accounts_mock_data` to access the fake data, for example:
|
127
135
|
`accounts_mock_data.all_accounts_attributes.first`
|
136
|
+
`accounts_mock_data.user_attributes`
|
128
137
|
|
129
138
|
in example groups that use the client_credentials flow use:
|
130
139
|
```ruby
|
@@ -134,6 +143,21 @@ before do
|
|
134
143
|
end
|
135
144
|
```
|
136
145
|
|
146
|
+
in tests that use `find_user_by_id` method you can do the following:
|
147
|
+
```ruby
|
148
|
+
|
149
|
+
let(:user) { accounts_mock_data.user_attributes }
|
150
|
+
let(:accounts_service) { Applicaster::Accounts.new }
|
151
|
+
|
152
|
+
before do
|
153
|
+
stub_client_credentials_request
|
154
|
+
stub_accounts_user_show_response(user: user, token: client_credentials_token)
|
155
|
+
end
|
156
|
+
|
157
|
+
it "..." do
|
158
|
+
expect(accounts_service.find_user_by_id(user[:id])).to ...
|
159
|
+
end
|
160
|
+
```
|
137
161
|
|
138
162
|
|
139
163
|
## Contributing
|
data/lib/applicaster/accounts.rb
CHANGED
@@ -60,6 +60,14 @@ module Applicaster
|
|
60
60
|
end
|
61
61
|
end
|
62
62
|
|
63
|
+
def user_by_id_and_token(id, token)
|
64
|
+
Applicaster::Accounts::User.new(
|
65
|
+
connection(token: token)
|
66
|
+
.get("/api/v1/users/#{id}.json")
|
67
|
+
.body
|
68
|
+
)
|
69
|
+
end
|
70
|
+
|
63
71
|
def accounts_from_token(token)
|
64
72
|
connection(token: token)
|
65
73
|
.get("/api/v1/accounts.json")
|
@@ -93,6 +101,10 @@ module Applicaster
|
|
93
101
|
self.class.accounts_from_token(client_credentials_token.token)
|
94
102
|
end
|
95
103
|
|
104
|
+
def find_user_by_id(id)
|
105
|
+
self.class.user_by_id_and_token(id, client_credentials_token.token)
|
106
|
+
end
|
107
|
+
|
96
108
|
def connection(*args)
|
97
109
|
self.class.connection(*args)
|
98
110
|
end
|
@@ -9,6 +9,14 @@ module Applicaster
|
|
9
9
|
module Test
|
10
10
|
module Accounts
|
11
11
|
module WebMockHelper
|
12
|
+
def stub_accounts_user_show_response(options = {})
|
13
|
+
user = options[:user] || accounts_mock_data.user_attributes
|
14
|
+
|
15
|
+
stub_request(:get, accounts_base_url.join("/api/v1/users/#{user[:id]}.json"))
|
16
|
+
.with(query: { access_token: options[:token] })
|
17
|
+
.to_return(successful_json_response(user))
|
18
|
+
end
|
19
|
+
|
12
20
|
def stub_accounts_index_response(options = {})
|
13
21
|
accounts = options[:accounts] || accounts_mock_data.all_accounts_attributes
|
14
22
|
|
@@ -106,6 +106,35 @@ RSpec.describe Applicaster::Accounts do
|
|
106
106
|
end
|
107
107
|
end
|
108
108
|
|
109
|
+
describe ".user_by_id_and_token" do
|
110
|
+
let(:user_id) { 11 }
|
111
|
+
let(:return_value) { Applicaster::Accounts.user_by_id_and_token(user_id, token) }
|
112
|
+
|
113
|
+
context "when token is valid" do
|
114
|
+
let(:token) { "valid-access-token" }
|
115
|
+
|
116
|
+
before do
|
117
|
+
stub_user_show_request(user_id, token)
|
118
|
+
end
|
119
|
+
|
120
|
+
it "returns an Applicaster::Accounts::User instance" do
|
121
|
+
expect(return_value).to be_kind_of(Applicaster::Accounts::User)
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
125
|
+
context "when token is invalid" do
|
126
|
+
let(:token) { "invalid-access-token" }
|
127
|
+
|
128
|
+
before do
|
129
|
+
stub_user_show_request_with_invalid_token(user_id, token)
|
130
|
+
end
|
131
|
+
|
132
|
+
it "fails with Faraday::ClientError" do
|
133
|
+
expect { return_value }.to raise_error(Faraday::ClientError)
|
134
|
+
end
|
135
|
+
end
|
136
|
+
end
|
137
|
+
|
109
138
|
describe ".accounts_from_token" do
|
110
139
|
let(:token) { "valid-access-token" }
|
111
140
|
let(:return_value) { Applicaster::Accounts.accounts_from_token(token) }
|
@@ -161,6 +190,20 @@ RSpec.describe Applicaster::Accounts do
|
|
161
190
|
end
|
162
191
|
end
|
163
192
|
|
193
|
+
describe "#find_user_by_id" do
|
194
|
+
let(:user_id) { 11 }
|
195
|
+
|
196
|
+
before do
|
197
|
+
stub_client_credentials_request
|
198
|
+
stub_user_show_request(user_id, "client-credentials-token")
|
199
|
+
end
|
200
|
+
|
201
|
+
it "returns User object" do
|
202
|
+
expect(accounts_service.find_user_by_id(user_id))
|
203
|
+
.to be_kind_of(Applicaster::Accounts::User)
|
204
|
+
end
|
205
|
+
end
|
206
|
+
|
164
207
|
def stub_accounts_index_request(token)
|
165
208
|
stub_request(:get, "https://#{accounts_host}/api/v1/accounts.json").
|
166
209
|
with(query: { access_token: token }).
|
@@ -17,4 +17,12 @@ RSpec.describe Applicaster::Test::Accounts::MockData do
|
|
17
17
|
it { is_expected.to include(name: /Test Account \d+/) }
|
18
18
|
end
|
19
19
|
end
|
20
|
+
|
21
|
+
describe "#user_attributes" do
|
22
|
+
subject(:user) { mock_data.user_attributes }
|
23
|
+
|
24
|
+
it { is_expected.to include(:id) }
|
25
|
+
it { is_expected.to include(name: /\ATest User \d+\z/) }
|
26
|
+
it { is_expected.to include(email: /\Atest-user\d+@example.com\z/) }
|
27
|
+
end
|
20
28
|
end
|
@@ -4,6 +4,7 @@ RSpec.describe Applicaster::Test::Accounts::WebMockHelper do
|
|
4
4
|
let(:including_class) { Class.new { include(Applicaster::Test::Accounts::WebMockHelper) } }
|
5
5
|
subject(:instace) { including_class.new }
|
6
6
|
|
7
|
+
it { is_expected.to respond_to(:stub_accounts_user_show_response) }
|
7
8
|
it { is_expected.to respond_to(:stub_accounts_index_response) }
|
8
9
|
it { is_expected.to respond_to(:stub_client_credentials_request) }
|
9
10
|
it { is_expected.to respond_to(:accounts_mock_data) }
|
@@ -25,6 +25,18 @@ module WebmockStubsHelper
|
|
25
25
|
.to_return(status: 401, body: "")
|
26
26
|
end
|
27
27
|
|
28
|
+
def stub_user_show_request_with_invalid_token(user_id, token)
|
29
|
+
stub_request(:get, "https://#{accounts_host}/api/v1/users/#{user_id}.json")
|
30
|
+
.with(query: { access_token: token })
|
31
|
+
.to_return(status: 401, body: "")
|
32
|
+
end
|
33
|
+
|
34
|
+
def stub_user_show_request(user_id, token)
|
35
|
+
stub_request(:get, "https://#{accounts_host}/api/v1/users/#{user_id}.json").
|
36
|
+
with(query: { access_token: token }).
|
37
|
+
to_return(successful_json_response(mock_user_response))
|
38
|
+
end
|
39
|
+
|
28
40
|
def accounts_host
|
29
41
|
"accounts.applicaster.com"
|
30
42
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: omniauth-applicaster
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Neer Friedman
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-12-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|