workos 3.1.0 → 4.1.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/.semaphore/semaphore.yml +1 -1
- data/Gemfile.lock +1 -1
- data/lib/workos/authentication_response.rb +11 -1
- data/lib/workos/directory_sync.rb +3 -0
- data/lib/workos/impersonator.rb +26 -0
- data/lib/workos/organization_membership.rb +4 -1
- data/lib/workos/organizations.rb +1 -0
- data/lib/workos/refresh_authentication_response.rb +27 -0
- data/lib/workos/sso.rb +1 -0
- data/lib/workos/types/organization_membership_struct.rb +2 -1
- data/lib/workos/user_management.rb +103 -0
- data/lib/workos/version.rb +1 -1
- data/lib/workos.rb +2 -0
- data/spec/lib/workos/directory_sync_spec.rb +30 -15
- data/spec/lib/workos/organizations_spec.rb +6 -3
- data/spec/lib/workos/sso_spec.rb +12 -6
- data/spec/lib/workos/user_management_spec.rb +72 -15
- data/spec/spec_helper.rb +6 -0
- data/spec/support/fixtures/vcr_cassettes/directory_sync/list_directories/with_after.yml +1 -1
- data/spec/support/fixtures/vcr_cassettes/directory_sync/list_directories/with_before.yml +1 -1
- data/spec/support/fixtures/vcr_cassettes/directory_sync/list_directories/with_domain.yml +1 -1
- data/spec/support/fixtures/vcr_cassettes/directory_sync/list_directories/with_limit.yml +1 -1
- data/spec/support/fixtures/vcr_cassettes/directory_sync/list_directories/with_no_options.yml +1 -1
- data/spec/support/fixtures/vcr_cassettes/directory_sync/list_directories/with_search.yml +1 -1
- data/spec/support/fixtures/vcr_cassettes/directory_sync/list_groups/with_after.yml +1 -1
- data/spec/support/fixtures/vcr_cassettes/directory_sync/list_groups/with_before.yml +1 -1
- data/spec/support/fixtures/vcr_cassettes/directory_sync/list_groups/with_directory.yml +1 -1
- data/spec/support/fixtures/vcr_cassettes/directory_sync/list_groups/with_limit.yml +1 -1
- data/spec/support/fixtures/vcr_cassettes/directory_sync/list_groups/with_no_options.yml +1 -1
- data/spec/support/fixtures/vcr_cassettes/directory_sync/list_groups/with_user.yml +1 -1
- data/spec/support/fixtures/vcr_cassettes/directory_sync/list_users/with_after.yml +1 -1
- data/spec/support/fixtures/vcr_cassettes/directory_sync/list_users/with_before.yml +1 -1
- data/spec/support/fixtures/vcr_cassettes/directory_sync/list_users/with_directory.yml +1 -1
- data/spec/support/fixtures/vcr_cassettes/directory_sync/list_users/with_group.yml +1 -1
- data/spec/support/fixtures/vcr_cassettes/directory_sync/list_users/with_limit.yml +1 -1
- data/spec/support/fixtures/vcr_cassettes/directory_sync/list_users/with_no_options.yml +72 -71
- data/spec/support/fixtures/vcr_cassettes/organization/list.yml +1 -1
- data/spec/support/fixtures/vcr_cassettes/sso/list_connections/with_after.yml +1 -1
- data/spec/support/fixtures/vcr_cassettes/sso/list_connections/with_before.yml +1 -1
- data/spec/support/fixtures/vcr_cassettes/sso/list_connections/with_connection_type.yml +1 -1
- data/spec/support/fixtures/vcr_cassettes/sso/list_connections/with_domain.yml +1 -1
- data/spec/support/fixtures/vcr_cassettes/sso/list_connections/with_limit.yml +1 -1
- data/spec/support/fixtures/vcr_cassettes/sso/list_connections/with_no_options.yml +1 -1
- data/spec/support/fixtures/vcr_cassettes/sso/list_connections/with_organization_id.yml +1 -1
- data/spec/support/fixtures/vcr_cassettes/user_management/authenticate_with_code/valid.yml +1 -1
- data/spec/support/fixtures/vcr_cassettes/user_management/authenticate_with_code/valid_with_impersonator.yml +80 -0
- data/spec/support/fixtures/vcr_cassettes/user_management/authenticate_with_email_verification/valid.yml +1 -1
- data/spec/support/fixtures/vcr_cassettes/user_management/authenticate_with_magic_auth/valid.yml +1 -1
- data/spec/support/fixtures/vcr_cassettes/user_management/authenticate_with_organization_selection/valid.yml +1 -1
- data/spec/support/fixtures/vcr_cassettes/user_management/authenticate_with_password/valid.yml +1 -1
- data/spec/support/fixtures/vcr_cassettes/user_management/authenticate_with_refresh_code/invalid.yml +81 -0
- data/spec/support/fixtures/vcr_cassettes/user_management/authenticate_with_refresh_token/valid.yml +81 -0
- data/spec/support/fixtures/vcr_cassettes/user_management/authenticate_with_totp/valid.yml +1 -1
- data/spec/support/fixtures/vcr_cassettes/user_management/create_organization_membership/valid.yml +1 -1
- data/spec/support/fixtures/vcr_cassettes/user_management/get_organization_membership.yml +1 -1
- data/spec/support/fixtures/vcr_cassettes/user_management/list_invitations/with_after.yml +1 -1
- data/spec/support/fixtures/vcr_cassettes/user_management/list_invitations/with_before.yml +1 -1
- data/spec/support/fixtures/vcr_cassettes/user_management/list_invitations/with_limit.yml +1 -1
- data/spec/support/fixtures/vcr_cassettes/user_management/list_invitations/with_no_options.yml +1 -1
- data/spec/support/fixtures/vcr_cassettes/user_management/list_invitations/with_organization_id.yml +1 -1
- data/spec/support/fixtures/vcr_cassettes/user_management/list_organization_memberships/no_options.yml +2 -2
- data/spec/support/fixtures/vcr_cassettes/user_management/list_organization_memberships/with_options.yml +1 -1
- data/spec/support/fixtures/vcr_cassettes/user_management/list_users/no_options.yml +1 -1
- metadata +10 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: '0828780b58051c7e4da7d76717a9eb71209803a508c71ca287a99dabcb0cc55a'
|
|
4
|
+
data.tar.gz: 5da4147318e6c1f9947b50f69e8bf37dfbed7fd936deda7c46c9a072abfed99f
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: '0916ae54fc3f1e30edf8f03dab9a75382062122a5b554aeefbaea26b39edc2e4d6415a9bdda25e53f19c5b82e6bb6e5e675c7c4ba1bc971a689346e6af997935'
|
|
7
|
+
data.tar.gz: 232a18c18b3c58181dd3f3a16c8c8f16a9f7aa7d1dc5ac088dbda986b9fd86347fe41def6a27d3d19ca7ff2867f03353daefa611c6df175ad5b9464539cadfff
|
data/.semaphore/semaphore.yml
CHANGED
data/Gemfile.lock
CHANGED
|
@@ -8,19 +8,29 @@ module WorkOS
|
|
|
8
8
|
include HashProvider
|
|
9
9
|
extend T::Sig
|
|
10
10
|
|
|
11
|
-
attr_accessor :user, :organization_id
|
|
11
|
+
attr_accessor :user, :organization_id, :impersonator, :access_token, :refresh_token
|
|
12
12
|
|
|
13
13
|
sig { params(authentication_response_json: String).void }
|
|
14
14
|
def initialize(authentication_response_json)
|
|
15
15
|
json = JSON.parse(authentication_response_json, symbolize_names: true)
|
|
16
16
|
@user = WorkOS::User.new(json[:user].to_json)
|
|
17
17
|
@organization_id = T.let(json[:organization_id], T.nilable(String))
|
|
18
|
+
@impersonator =
|
|
19
|
+
if (impersonator_json = json[:impersonator])
|
|
20
|
+
Impersonator.new(email: impersonator_json[:email],
|
|
21
|
+
reason: impersonator_json[:reason],)
|
|
22
|
+
end
|
|
23
|
+
@access_token = T.let(json[:access_token], String)
|
|
24
|
+
@refresh_token = T.let(json[:refresh_token], String)
|
|
18
25
|
end
|
|
19
26
|
|
|
20
27
|
def to_json(*)
|
|
21
28
|
{
|
|
22
29
|
user: user.to_json,
|
|
23
30
|
organization_id: organization_id,
|
|
31
|
+
impersonator: impersonator.to_json,
|
|
32
|
+
access_token: access_token,
|
|
33
|
+
refresh_token: refresh_token,
|
|
24
34
|
}
|
|
25
35
|
end
|
|
26
36
|
end
|
|
@@ -35,6 +35,7 @@ module WorkOS
|
|
|
35
35
|
).returns(WorkOS::Types::ListStruct)
|
|
36
36
|
end
|
|
37
37
|
def list_directories(options = {})
|
|
38
|
+
options[:order] ||= 'desc'
|
|
38
39
|
response = execute_request(
|
|
39
40
|
request: get_request(
|
|
40
41
|
path: '/directories',
|
|
@@ -104,6 +105,7 @@ module WorkOS
|
|
|
104
105
|
).returns(WorkOS::Types::ListStruct)
|
|
105
106
|
end
|
|
106
107
|
def list_groups(options = {})
|
|
108
|
+
options[:order] ||= 'desc'
|
|
107
109
|
response = execute_request(
|
|
108
110
|
request: get_request(
|
|
109
111
|
path: '/directory_groups',
|
|
@@ -144,6 +146,7 @@ module WorkOS
|
|
|
144
146
|
).returns(WorkOS::Types::ListStruct)
|
|
145
147
|
end
|
|
146
148
|
def list_users(options = {})
|
|
149
|
+
options[:order] ||= 'desc'
|
|
147
150
|
response = execute_request(
|
|
148
151
|
request: get_request(
|
|
149
152
|
path: '/directory_users',
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
# typed: true
|
|
3
|
+
|
|
4
|
+
module WorkOS
|
|
5
|
+
# Contains information about a WorkOS Dashboard user impersonating
|
|
6
|
+
# a User Management user.
|
|
7
|
+
class Impersonator
|
|
8
|
+
include HashProvider
|
|
9
|
+
extend T::Sig
|
|
10
|
+
|
|
11
|
+
attr_accessor :email, :reason
|
|
12
|
+
|
|
13
|
+
sig { params(email: String, reason: T.nilable(String)).void }
|
|
14
|
+
def initialize(email:, reason:)
|
|
15
|
+
@email = email
|
|
16
|
+
@reason = reason
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def to_json(*)
|
|
20
|
+
{
|
|
21
|
+
email: email,
|
|
22
|
+
reason: reason,
|
|
23
|
+
}
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
@@ -9,7 +9,7 @@ module WorkOS
|
|
|
9
9
|
include HashProvider
|
|
10
10
|
extend T::Sig
|
|
11
11
|
|
|
12
|
-
attr_accessor :id, :user_id, :organization_id, :created_at, :updated_at
|
|
12
|
+
attr_accessor :id, :user_id, :organization_id, :status, :created_at, :updated_at
|
|
13
13
|
|
|
14
14
|
sig { params(json: String).void }
|
|
15
15
|
def initialize(json)
|
|
@@ -18,6 +18,7 @@ module WorkOS
|
|
|
18
18
|
@id = T.let(raw.id, String)
|
|
19
19
|
@user_id = T.let(raw.user_id, String)
|
|
20
20
|
@organization_id = raw.organization_id
|
|
21
|
+
@status = T.let(raw.status, String)
|
|
21
22
|
@created_at = T.let(raw.created_at, String)
|
|
22
23
|
@updated_at = T.let(raw.updated_at, String)
|
|
23
24
|
end
|
|
@@ -27,6 +28,7 @@ module WorkOS
|
|
|
27
28
|
id: id,
|
|
28
29
|
user_id: user_id,
|
|
29
30
|
organization_id: organization_id,
|
|
31
|
+
status: status,
|
|
30
32
|
created_at: created_at,
|
|
31
33
|
updated_at: updated_at,
|
|
32
34
|
}
|
|
@@ -42,6 +44,7 @@ module WorkOS
|
|
|
42
44
|
id: hash[:id],
|
|
43
45
|
user_id: hash[:user_id],
|
|
44
46
|
organization_id: hash[:organization_id],
|
|
47
|
+
status: hash[:status],
|
|
45
48
|
created_at: hash[:created_at],
|
|
46
49
|
updated_at: hash[:updated_at],
|
|
47
50
|
)
|
data/lib/workos/organizations.rb
CHANGED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
# typed: true
|
|
3
|
+
|
|
4
|
+
module WorkOS
|
|
5
|
+
# The RefreshAuthenticationResponse contains response data from a successful
|
|
6
|
+
# `UserManagement.authenticate_with_refresh_token` call
|
|
7
|
+
class RefreshAuthenticationResponse
|
|
8
|
+
include HashProvider
|
|
9
|
+
extend T::Sig
|
|
10
|
+
|
|
11
|
+
attr_accessor :access_token, :refresh_token
|
|
12
|
+
|
|
13
|
+
sig { params(authentication_response_json: String).void }
|
|
14
|
+
def initialize(authentication_response_json)
|
|
15
|
+
json = JSON.parse(authentication_response_json, symbolize_names: true)
|
|
16
|
+
@access_token = T.let(json[:access_token], String)
|
|
17
|
+
@refresh_token = T.let(json[:refresh_token], String)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def to_json(*)
|
|
21
|
+
{
|
|
22
|
+
access_token: access_token,
|
|
23
|
+
refresh_token: refresh_token,
|
|
24
|
+
}
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
data/lib/workos/sso.rb
CHANGED
|
@@ -7,7 +7,8 @@ module WorkOS
|
|
|
7
7
|
class OrganizationMembershipStruct < T::Struct
|
|
8
8
|
const :id, String
|
|
9
9
|
const :user_id, String
|
|
10
|
-
const :organization_id, String
|
|
10
|
+
const :organization_id, T.nilable(String)
|
|
11
|
+
const :status, String
|
|
11
12
|
const :created_at, String
|
|
12
13
|
const :updated_at, String
|
|
13
14
|
end
|
|
@@ -157,6 +157,7 @@ module WorkOS
|
|
|
157
157
|
).returns(WorkOS::Types::ListStruct)
|
|
158
158
|
end
|
|
159
159
|
def list_users(options = {})
|
|
160
|
+
options[:order] ||= 'desc'
|
|
160
161
|
response = execute_request(
|
|
161
162
|
request: get_request(
|
|
162
163
|
path: '/user_management/users',
|
|
@@ -365,6 +366,46 @@ module WorkOS
|
|
|
365
366
|
WorkOS::AuthenticationResponse.new(response.body)
|
|
366
367
|
end
|
|
367
368
|
|
|
369
|
+
# Authenticate a user using a refresh token.
|
|
370
|
+
#
|
|
371
|
+
# @param [String] refresh_token The refresh token previously obtained from a successful authentication call
|
|
372
|
+
# @param [String] client_id The WorkOS client ID for the environment
|
|
373
|
+
# @param [String] ip_address The IP address of the request from the user who is attempting to authenticate.
|
|
374
|
+
# @param [String] user_agent The user agent of the request from the user who is attempting to authenticate.
|
|
375
|
+
#
|
|
376
|
+
# @return WorkOS::RefreshAuthenticationResponse
|
|
377
|
+
|
|
378
|
+
sig do
|
|
379
|
+
params(
|
|
380
|
+
refresh_token: String,
|
|
381
|
+
client_id: String,
|
|
382
|
+
ip_address: T.nilable(String),
|
|
383
|
+
user_agent: T.nilable(String),
|
|
384
|
+
).returns(WorkOS::RefreshAuthenticationResponse)
|
|
385
|
+
end
|
|
386
|
+
def authenticate_with_refresh_token(
|
|
387
|
+
refresh_token:,
|
|
388
|
+
client_id:,
|
|
389
|
+
ip_address: nil,
|
|
390
|
+
user_agent: nil
|
|
391
|
+
)
|
|
392
|
+
response = execute_request(
|
|
393
|
+
request: post_request(
|
|
394
|
+
path: '/user_management/authenticate',
|
|
395
|
+
body: {
|
|
396
|
+
refresh_token: refresh_token,
|
|
397
|
+
client_id: client_id,
|
|
398
|
+
client_secret: WorkOS.config.key!,
|
|
399
|
+
ip_address: ip_address,
|
|
400
|
+
user_agent: user_agent,
|
|
401
|
+
grant_type: 'refresh_token',
|
|
402
|
+
},
|
|
403
|
+
),
|
|
404
|
+
)
|
|
405
|
+
|
|
406
|
+
WorkOS::RefreshAuthenticationResponse.new(response.body)
|
|
407
|
+
end
|
|
408
|
+
|
|
368
409
|
# Authenticate user by Magic Auth Code.
|
|
369
410
|
#
|
|
370
411
|
# @param [String] code The one-time code that was emailed to the user.
|
|
@@ -553,6 +594,66 @@ module WorkOS
|
|
|
553
594
|
WorkOS::AuthenticationResponse.new(response.body)
|
|
554
595
|
end
|
|
555
596
|
|
|
597
|
+
# Get the logout URL for a session
|
|
598
|
+
#
|
|
599
|
+
# The user's browser should be navigated to this URL
|
|
600
|
+
#
|
|
601
|
+
# @param [String] session_id The session ID can be found in the `sid`
|
|
602
|
+
# claim of the access token
|
|
603
|
+
#
|
|
604
|
+
# @return String
|
|
605
|
+
sig do
|
|
606
|
+
params(
|
|
607
|
+
session_id: String,
|
|
608
|
+
).returns(String)
|
|
609
|
+
end
|
|
610
|
+
def get_logout_url(session_id:)
|
|
611
|
+
URI::HTTPS.build(
|
|
612
|
+
host: WorkOS.config.api_hostname,
|
|
613
|
+
path: '/user_management/sessions/logout',
|
|
614
|
+
query: "session_id=#{session_id}",
|
|
615
|
+
).to_s
|
|
616
|
+
end
|
|
617
|
+
|
|
618
|
+
# Revokes a session
|
|
619
|
+
#
|
|
620
|
+
# @param [String] session_id The session ID can be found in the `sid`
|
|
621
|
+
# claim of the access token
|
|
622
|
+
sig do
|
|
623
|
+
params(
|
|
624
|
+
session_id: String,
|
|
625
|
+
).void
|
|
626
|
+
end
|
|
627
|
+
def revoke_session(session_id:)
|
|
628
|
+
execute_request(
|
|
629
|
+
request: post_request(
|
|
630
|
+
path: '/user_management/sessions/revoke',
|
|
631
|
+
body: {
|
|
632
|
+
session_id: session_id,
|
|
633
|
+
},
|
|
634
|
+
),
|
|
635
|
+
)
|
|
636
|
+
end
|
|
637
|
+
|
|
638
|
+
# Get the JWKS URL
|
|
639
|
+
#
|
|
640
|
+
# The JWKS can be used to validate the access token returned upon successful authentication
|
|
641
|
+
#
|
|
642
|
+
# @param [String] client_id The WorkOS client ID for the environment
|
|
643
|
+
#
|
|
644
|
+
# @return String
|
|
645
|
+
sig do
|
|
646
|
+
params(
|
|
647
|
+
client_id: String,
|
|
648
|
+
).returns(String)
|
|
649
|
+
end
|
|
650
|
+
def get_jwks_url(client_id)
|
|
651
|
+
URI::HTTPS.build(
|
|
652
|
+
host: WorkOS.config.api_hostname,
|
|
653
|
+
path: "/sso/jwks/#{client_id}",
|
|
654
|
+
).to_s
|
|
655
|
+
end
|
|
656
|
+
|
|
556
657
|
# Create a one-time Magic Auth code and emails it to the user.
|
|
557
658
|
#
|
|
558
659
|
# @param [String] email The email address the one-time code will be sent to.
|
|
@@ -783,6 +884,7 @@ module WorkOS
|
|
|
783
884
|
).returns(WorkOS::Types::ListStruct)
|
|
784
885
|
end
|
|
785
886
|
def list_organization_memberships(options = {})
|
|
887
|
+
options[:order] ||= 'desc'
|
|
786
888
|
response = execute_request(
|
|
787
889
|
request: get_request(
|
|
788
890
|
path: '/user_management/organization_memberships',
|
|
@@ -889,6 +991,7 @@ module WorkOS
|
|
|
889
991
|
).returns(WorkOS::Types::ListStruct)
|
|
890
992
|
end
|
|
891
993
|
def list_invitations(options = {})
|
|
994
|
+
options[:order] ||= 'desc'
|
|
892
995
|
response = execute_request(
|
|
893
996
|
request: get_request(
|
|
894
997
|
path: '/user_management/invitations',
|
data/lib/workos/version.rb
CHANGED
data/lib/workos.rb
CHANGED
|
@@ -58,6 +58,7 @@ module WorkOS
|
|
|
58
58
|
autoload :Event, 'workos/event'
|
|
59
59
|
autoload :Events, 'workos/events'
|
|
60
60
|
autoload :Factor, 'workos/factor'
|
|
61
|
+
autoload :Impersonator, 'workos/impersonator'
|
|
61
62
|
autoload :Invitation, 'workos/invitation'
|
|
62
63
|
autoload :MFA, 'workos/mfa'
|
|
63
64
|
autoload :Organization, 'workos/organization'
|
|
@@ -67,6 +68,7 @@ module WorkOS
|
|
|
67
68
|
autoload :Portal, 'workos/portal'
|
|
68
69
|
autoload :Profile, 'workos/profile'
|
|
69
70
|
autoload :ProfileAndToken, 'workos/profile_and_token'
|
|
71
|
+
autoload :RefreshAuthenticationResponse, 'workos/refresh_authentication_response'
|
|
70
72
|
autoload :SSO, 'workos/sso'
|
|
71
73
|
autoload :Types, 'workos/types'
|
|
72
74
|
autoload :User, 'workos/user'
|
|
@@ -24,7 +24,8 @@ describe WorkOS::DirectorySync do
|
|
|
24
24
|
context 'with domain option' do
|
|
25
25
|
it 'forms the proper request to the API' do
|
|
26
26
|
request_args = [
|
|
27
|
-
'/directories?domain=foo-corp.com'
|
|
27
|
+
'/directories?domain=foo-corp.com&'\
|
|
28
|
+
'order=desc',
|
|
28
29
|
'Content-Type' => 'application/json'
|
|
29
30
|
]
|
|
30
31
|
|
|
@@ -46,7 +47,8 @@ describe WorkOS::DirectorySync do
|
|
|
46
47
|
context 'with search option' do
|
|
47
48
|
it 'forms the proper request to the API' do
|
|
48
49
|
request_args = [
|
|
49
|
-
'/directories?search=Testing'
|
|
50
|
+
'/directories?search=Testing&'\
|
|
51
|
+
'order=desc',
|
|
50
52
|
'Content-Type' => 'application/json'
|
|
51
53
|
]
|
|
52
54
|
|
|
@@ -69,7 +71,8 @@ describe WorkOS::DirectorySync do
|
|
|
69
71
|
context 'with the before option' do
|
|
70
72
|
it 'forms the proper request to the API' do
|
|
71
73
|
request_args = [
|
|
72
|
-
'/directories?before=directory_01FGCPNV312FHFRCX0BYWHVSE1'
|
|
74
|
+
'/directories?before=directory_01FGCPNV312FHFRCX0BYWHVSE1&'\
|
|
75
|
+
'order=desc',
|
|
73
76
|
'Content-Type' => 'application/json'
|
|
74
77
|
]
|
|
75
78
|
|
|
@@ -91,7 +94,8 @@ describe WorkOS::DirectorySync do
|
|
|
91
94
|
context 'with the after option' do
|
|
92
95
|
it 'forms the proper request to the API' do
|
|
93
96
|
request_args = [
|
|
94
|
-
'/directories?after=directory_01FGCPNV312FHFRCX0BYWHVSE1'
|
|
97
|
+
'/directories?after=directory_01FGCPNV312FHFRCX0BYWHVSE1&'\
|
|
98
|
+
'order=desc',
|
|
95
99
|
'Content-Type' => 'application/json'
|
|
96
100
|
]
|
|
97
101
|
|
|
@@ -111,7 +115,8 @@ describe WorkOS::DirectorySync do
|
|
|
111
115
|
context 'with the limit option' do
|
|
112
116
|
it 'forms the proper request to the API' do
|
|
113
117
|
request_args = [
|
|
114
|
-
'/directories?limit=2'
|
|
118
|
+
'/directories?limit=2&'\
|
|
119
|
+
'order=desc',
|
|
115
120
|
'Content-Type' => 'application/json'
|
|
116
121
|
]
|
|
117
122
|
|
|
@@ -189,7 +194,8 @@ describe WorkOS::DirectorySync do
|
|
|
189
194
|
context 'with directory option' do
|
|
190
195
|
it 'forms the proper request to the API' do
|
|
191
196
|
request_args = [
|
|
192
|
-
'/directory_groups?directory=directory_01G2Z8ADK5NPMVTWF48MVVE4HT'
|
|
197
|
+
'/directory_groups?directory=directory_01G2Z8ADK5NPMVTWF48MVVE4HT&'\
|
|
198
|
+
'order=desc',
|
|
193
199
|
'Content-Type' => 'application/json'
|
|
194
200
|
]
|
|
195
201
|
|
|
@@ -212,7 +218,8 @@ describe WorkOS::DirectorySync do
|
|
|
212
218
|
context 'with user option' do
|
|
213
219
|
it 'forms the proper request to the API' do
|
|
214
220
|
request_args = [
|
|
215
|
-
'/directory_groups?user=directory_user_01G2Z8D4FDB28ZNSRRBVCF2E0P'
|
|
221
|
+
'/directory_groups?user=directory_user_01G2Z8D4FDB28ZNSRRBVCF2E0P&'\
|
|
222
|
+
'order=desc',
|
|
216
223
|
'Content-Type' => 'application/json'
|
|
217
224
|
]
|
|
218
225
|
|
|
@@ -235,7 +242,8 @@ describe WorkOS::DirectorySync do
|
|
|
235
242
|
it 'forms the proper request to the API' do
|
|
236
243
|
request_args = [
|
|
237
244
|
'/directory_groups?before=directory_group_01G2Z8D4ZR8RJ03Y1W7P9K8NMG&' \
|
|
238
|
-
'directory=directory_01G2Z8ADK5NPMVTWF48MVVE4HT'
|
|
245
|
+
'directory=directory_01G2Z8ADK5NPMVTWF48MVVE4HT&'\
|
|
246
|
+
'order=desc',
|
|
239
247
|
'Content-Type' => 'application/json'
|
|
240
248
|
]
|
|
241
249
|
|
|
@@ -259,7 +267,8 @@ describe WorkOS::DirectorySync do
|
|
|
259
267
|
it 'forms the proper request to the API' do
|
|
260
268
|
request_args = [
|
|
261
269
|
'/directory_groups?after=directory_group_01G2Z8D4ZR8RJ03Y1W7P9K8NMG&' \
|
|
262
|
-
'directory=directory_01G2Z8ADK5NPMVTWF48MVVE4HT'
|
|
270
|
+
'directory=directory_01G2Z8ADK5NPMVTWF48MVVE4HT&'\
|
|
271
|
+
'order=desc',
|
|
263
272
|
'Content-Type' => 'application/json'
|
|
264
273
|
]
|
|
265
274
|
|
|
@@ -283,7 +292,8 @@ describe WorkOS::DirectorySync do
|
|
|
283
292
|
it 'forms the proper request to the API' do
|
|
284
293
|
request_args = [
|
|
285
294
|
'/directory_groups?limit=2&' \
|
|
286
|
-
'directory=directory_01G2Z8ADK5NPMVTWF48MVVE4HT'
|
|
295
|
+
'directory=directory_01G2Z8ADK5NPMVTWF48MVVE4HT&'\
|
|
296
|
+
'order=desc',
|
|
287
297
|
'Content-Type' => 'application/json'
|
|
288
298
|
]
|
|
289
299
|
|
|
@@ -318,7 +328,8 @@ describe WorkOS::DirectorySync do
|
|
|
318
328
|
context 'with directory option' do
|
|
319
329
|
it 'forms the proper request to the API' do
|
|
320
330
|
request_args = [
|
|
321
|
-
'/directory_users?directory=directory_01FAZYMST676QMTFN1DDJZZX87'
|
|
331
|
+
'/directory_users?directory=directory_01FAZYMST676QMTFN1DDJZZX87&'\
|
|
332
|
+
'order=desc',
|
|
322
333
|
'Content-Type' => 'application/json'
|
|
323
334
|
]
|
|
324
335
|
|
|
@@ -341,7 +352,8 @@ describe WorkOS::DirectorySync do
|
|
|
341
352
|
context 'with group option' do
|
|
342
353
|
it 'forms the proper request to the API' do
|
|
343
354
|
request_args = [
|
|
344
|
-
'/directory_users?group=directory_group_01FBXGP79EJAYKW0WS9JCK1V6E'
|
|
355
|
+
'/directory_users?group=directory_group_01FBXGP79EJAYKW0WS9JCK1V6E&'\
|
|
356
|
+
'order=desc',
|
|
345
357
|
'Content-Type' => 'application/json'
|
|
346
358
|
]
|
|
347
359
|
|
|
@@ -364,7 +376,8 @@ describe WorkOS::DirectorySync do
|
|
|
364
376
|
it 'forms the proper request to the API' do
|
|
365
377
|
request_args = [
|
|
366
378
|
'/directory_users?before=directory_user_01FAZYNPC8TJBP7Y2ERT51MGDF&'\
|
|
367
|
-
'directory=directory_01FAZYMST676QMTFN1DDJZZX87'
|
|
379
|
+
'directory=directory_01FAZYMST676QMTFN1DDJZZX87&'\
|
|
380
|
+
'order=desc',
|
|
368
381
|
'Content-Type' => 'application/json'
|
|
369
382
|
]
|
|
370
383
|
|
|
@@ -388,7 +401,8 @@ describe WorkOS::DirectorySync do
|
|
|
388
401
|
it 'forms the proper request to the API' do
|
|
389
402
|
request_args = [
|
|
390
403
|
'/directory_users?after=directory_user_01FAZYNPC8TJBP7Y2ERT51MGDF&' \
|
|
391
|
-
'directory=directory_01FAZYMST676QMTFN1DDJZZX87'
|
|
404
|
+
'directory=directory_01FAZYMST676QMTFN1DDJZZX87&'\
|
|
405
|
+
'order=desc',
|
|
392
406
|
'Content-Type' => 'application/json'
|
|
393
407
|
]
|
|
394
408
|
|
|
@@ -412,7 +426,8 @@ describe WorkOS::DirectorySync do
|
|
|
412
426
|
it 'forms the proper request to the API' do
|
|
413
427
|
request_args = [
|
|
414
428
|
'/directory_users?limit=2&' \
|
|
415
|
-
'directory=directory_01FAZYMST676QMTFN1DDJZZX87'
|
|
429
|
+
'directory=directory_01FAZYMST676QMTFN1DDJZZX87&'\
|
|
430
|
+
'order=desc',
|
|
416
431
|
'Content-Type' => 'application/json'
|
|
417
432
|
]
|
|
418
433
|
|
|
@@ -121,7 +121,8 @@ describe WorkOS::Organizations do
|
|
|
121
121
|
context 'with the before option' do
|
|
122
122
|
it 'forms the proper request to the API' do
|
|
123
123
|
request_args = [
|
|
124
|
-
'/organizations?before=before-id'
|
|
124
|
+
'/organizations?before=before-id&'\
|
|
125
|
+
'order=desc',
|
|
125
126
|
'Content-Type' => 'application/json'
|
|
126
127
|
]
|
|
127
128
|
|
|
@@ -143,7 +144,8 @@ describe WorkOS::Organizations do
|
|
|
143
144
|
context 'with the after option' do
|
|
144
145
|
it 'forms the proper request to the API' do
|
|
145
146
|
request_args = [
|
|
146
|
-
'/organizations?after=after-id'
|
|
147
|
+
'/organizations?after=after-id&'\
|
|
148
|
+
'order=desc',
|
|
147
149
|
'Content-Type' => 'application/json'
|
|
148
150
|
]
|
|
149
151
|
|
|
@@ -163,7 +165,8 @@ describe WorkOS::Organizations do
|
|
|
163
165
|
context 'with the limit option' do
|
|
164
166
|
it 'forms the proper request to the API' do
|
|
165
167
|
request_args = [
|
|
166
|
-
'/organizations?limit=10'
|
|
168
|
+
'/organizations?limit=10&'\
|
|
169
|
+
'order=desc',
|
|
167
170
|
'Content-Type' => 'application/json'
|
|
168
171
|
]
|
|
169
172
|
|
data/spec/lib/workos/sso_spec.rb
CHANGED
|
@@ -457,7 +457,8 @@ describe WorkOS::SSO do
|
|
|
457
457
|
context 'with connection_type option' do
|
|
458
458
|
it 'forms the proper request to the API' do
|
|
459
459
|
request_args = [
|
|
460
|
-
'/connections?connection_type=OktaSAML'
|
|
460
|
+
'/connections?connection_type=OktaSAML&'\
|
|
461
|
+
'order=desc',
|
|
461
462
|
'Content-Type' => 'application/json'
|
|
462
463
|
]
|
|
463
464
|
|
|
@@ -480,7 +481,8 @@ describe WorkOS::SSO do
|
|
|
480
481
|
context 'with domain option' do
|
|
481
482
|
it 'forms the proper request to the API' do
|
|
482
483
|
request_args = [
|
|
483
|
-
'/connections?domain=foo-corp.com'
|
|
484
|
+
'/connections?domain=foo-corp.com&'\
|
|
485
|
+
'order=desc',
|
|
484
486
|
'Content-Type' => 'application/json'
|
|
485
487
|
]
|
|
486
488
|
|
|
@@ -502,7 +504,8 @@ describe WorkOS::SSO do
|
|
|
502
504
|
context 'with organization_id option' do
|
|
503
505
|
it 'forms the proper request to the API' do
|
|
504
506
|
request_args = [
|
|
505
|
-
'/connections?organization_id=org_01F9293WD2PDEEV4Y625XPZVG7'
|
|
507
|
+
'/connections?organization_id=org_01F9293WD2PDEEV4Y625XPZVG7&'\
|
|
508
|
+
'order=desc',
|
|
506
509
|
'Content-Type' => 'application/json'
|
|
507
510
|
]
|
|
508
511
|
|
|
@@ -527,7 +530,8 @@ describe WorkOS::SSO do
|
|
|
527
530
|
context 'with limit option' do
|
|
528
531
|
it 'forms the proper request to the API' do
|
|
529
532
|
request_args = [
|
|
530
|
-
'/connections?limit=2'
|
|
533
|
+
'/connections?limit=2&'\
|
|
534
|
+
'order=desc',
|
|
531
535
|
'Content-Type' => 'application/json'
|
|
532
536
|
]
|
|
533
537
|
|
|
@@ -549,7 +553,8 @@ describe WorkOS::SSO do
|
|
|
549
553
|
context 'with before option' do
|
|
550
554
|
it 'forms the proper request to the API' do
|
|
551
555
|
request_args = [
|
|
552
|
-
'/connections?before=conn_01FA3WGCWPCCY1V2FGES2FDNP7'
|
|
556
|
+
'/connections?before=conn_01FA3WGCWPCCY1V2FGES2FDNP7&'\
|
|
557
|
+
'order=desc',
|
|
553
558
|
'Content-Type' => 'application/json'
|
|
554
559
|
]
|
|
555
560
|
|
|
@@ -571,7 +576,8 @@ describe WorkOS::SSO do
|
|
|
571
576
|
context 'with after option' do
|
|
572
577
|
it 'forms the proper request to the API' do
|
|
573
578
|
request_args = [
|
|
574
|
-
'/connections?after=conn_01FA3WGCWPCCY1V2FGES2FDNP7'
|
|
579
|
+
'/connections?after=conn_01FA3WGCWPCCY1V2FGES2FDNP7&'\
|
|
580
|
+
'order=desc',
|
|
575
581
|
'Content-Type' => 'application/json'
|
|
576
582
|
]
|
|
577
583
|
|