workos 1.6.1 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/lib/workos/connection.rb +1 -1
- data/lib/workos/directory.rb +1 -1
- data/lib/workos/directory_sync.rb +29 -0
- data/lib/workos/profile.rb +1 -1
- data/lib/workos/types/connection_struct.rb +1 -1
- data/lib/workos/types/directory_struct.rb +1 -1
- data/lib/workos/types/profile_struct.rb +1 -1
- data/lib/workos/version.rb +1 -1
- data/spec/lib/workos/directory_sync_spec.rb +32 -0
- data/spec/support/fixtures/vcr_cassettes/directory_sync/get_directory_with_invalid_id.yml +83 -0
- data/spec/support/fixtures/vcr_cassettes/directory_sync/get_directory_with_valid_id.yml +84 -0
- metadata +7 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 739e4734f5caa4b4c8180e125a206106242fea489c1dccc19f1bc45ad514bc7e
|
4
|
+
data.tar.gz: '029c0a8ef19f9b9b933a73eec53a9770851ea2a338a81060c040b72a06e39189'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 18631e0e0cdc5033b7df32d3ff95e2eeadcd7babd6c3b11063e174006ed3e8abd7769bfe4b0c828967e79b724ce0d8a79243960b5f2922eeb242051b56395b41
|
7
|
+
data.tar.gz: 2a2b2d48b1410ad0fc86943a168d584234fd5c01ca5ee3e3b4b3117f9924ddc4199d55d10d338b1f07daa193edc0144312ec6271a68c65b89ec8fa2243064aa0
|
data/Gemfile.lock
CHANGED
data/lib/workos/connection.rb
CHANGED
@@ -21,7 +21,7 @@ module WorkOS
|
|
21
21
|
@name = T.let(raw.name, String)
|
22
22
|
@connection_type = T.let(raw.connection_type, String)
|
23
23
|
@domains = T.let(raw.domains, Array)
|
24
|
-
@organization_id =
|
24
|
+
@organization_id = raw.organization_id
|
25
25
|
@state = T.let(raw.state, String)
|
26
26
|
@status = T.let(raw.status, String)
|
27
27
|
@created_at = T.let(raw.created_at, String)
|
data/lib/workos/directory.rb
CHANGED
@@ -20,7 +20,7 @@ module WorkOS
|
|
20
20
|
@domain = raw.domain
|
21
21
|
@type = T.let(raw.type, String)
|
22
22
|
@state = T.let(raw.state, String)
|
23
|
-
@organization_id =
|
23
|
+
@organization_id = raw.organization_id
|
24
24
|
@created_at = T.let(raw.created_at, String)
|
25
25
|
@updated_at = T.let(raw.updated_at, String)
|
26
26
|
end
|
@@ -53,6 +53,35 @@ module WorkOS
|
|
53
53
|
)
|
54
54
|
end
|
55
55
|
|
56
|
+
# Retrieve directory.
|
57
|
+
#
|
58
|
+
# @param [String] id Directory unique identifier
|
59
|
+
#
|
60
|
+
# @example
|
61
|
+
# WorkOS::SSO.get_directory(id: 'directory_01FK17DWRHH7APAFXT5B52PV0W')
|
62
|
+
# => #<WorkOS::Directory:0x00007fb6e4193d20
|
63
|
+
# @id="directory_01FK17DWRHH7APAFXT5B52PV0W",
|
64
|
+
# @name="Foo Corp",
|
65
|
+
# @domain="foo-corp.com",
|
66
|
+
# @type="okta scim v2.0",
|
67
|
+
# @state="linked",
|
68
|
+
# @organization_id="org_01F6Q6TFP7RD2PF6J03ANNWDKV",
|
69
|
+
# @created_at="2021-10-27T15:55:47.856Z",
|
70
|
+
# @updated_at="2021-10-27T16:03:43.990Z"
|
71
|
+
#
|
72
|
+
# @return [WorkOS::Directory]
|
73
|
+
sig { params(id: String).returns(WorkOS::Directory) }
|
74
|
+
def get_directory(id:)
|
75
|
+
request = get_request(
|
76
|
+
auth: true,
|
77
|
+
path: "/directories/#{id}",
|
78
|
+
)
|
79
|
+
|
80
|
+
response = execute_request(request: request)
|
81
|
+
|
82
|
+
WorkOS::Directory.new(response.body)
|
83
|
+
end
|
84
|
+
|
56
85
|
# Retrieve directory groups.
|
57
86
|
#
|
58
87
|
# @param [Hash] options An options hash
|
data/lib/workos/profile.rb
CHANGED
@@ -23,7 +23,7 @@ module WorkOS
|
|
23
23
|
@email = T.let(raw.email, String)
|
24
24
|
@first_name = raw.first_name
|
25
25
|
@last_name = raw.last_name
|
26
|
-
@organization_id =
|
26
|
+
@organization_id = raw.organization_id
|
27
27
|
@connection_id = T.let(raw.connection_id, String)
|
28
28
|
@connection_type = T.let(raw.connection_type, String)
|
29
29
|
@idp_id = raw.idp_id
|
@@ -10,7 +10,7 @@ module WorkOS
|
|
10
10
|
const :name, String
|
11
11
|
const :connection_type, String
|
12
12
|
const :domains, T::Array[T.untyped]
|
13
|
-
const :organization_id, String
|
13
|
+
const :organization_id, T.nilable(String)
|
14
14
|
const :state, String
|
15
15
|
const :status, String
|
16
16
|
const :created_at, String
|
@@ -10,7 +10,7 @@ module WorkOS
|
|
10
10
|
const :email, String
|
11
11
|
const :first_name, T.nilable(String)
|
12
12
|
const :last_name, T.nilable(String)
|
13
|
-
const :organization_id, String
|
13
|
+
const :organization_id, T.nilable(String)
|
14
14
|
const :connection_id, String
|
15
15
|
const :connection_type, String
|
16
16
|
const :idp_id, T.nilable(String)
|
data/lib/workos/version.rb
CHANGED
@@ -143,6 +143,38 @@ describe WorkOS::DirectorySync do
|
|
143
143
|
end
|
144
144
|
end
|
145
145
|
|
146
|
+
describe '.get_directory' do
|
147
|
+
context 'with a valid id' do
|
148
|
+
it 'gets the directory details' do
|
149
|
+
VCR.use_cassette('directory_sync/get_directory_with_valid_id') do
|
150
|
+
directory = WorkOS::DirectorySync.get_directory(
|
151
|
+
id: 'directory_01FK17DWRHH7APAFXT5B52PV0W',
|
152
|
+
)
|
153
|
+
|
154
|
+
expect(directory.id).to eq('directory_01FK17DWRHH7APAFXT5B52PV0W')
|
155
|
+
expect(directory.name).to eq('Testing Active Attribute')
|
156
|
+
expect(directory.domain).to eq('example.me')
|
157
|
+
expect(directory.type).to eq('azure scim v2.0')
|
158
|
+
expect(directory.state).to eq('linked')
|
159
|
+
expect(directory.organization_id).to eq('org_01F6Q6TFP7RD2PF6J03ANNWDKV')
|
160
|
+
end
|
161
|
+
end
|
162
|
+
end
|
163
|
+
|
164
|
+
context 'with an invalid id' do
|
165
|
+
it 'raises an error' do
|
166
|
+
VCR.use_cassette('directory_sync/get_directory_with_invalid_id') do
|
167
|
+
expect do
|
168
|
+
WorkOS::DirectorySync.get_directory(id: 'invalid')
|
169
|
+
end.to raise_error(
|
170
|
+
WorkOS::APIError,
|
171
|
+
"Status 404, Directory not found: 'invalid'. - request ID: ",
|
172
|
+
)
|
173
|
+
end
|
174
|
+
end
|
175
|
+
end
|
176
|
+
end
|
177
|
+
|
146
178
|
describe '.list_groups' do
|
147
179
|
context 'with no options' do
|
148
180
|
it 'raises an error' do
|
@@ -0,0 +1,83 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: https://api.workos.com/directories/invalid
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: ''
|
9
|
+
headers:
|
10
|
+
Content-Type:
|
11
|
+
- application/json
|
12
|
+
Accept-Encoding:
|
13
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
14
|
+
Accept:
|
15
|
+
- "*/*"
|
16
|
+
User-Agent:
|
17
|
+
- WorkOS; ruby/3.0.2; x86_64-darwin19; v1.6.1
|
18
|
+
Authorization:
|
19
|
+
- Bearer <API_KEY>
|
20
|
+
response:
|
21
|
+
status:
|
22
|
+
code: 404
|
23
|
+
message: Not Found
|
24
|
+
headers:
|
25
|
+
Date:
|
26
|
+
- Sun, 07 Nov 2021 19:18:31 GMT
|
27
|
+
Content-Type:
|
28
|
+
- application/json; charset=utf-8
|
29
|
+
Transfer-Encoding:
|
30
|
+
- chunked
|
31
|
+
Connection:
|
32
|
+
- keep-alive
|
33
|
+
Content-Security-Policy:
|
34
|
+
- 'default-src ''self'';base-uri ''self'';block-all-mixed-content;font-src ''self''
|
35
|
+
https: data:;frame-ancestors ''self'';img-src ''self'' data:;object-src ''none'';script-src
|
36
|
+
''self'';script-src-attr ''none'';style-src ''self'' https: ''unsafe-inline'';upgrade-insecure-requests'
|
37
|
+
X-Dns-Prefetch-Control:
|
38
|
+
- 'off'
|
39
|
+
Expect-Ct:
|
40
|
+
- max-age=0
|
41
|
+
X-Frame-Options:
|
42
|
+
- SAMEORIGIN
|
43
|
+
Strict-Transport-Security:
|
44
|
+
- max-age=15552000; includeSubDomains
|
45
|
+
X-Download-Options:
|
46
|
+
- noopen
|
47
|
+
X-Content-Type-Options:
|
48
|
+
- nosniff
|
49
|
+
X-Permitted-Cross-Domain-Policies:
|
50
|
+
- none
|
51
|
+
Referrer-Policy:
|
52
|
+
- no-referrer
|
53
|
+
X-Xss-Protection:
|
54
|
+
- '0'
|
55
|
+
Vary:
|
56
|
+
- Origin, Accept-Encoding
|
57
|
+
Access-Control-Allow-Credentials:
|
58
|
+
- 'true'
|
59
|
+
X-Request-Id:
|
60
|
+
-
|
61
|
+
Etag:
|
62
|
+
- W/"5d-Sx4XoCfDLxkGIc0yAjSbi2ILYww"
|
63
|
+
Via:
|
64
|
+
- 1.1 vegur
|
65
|
+
Cf-Cache-Status:
|
66
|
+
- DYNAMIC
|
67
|
+
Report-To:
|
68
|
+
- '{"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=9UGS4Swz%2BHWvLOf0MGTCQbJyS0uBKnB72E77LfjybUN%2FXbJaDPBYfHnAUcgVM7JZbTefNquu4bG0Fw0edgQVoGnTK9OWPuO6fVKmo8XkF1G%2FNgibe8B715ZZje%2FZM7m3%2B9bEbNout5ArQfFyyQ%3D%3D"}],"group":"cf-nel","max_age":604800}'
|
69
|
+
Nel:
|
70
|
+
- '{"success_fraction":0,"report_to":"cf-nel","max_age":604800}'
|
71
|
+
Server:
|
72
|
+
- cloudflare
|
73
|
+
Cf-Ray:
|
74
|
+
- 6aa8e86f7b5a66bf-DFW
|
75
|
+
Alt-Svc:
|
76
|
+
- h3=":443"; ma=86400, h3-29=":443"; ma=86400, h3-28=":443"; ma=86400, h3-27=":443";
|
77
|
+
ma=86400
|
78
|
+
body:
|
79
|
+
encoding: ASCII-8BIT
|
80
|
+
string: '{"message":"Directory not found: ''invalid''.","code":"entity_not_found","entity_id":"invalid"}'
|
81
|
+
http_version:
|
82
|
+
recorded_at: Sun, 07 Nov 2021 19:18:31 GMT
|
83
|
+
recorded_with: VCR 5.0.0
|
@@ -0,0 +1,84 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: https://api.workos.com/directories/directory_01FK17DWRHH7APAFXT5B52PV0W
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: ''
|
9
|
+
headers:
|
10
|
+
Content-Type:
|
11
|
+
- application/json
|
12
|
+
Accept-Encoding:
|
13
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
14
|
+
Accept:
|
15
|
+
- "*/*"
|
16
|
+
User-Agent:
|
17
|
+
- WorkOS; ruby/3.0.2; x86_64-darwin19; v1.6.1
|
18
|
+
Authorization:
|
19
|
+
- Bearer <API_KEY>
|
20
|
+
response:
|
21
|
+
status:
|
22
|
+
code: 200
|
23
|
+
message: OK
|
24
|
+
headers:
|
25
|
+
Date:
|
26
|
+
- Sun, 07 Nov 2021 19:18:31 GMT
|
27
|
+
Content-Type:
|
28
|
+
- application/json; charset=utf-8
|
29
|
+
Transfer-Encoding:
|
30
|
+
- chunked
|
31
|
+
Connection:
|
32
|
+
- keep-alive
|
33
|
+
Content-Security-Policy:
|
34
|
+
- 'default-src ''self'';base-uri ''self'';block-all-mixed-content;font-src ''self''
|
35
|
+
https: data:;frame-ancestors ''self'';img-src ''self'' data:;object-src ''none'';script-src
|
36
|
+
''self'';script-src-attr ''none'';style-src ''self'' https: ''unsafe-inline'';upgrade-insecure-requests'
|
37
|
+
X-Dns-Prefetch-Control:
|
38
|
+
- 'off'
|
39
|
+
Expect-Ct:
|
40
|
+
- max-age=0
|
41
|
+
X-Frame-Options:
|
42
|
+
- SAMEORIGIN
|
43
|
+
Strict-Transport-Security:
|
44
|
+
- max-age=15552000; includeSubDomains
|
45
|
+
X-Download-Options:
|
46
|
+
- noopen
|
47
|
+
X-Content-Type-Options:
|
48
|
+
- nosniff
|
49
|
+
X-Permitted-Cross-Domain-Policies:
|
50
|
+
- none
|
51
|
+
Referrer-Policy:
|
52
|
+
- no-referrer
|
53
|
+
X-Xss-Protection:
|
54
|
+
- '0'
|
55
|
+
Vary:
|
56
|
+
- Origin, Accept-Encoding
|
57
|
+
Access-Control-Allow-Credentials:
|
58
|
+
- 'true'
|
59
|
+
X-Request-Id:
|
60
|
+
- c63229f4-faa3-4693-a769-f132af1d156e
|
61
|
+
Etag:
|
62
|
+
- W/"149-gnrinkKr5pyIOSLENIObBLph9N0"
|
63
|
+
Via:
|
64
|
+
- 1.1 vegur
|
65
|
+
Cf-Cache-Status:
|
66
|
+
- DYNAMIC
|
67
|
+
Report-To:
|
68
|
+
- '{"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=8pe6lAa%2BE5FfpwjmgW1wU%2Fn%2BqfVS0xUHV0FKT%2Fvt%2FpQCa1A4nNwqR1hMyE9ytoi%2F3InXs3rP9ELYw%2FpJZ1Ow0uaNd3xoll7al5maCCPI1JWivjr%2Bxx6G1Otiw5iTIaAh3MXoP0pjUAnZVsf4bw%3D%3D"}],"group":"cf-nel","max_age":604800}'
|
69
|
+
Nel:
|
70
|
+
- '{"success_fraction":0,"report_to":"cf-nel","max_age":604800}'
|
71
|
+
Server:
|
72
|
+
- cloudflare
|
73
|
+
Cf-Ray:
|
74
|
+
- 6aa8e86daa570b76-DFW
|
75
|
+
Alt-Svc:
|
76
|
+
- h3=":443"; ma=86400, h3-29=":443"; ma=86400, h3-28=":443"; ma=86400, h3-27=":443";
|
77
|
+
ma=86400
|
78
|
+
body:
|
79
|
+
encoding: ASCII-8BIT
|
80
|
+
string: '{"object":"directory","id":"directory_01FK17DWRHH7APAFXT5B52PV0W","organization_id":"org_01F6Q6TFP7RD2PF6J03ANNWDKV","name":"Testing
|
81
|
+
Active Attribute","external_key":"QArgyQQkq4G0MquM","type":"azure scim v2.0","state":"linked","created_at":"2021-10-27T15:55:47.856Z","updated_at":"2021-10-27T16:03:43.990Z","domain":"example.me"}'
|
82
|
+
http_version:
|
83
|
+
recorded_at: Sun, 07 Nov 2021 19:18:31 GMT
|
84
|
+
recorded_with: VCR 5.0.0
|
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:
|
4
|
+
version: 2.0.0
|
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-
|
11
|
+
date: 2021-11-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: sorbet-runtime
|
@@ -289,6 +289,8 @@ files:
|
|
289
289
|
- spec/support/fixtures/vcr_cassettes/audit_trail/get_events.yml
|
290
290
|
- spec/support/fixtures/vcr_cassettes/base/execute_request_unauthenticated.yml
|
291
291
|
- spec/support/fixtures/vcr_cassettes/directory_sync/delete_directory.yml
|
292
|
+
- spec/support/fixtures/vcr_cassettes/directory_sync/get_directory_with_invalid_id.yml
|
293
|
+
- spec/support/fixtures/vcr_cassettes/directory_sync/get_directory_with_valid_id.yml
|
292
294
|
- spec/support/fixtures/vcr_cassettes/directory_sync/get_group.yml
|
293
295
|
- spec/support/fixtures/vcr_cassettes/directory_sync/get_group_with_invalid_id.yml
|
294
296
|
- spec/support/fixtures/vcr_cassettes/directory_sync/get_user.yml
|
@@ -362,7 +364,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
362
364
|
- !ruby/object:Gem::Version
|
363
365
|
version: '0'
|
364
366
|
requirements: []
|
365
|
-
rubygems_version: 3.2.
|
367
|
+
rubygems_version: 3.2.31
|
366
368
|
signing_key:
|
367
369
|
specification_version: 4
|
368
370
|
summary: API client for WorkOS
|
@@ -384,6 +386,8 @@ test_files:
|
|
384
386
|
- spec/support/fixtures/vcr_cassettes/audit_trail/get_events.yml
|
385
387
|
- spec/support/fixtures/vcr_cassettes/base/execute_request_unauthenticated.yml
|
386
388
|
- spec/support/fixtures/vcr_cassettes/directory_sync/delete_directory.yml
|
389
|
+
- spec/support/fixtures/vcr_cassettes/directory_sync/get_directory_with_invalid_id.yml
|
390
|
+
- spec/support/fixtures/vcr_cassettes/directory_sync/get_directory_with_valid_id.yml
|
387
391
|
- spec/support/fixtures/vcr_cassettes/directory_sync/get_group.yml
|
388
392
|
- spec/support/fixtures/vcr_cassettes/directory_sync/get_group_with_invalid_id.yml
|
389
393
|
- spec/support/fixtures/vcr_cassettes/directory_sync/get_user.yml
|