omniauth-applicaster 1.1.0 → 1.1.1
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/lib/applicaster/accounts.rb +6 -0
- data/lib/applicaster/auth_helpers.rb +2 -9
- data/lib/omniauth-applicaster/version.rb +1 -1
- data/spec/lib/applicaster/accounts_spec.rb +74 -50
- data/spec/lib/applicaster/auth_helpers_spec.rb +0 -16
- data/spec/support/webmock_stubs_helper.rb +31 -11
- metadata +1 -2
- data/lib/applicaster/user.rb +0 -37
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4d0a3317532707cf06cf526f9fd1415f42192319
|
4
|
+
data.tar.gz: 5d82821d7a9f287c4323992430277ce271eba424
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bb5b8fbcdad31b8183625d25720d07645eacc6bc17a67147ad9d7238665e3dab674a9d25166a428525bdfb19e529624d3b8cc5e7fc5bf58529c472acc589e08b
|
7
|
+
data.tar.gz: 044fd3eade0aba820f4ef97b91bf1b2b5dd1492d04f81e267b8c859dc531a4360f38d87eaa4c72559cc08684fb65933a42d101cfa25f75db6e60d9baaa3ab6f3
|
data/lib/applicaster/accounts.rb
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
require_relative "user"
|
2
|
-
|
3
1
|
module Applicaster
|
4
2
|
module AuthHelpers
|
5
3
|
def current_user
|
@@ -23,13 +21,8 @@ module Applicaster
|
|
23
21
|
return nil unless session[:omniauth_credentials]
|
24
22
|
|
25
23
|
token = session[:omniauth_credentials][:token]
|
26
|
-
Applicaster::Accounts.user_from_token(token)
|
27
|
-
|
28
|
-
if e.response[:status] == 401
|
29
|
-
session.delete(:omniauth_credentials)
|
30
|
-
nil
|
31
|
-
else
|
32
|
-
raise e
|
24
|
+
Applicaster::Accounts.user_from_token(token).tap do |user|
|
25
|
+
session.delete(:omniauth_credentials) unless user
|
33
26
|
end
|
34
27
|
end
|
35
28
|
end
|
@@ -33,56 +33,6 @@ RSpec.describe Applicaster::Accounts do
|
|
33
33
|
end
|
34
34
|
end
|
35
35
|
|
36
|
-
describe "#initialize" do
|
37
|
-
it "accepts client_id and client_secret" do
|
38
|
-
service = Applicaster::Accounts.new("my_client_id", "my_client_secret")
|
39
|
-
|
40
|
-
expect(service.client_id).to eq("my_client_id")
|
41
|
-
expect(service.client_secret).to eq("my_client_secret")
|
42
|
-
end
|
43
|
-
|
44
|
-
it "takes default values from ENV vars" do
|
45
|
-
expect(accounts_service.client_id).to eq("client_id")
|
46
|
-
expect(accounts_service.client_secret).to eq("client_secret")
|
47
|
-
end
|
48
|
-
end
|
49
|
-
|
50
|
-
describe "#accounts" do
|
51
|
-
before do
|
52
|
-
stub_client_credentials_request
|
53
|
-
stub_accounts_index_request
|
54
|
-
end
|
55
|
-
|
56
|
-
it "returns an array of Account objects" do
|
57
|
-
expect(return_value).to be_kind_of(Array)
|
58
|
-
expect(return_value.size).to eq(2)
|
59
|
-
expect(return_value.first).to be_kind_of(Applicaster::Accounts::Account)
|
60
|
-
end
|
61
|
-
|
62
|
-
def return_value
|
63
|
-
@return_value ||= accounts_service.accounts
|
64
|
-
end
|
65
|
-
|
66
|
-
def stub_accounts_index_request
|
67
|
-
stub_request(:get, "https://accounts2.applicaster.com/api/v1/accounts.json").
|
68
|
-
with(query: { access_token: "client-credentials-token" }).
|
69
|
-
to_return(successful_json_response(mock_accounts_response))
|
70
|
-
end
|
71
|
-
|
72
|
-
def mock_accounts_response
|
73
|
-
[
|
74
|
-
{
|
75
|
-
id: "1-account-1",
|
76
|
-
name: "Account 1",
|
77
|
-
},
|
78
|
-
{
|
79
|
-
id: "2-account-2",
|
80
|
-
name: "Account 2",
|
81
|
-
},
|
82
|
-
]
|
83
|
-
end
|
84
|
-
end
|
85
|
-
|
86
36
|
describe ".connection" do
|
87
37
|
let(:remote_url) { "https://accounts2.applicaster.com/test.json" }
|
88
38
|
let(:request_stub) { stub_request(:get, remote_url) }
|
@@ -137,6 +87,80 @@ RSpec.describe Applicaster::Accounts do
|
|
137
87
|
end
|
138
88
|
end
|
139
89
|
|
90
|
+
describe ".user_from_token" do
|
91
|
+
let(:return_value) { Applicaster::Accounts.user_from_token(token) }
|
92
|
+
|
93
|
+
before do
|
94
|
+
stub_current_user_requests
|
95
|
+
end
|
96
|
+
|
97
|
+
context "when token is valid" do
|
98
|
+
let(:token) { "valid-access-token" }
|
99
|
+
|
100
|
+
it "returns an Applicaster::Accounts::User instance" do
|
101
|
+
expect(return_value).to be_kind_of(Applicaster::Accounts::User)
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
context "when token is invalid" do
|
106
|
+
let(:token) { "invalid-access-token" }
|
107
|
+
|
108
|
+
it "returns nil" do
|
109
|
+
expect(return_value).to be nil
|
110
|
+
end
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
114
|
+
describe "#initialize" do
|
115
|
+
it "accepts client_id and client_secret" do
|
116
|
+
service = Applicaster::Accounts.new("my_client_id", "my_client_secret")
|
117
|
+
|
118
|
+
expect(service.client_id).to eq("my_client_id")
|
119
|
+
expect(service.client_secret).to eq("my_client_secret")
|
120
|
+
end
|
121
|
+
|
122
|
+
it "takes default values from ENV vars" do
|
123
|
+
expect(accounts_service.client_id).to eq("client_id")
|
124
|
+
expect(accounts_service.client_secret).to eq("client_secret")
|
125
|
+
end
|
126
|
+
end
|
127
|
+
|
128
|
+
describe "#accounts" do
|
129
|
+
before do
|
130
|
+
stub_client_credentials_request
|
131
|
+
stub_accounts_index_request
|
132
|
+
end
|
133
|
+
|
134
|
+
it "returns an array of Account objects" do
|
135
|
+
expect(return_value).to be_kind_of(Array)
|
136
|
+
expect(return_value.size).to eq(2)
|
137
|
+
expect(return_value.first).to be_kind_of(Applicaster::Accounts::Account)
|
138
|
+
end
|
139
|
+
|
140
|
+
def return_value
|
141
|
+
@return_value ||= accounts_service.accounts
|
142
|
+
end
|
143
|
+
|
144
|
+
def stub_accounts_index_request
|
145
|
+
stub_request(:get, "https://accounts2.applicaster.com/api/v1/accounts.json").
|
146
|
+
with(query: { access_token: "client-credentials-token" }).
|
147
|
+
to_return(successful_json_response(mock_accounts_response))
|
148
|
+
end
|
149
|
+
|
150
|
+
def mock_accounts_response
|
151
|
+
[
|
152
|
+
{
|
153
|
+
id: "1-account-1",
|
154
|
+
name: "Account 1",
|
155
|
+
},
|
156
|
+
{
|
157
|
+
id: "2-account-2",
|
158
|
+
name: "Account 2",
|
159
|
+
},
|
160
|
+
]
|
161
|
+
end
|
162
|
+
end
|
163
|
+
|
140
164
|
def with_base_url(url)
|
141
165
|
value_bofre, ENV["ACCOUNTS_BASE_URL"] = ENV["ACCOUNTS_BASE_URL"], url
|
142
166
|
yield
|
@@ -99,20 +99,4 @@ RSpec.describe Applicaster::AuthHelpers do
|
|
99
99
|
}
|
100
100
|
}
|
101
101
|
end
|
102
|
-
|
103
|
-
def stub_current_user_requests
|
104
|
-
stub_request(:get, "https://accounts2.applicaster.com/api/v1/users/current.json")
|
105
|
-
.with(query: { access_token: "valid-access-token" })
|
106
|
-
.to_return(successful_json_response(mock_user_response))
|
107
|
-
|
108
|
-
stub_request(:get, "https://accounts2.applicaster.com/api/v1/users/current.json")
|
109
|
-
.with(query: { access_token: "invalid-access-token" })
|
110
|
-
.to_return(status: 401, body: "")
|
111
|
-
end
|
112
|
-
|
113
|
-
def mock_user_response
|
114
|
-
{
|
115
|
-
id: "123"
|
116
|
-
}
|
117
|
-
end
|
118
102
|
end
|
@@ -4,18 +4,38 @@ module WebmockStubsHelper
|
|
4
4
|
end
|
5
5
|
|
6
6
|
def stub_client_credentials_request
|
7
|
-
stub_request(:post, "https://client_id:client_secret
|
8
|
-
|
9
|
-
|
7
|
+
stub_request(:post, "https://client_id:client_secret@#{accounts_host}/oauth/token")
|
8
|
+
.with(:body => {"grant_type"=>"client_credentials"})
|
9
|
+
.to_return(successful_json_response(access_token: "client-credentials-token"))
|
10
10
|
end
|
11
11
|
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
12
|
+
def stub_current_user_requests
|
13
|
+
stub_request(:get, "https://#{accounts_host}/api/v1/users/current.json")
|
14
|
+
.with(query: { access_token: "valid-access-token" })
|
15
|
+
.to_return(successful_json_response(mock_user_response))
|
16
|
+
|
17
|
+
stub_request(:get, "https://#{accounts_host}/api/v1/users/current.json")
|
18
|
+
.with(query: { access_token: "invalid-access-token" })
|
19
|
+
.to_return(status: 401, body: "")
|
20
|
+
end
|
21
|
+
|
22
|
+
def accounts_host
|
23
|
+
"accounts2.applicaster.com"
|
24
|
+
end
|
25
|
+
|
26
|
+
def mock_user_response
|
27
|
+
{
|
28
|
+
id: "123"
|
29
|
+
}
|
30
|
+
end
|
31
|
+
|
32
|
+
def successful_json_response(body)
|
33
|
+
{
|
34
|
+
status: 200,
|
35
|
+
body: body.to_json,
|
36
|
+
headers: {
|
37
|
+
"Content-Type" => "application/json"
|
19
38
|
}
|
20
|
-
|
39
|
+
}
|
40
|
+
end
|
21
41
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: omniauth-applicaster
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Neer Friedman
|
@@ -140,7 +140,6 @@ files:
|
|
140
140
|
- lib/applicaster/accounts/user.rb
|
141
141
|
- lib/applicaster/auth_helpers.rb
|
142
142
|
- lib/applicaster/sessions_controller_mixin.rb
|
143
|
-
- lib/applicaster/user.rb
|
144
143
|
- lib/omniauth-applicaster.rb
|
145
144
|
- lib/omniauth-applicaster/version.rb
|
146
145
|
- lib/omniauth/strategies/applicaster.rb
|
data/lib/applicaster/user.rb
DELETED
@@ -1,37 +0,0 @@
|
|
1
|
-
module Applicaster
|
2
|
-
class User
|
3
|
-
attr_accessor :user_json
|
4
|
-
|
5
|
-
def initialize(user_json)
|
6
|
-
@user_json = user_json.symbolize_keys
|
7
|
-
end
|
8
|
-
|
9
|
-
def id
|
10
|
-
user_json[:id]
|
11
|
-
end
|
12
|
-
|
13
|
-
def name
|
14
|
-
user_json[:name]
|
15
|
-
end
|
16
|
-
|
17
|
-
def email
|
18
|
-
user_json[:email]
|
19
|
-
end
|
20
|
-
|
21
|
-
def global_roles
|
22
|
-
user_json[:global_roles]
|
23
|
-
end
|
24
|
-
|
25
|
-
def permissions
|
26
|
-
user_json[:permissions]
|
27
|
-
end
|
28
|
-
|
29
|
-
def admin
|
30
|
-
user_json[:admin]
|
31
|
-
end
|
32
|
-
|
33
|
-
def admin?
|
34
|
-
!!admin
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|