workos 0.10.2 → 0.10.3
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/.rubocop.yml +1 -1
- data/Gemfile.lock +2 -2
- data/lib/workos/sso.rb +21 -4
- data/lib/workos/version.rb +1 -1
- data/spec/lib/workos/audit_trail_spec.rb +0 -8
- data/spec/lib/workos/directory_sync_spec.rb +0 -8
- data/spec/lib/workos/passwordless_spec.rb +0 -8
- data/spec/lib/workos/portal_spec.rb +0 -8
- data/spec/lib/workos/sso_spec.rb +36 -46
- data/spec/spec_helper.rb +1 -0
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 10533ea551520a47120ae8d73f4ff1399fd095eb893bd998ba200019262fc67a
|
4
|
+
data.tar.gz: 1b3bdac8336b2ee2c24a09334aecd399a897e983c6693d73dbed5f196ec3eb18
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0e36af027698d1887819dd51f93921eed30b47af78deabc99e34864374d5f6ff3569920cf1fdd15c26b488bdb9d7d22105e5ee89dfd40b8f0f2146e789c4b884
|
7
|
+
data.tar.gz: fb776485526b8ace124319050a709fe044fd2a2cdbdaeb261b8b92fcfb7cafdc0f31b3f913d96839671d9fee9ed5151370868b4ccd02827523fb44d478f5b4d4
|
data/.rubocop.yml
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
workos (0.10.
|
4
|
+
workos (0.10.3)
|
5
5
|
sorbet-runtime (~> 0.5)
|
6
6
|
|
7
7
|
GEM
|
@@ -54,7 +54,7 @@ GEM
|
|
54
54
|
simplecov-html (0.12.2)
|
55
55
|
sorbet (0.5.5560)
|
56
56
|
sorbet-static (= 0.5.5560)
|
57
|
-
sorbet-runtime (0.5.
|
57
|
+
sorbet-runtime (0.5.6366)
|
58
58
|
sorbet-static (0.5.5560-universal-darwin-14)
|
59
59
|
unicode-display_width (1.6.0)
|
60
60
|
vcr (5.0.0)
|
data/lib/workos/sso.rb
CHANGED
@@ -26,6 +26,8 @@ module WorkOS
|
|
26
26
|
# required
|
27
27
|
# @param [String] provider A provider name for an Identity Provider
|
28
28
|
# configured on your WorkOS dashboard. Only 'Google' is supported.
|
29
|
+
# @param [String] connection The ID for a Connection configured on
|
30
|
+
# WorkOS.
|
29
31
|
# @param [String] client_id The WorkOS client ID for the environment
|
30
32
|
# where you've configured your SSO connection.
|
31
33
|
# @param [String] project_id The WorkOS project ID for the project.
|
@@ -58,15 +60,18 @@ module WorkOS
|
|
58
60
|
client_id: T.nilable(String),
|
59
61
|
domain: T.nilable(String),
|
60
62
|
provider: T.nilable(String),
|
63
|
+
connection: T.nilable(String),
|
61
64
|
state: T.nilable(String),
|
62
65
|
).returns(String)
|
63
66
|
end
|
67
|
+
# rubocop:disable Metrics/MethodLength, Metrics/ParameterLists
|
64
68
|
def authorization_url(
|
65
69
|
redirect_uri:,
|
66
70
|
project_id: nil,
|
67
71
|
client_id: nil,
|
68
72
|
domain: nil,
|
69
73
|
provider: nil,
|
74
|
+
connection: nil,
|
70
75
|
state: ''
|
71
76
|
)
|
72
77
|
if project_id
|
@@ -75,7 +80,11 @@ module WorkOS
|
|
75
80
|
client_id = project_id
|
76
81
|
end
|
77
82
|
|
78
|
-
|
83
|
+
validate_authorization_url_arguments(
|
84
|
+
provider: provider,
|
85
|
+
domain: domain,
|
86
|
+
connection: connection,
|
87
|
+
)
|
79
88
|
|
80
89
|
query = URI.encode_www_form({
|
81
90
|
client_id: client_id,
|
@@ -84,10 +93,12 @@ module WorkOS
|
|
84
93
|
state: state,
|
85
94
|
domain: domain,
|
86
95
|
provider: provider,
|
96
|
+
connection: connection,
|
87
97
|
}.compact)
|
88
98
|
|
89
99
|
"https://#{WorkOS::API_HOSTNAME}/sso/authorize?#{query}"
|
90
100
|
end
|
101
|
+
# rubocop:enable Metrics/MethodLength, Metrics/ParameterLists
|
91
102
|
|
92
103
|
# Fetch the profile details for the authenticated SSO user.
|
93
104
|
#
|
@@ -284,11 +295,17 @@ module WorkOS
|
|
284
295
|
params(
|
285
296
|
domain: T.nilable(String),
|
286
297
|
provider: T.nilable(String),
|
298
|
+
connection: T.nilable(String),
|
287
299
|
).void
|
288
300
|
end
|
289
|
-
def
|
290
|
-
|
291
|
-
|
301
|
+
def validate_authorization_url_arguments(
|
302
|
+
domain:,
|
303
|
+
provider:,
|
304
|
+
connection:
|
305
|
+
)
|
306
|
+
if [domain, provider, connection].all?(&:nil?)
|
307
|
+
raise ArgumentError, 'Either connection, domain, or ' \
|
308
|
+
'provider is required.'
|
292
309
|
end
|
293
310
|
|
294
311
|
return unless provider && !PROVIDERS.include?(provider)
|
data/lib/workos/version.rb
CHANGED
data/spec/lib/workos/sso_spec.rb
CHANGED
@@ -73,7 +73,41 @@ describe WorkOS::SSO do
|
|
73
73
|
end
|
74
74
|
end
|
75
75
|
|
76
|
-
context 'with
|
76
|
+
context 'with a connection' do
|
77
|
+
let(:args) do
|
78
|
+
{
|
79
|
+
connection: 'connection_123',
|
80
|
+
client_id: 'workos-proj-123',
|
81
|
+
redirect_uri: 'foo.com/auth/callback',
|
82
|
+
state: {
|
83
|
+
next_page: '/dashboard/edit',
|
84
|
+
}.to_s,
|
85
|
+
}
|
86
|
+
end
|
87
|
+
it 'returns a valid URL' do
|
88
|
+
authorization_url = described_class.authorization_url(**args)
|
89
|
+
|
90
|
+
expect(URI.parse(authorization_url)).to be_a URI
|
91
|
+
end
|
92
|
+
|
93
|
+
it 'returns the expected hostname' do
|
94
|
+
authorization_url = described_class.authorization_url(**args)
|
95
|
+
|
96
|
+
expect(URI.parse(authorization_url).host).to eq(WorkOS::API_HOSTNAME)
|
97
|
+
end
|
98
|
+
|
99
|
+
it 'returns the expected query string' do
|
100
|
+
authorization_url = described_class.authorization_url(**args)
|
101
|
+
|
102
|
+
expect(URI.parse(authorization_url).query).to eq(
|
103
|
+
'client_id=workos-proj-123&redirect_uri=foo.com%2Fauth%2Fcallback' \
|
104
|
+
'&response_type=code&state=%7B%3Anext_page%3D%3E%22%2Fdashboard%2F' \
|
105
|
+
'edit%22%7D&connection=connection_123',
|
106
|
+
)
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
110
|
+
context 'with neither connection, domain, or provider' do
|
77
111
|
let(:args) do
|
78
112
|
{
|
79
113
|
client_id: 'workos-proj-123',
|
@@ -88,7 +122,7 @@ describe WorkOS::SSO do
|
|
88
122
|
described_class.authorization_url(**args)
|
89
123
|
end.to raise_error(
|
90
124
|
ArgumentError,
|
91
|
-
'Either domain or provider is required.',
|
125
|
+
'Either connection, domain, or provider is required.',
|
92
126
|
)
|
93
127
|
end
|
94
128
|
end
|
@@ -159,10 +193,6 @@ describe WorkOS::SSO do
|
|
159
193
|
end
|
160
194
|
|
161
195
|
describe '.profile' do
|
162
|
-
before do
|
163
|
-
WorkOS.key = 'api-key'
|
164
|
-
end
|
165
|
-
|
166
196
|
let(:args) do
|
167
197
|
{
|
168
198
|
code: SecureRandom.hex(10),
|
@@ -274,14 +304,6 @@ describe WorkOS::SSO do
|
|
274
304
|
end
|
275
305
|
|
276
306
|
describe '.create_connection' do
|
277
|
-
before(:all) do
|
278
|
-
WorkOS.key = 'key'
|
279
|
-
end
|
280
|
-
|
281
|
-
after(:all) do
|
282
|
-
WorkOS.key = nil
|
283
|
-
end
|
284
|
-
|
285
307
|
context 'with a valid source' do
|
286
308
|
it 'creates a connection' do
|
287
309
|
VCR.use_cassette('sso/create_connection_with_valid_source') do
|
@@ -312,14 +334,6 @@ describe WorkOS::SSO do
|
|
312
334
|
end
|
313
335
|
|
314
336
|
describe '.promote_draft_connection' do
|
315
|
-
before(:all) do
|
316
|
-
WorkOS.key = 'key'
|
317
|
-
end
|
318
|
-
|
319
|
-
after(:all) do
|
320
|
-
WorkOS.key = nil
|
321
|
-
end
|
322
|
-
|
323
337
|
let(:token) { 'draft_conn_id' }
|
324
338
|
let(:client_id) { 'proj_0239u590h' }
|
325
339
|
|
@@ -357,14 +371,6 @@ describe WorkOS::SSO do
|
|
357
371
|
end
|
358
372
|
|
359
373
|
describe '.list_connections' do
|
360
|
-
before(:all) do
|
361
|
-
WorkOS.key = 'key'
|
362
|
-
end
|
363
|
-
|
364
|
-
after(:all) do
|
365
|
-
WorkOS.key = nil
|
366
|
-
end
|
367
|
-
|
368
374
|
context 'with no options' do
|
369
375
|
it 'returns connections' do
|
370
376
|
VCR.use_cassette('sso/list_connections') do
|
@@ -446,14 +452,6 @@ describe WorkOS::SSO do
|
|
446
452
|
end
|
447
453
|
|
448
454
|
describe '.get_connection' do
|
449
|
-
before(:all) do
|
450
|
-
WorkOS.key = 'key'
|
451
|
-
end
|
452
|
-
|
453
|
-
after(:all) do
|
454
|
-
WorkOS.key = nil
|
455
|
-
end
|
456
|
-
|
457
455
|
context 'with a valid id' do
|
458
456
|
it 'gets the connection details' do
|
459
457
|
VCR.use_cassette('sso/get_connection_with_valid_id') do
|
@@ -484,14 +482,6 @@ describe WorkOS::SSO do
|
|
484
482
|
end
|
485
483
|
|
486
484
|
describe '.delete_connection' do
|
487
|
-
before(:all) do
|
488
|
-
WorkOS.key = 'key'
|
489
|
-
end
|
490
|
-
|
491
|
-
after(:all) do
|
492
|
-
WorkOS.key = nil
|
493
|
-
end
|
494
|
-
|
495
485
|
context 'with a valid id' do
|
496
486
|
it 'returns true' do
|
497
487
|
VCR.use_cassette('sso/delete_connection_with_valid_id') do
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: workos
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.10.
|
4
|
+
version: 0.10.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- WorkOS
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-04-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: sorbet-runtime
|
@@ -305,7 +305,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
305
305
|
- !ruby/object:Gem::Version
|
306
306
|
version: '0'
|
307
307
|
requirements: []
|
308
|
-
rubygems_version: 3.2.
|
308
|
+
rubygems_version: 3.2.15
|
309
309
|
signing_key:
|
310
310
|
specification_version: 4
|
311
311
|
summary: API client for WorkOS
|