workos 2.16.0 → 3.0.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.
Files changed (114) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +2 -0
  3. data/Gemfile.lock +5 -14
  4. data/lib/workos/authentication_factor_and_challenge.rb +31 -0
  5. data/lib/workos/authentication_response.rb +27 -0
  6. data/lib/workos/client.rb +1 -1
  7. data/lib/workos/configuration.rb +1 -1
  8. data/lib/workos/invitation.rb +68 -0
  9. data/lib/workos/organization_membership.rb +50 -0
  10. data/lib/workos/sso.rb +1 -1
  11. data/lib/workos/types/invitation_struct.rb +20 -0
  12. data/lib/workos/types/magic_auth_challenge_struct.rb +12 -0
  13. data/lib/workos/types/organization_membership_struct.rb +15 -0
  14. data/lib/workos/types/provider_enum.rb +1 -0
  15. data/lib/workos/types/user_struct.rb +17 -0
  16. data/lib/workos/types.rb +9 -5
  17. data/lib/workos/user.rb +57 -0
  18. data/lib/workos/user_and_token.rb +29 -0
  19. data/lib/workos/user_management.rb +1008 -0
  20. data/lib/workos/user_response.rb +25 -0
  21. data/lib/workos/version.rb +1 -1
  22. data/lib/workos.rb +35 -28
  23. data/spec/lib/workos/sso_spec.rb +8 -8
  24. data/spec/lib/workos/user_management_spec.rb +1092 -0
  25. data/spec/support/fixtures/vcr_cassettes/user_management/authenticate_with_code/invalid.yml +84 -0
  26. data/spec/support/fixtures/vcr_cassettes/user_management/authenticate_with_code/valid.yml +82 -0
  27. data/spec/support/fixtures/vcr_cassettes/user_management/authenticate_with_email_verification/invalid.yml +83 -0
  28. data/spec/support/fixtures/vcr_cassettes/user_management/authenticate_with_email_verification/valid.yml +81 -0
  29. data/spec/support/fixtures/vcr_cassettes/user_management/authenticate_with_magic_auth/invalid.yml +82 -0
  30. data/spec/support/fixtures/vcr_cassettes/user_management/authenticate_with_magic_auth/valid.yml +82 -0
  31. data/spec/support/fixtures/vcr_cassettes/user_management/authenticate_with_organization_selection/invalid.yml +81 -0
  32. data/spec/support/fixtures/vcr_cassettes/user_management/authenticate_with_organization_selection/valid.yml +82 -0
  33. data/spec/support/fixtures/vcr_cassettes/user_management/authenticate_with_password/invalid.yml +82 -0
  34. data/spec/support/fixtures/vcr_cassettes/user_management/authenticate_with_password/valid.yml +82 -0
  35. data/spec/support/fixtures/vcr_cassettes/user_management/authenticate_with_totp/invalid.yml +83 -0
  36. data/spec/support/fixtures/vcr_cassettes/user_management/authenticate_with_totp/valid.yml +81 -0
  37. data/spec/support/fixtures/vcr_cassettes/user_management/confirm_password_reset/invalid.yml +82 -0
  38. data/spec/support/fixtures/vcr_cassettes/user_management/confirm_password_reset/valid.yml +82 -0
  39. data/spec/support/fixtures/vcr_cassettes/user_management/create_organization_membership/invalid.yml +83 -0
  40. data/spec/support/fixtures/vcr_cassettes/user_management/create_organization_membership/valid.yml +82 -0
  41. data/spec/support/fixtures/vcr_cassettes/user_management/create_user_invalid.yml +83 -0
  42. data/spec/support/fixtures/vcr_cassettes/user_management/create_user_valid.yml +82 -0
  43. data/spec/support/fixtures/vcr_cassettes/user_management/delete_organization_membership/invalid.yml +82 -0
  44. data/spec/support/fixtures/vcr_cassettes/user_management/delete_organization_membership/valid.yml +78 -0
  45. data/spec/support/fixtures/vcr_cassettes/user_management/delete_user/invalid.yml +82 -0
  46. data/spec/support/fixtures/vcr_cassettes/user_management/delete_user/valid.yml +78 -0
  47. data/spec/support/fixtures/vcr_cassettes/user_management/enroll_auth_factor/invalid.yml +82 -0
  48. data/spec/support/fixtures/vcr_cassettes/user_management/enroll_auth_factor/valid.yml +82 -0
  49. data/spec/support/fixtures/vcr_cassettes/user_management/get_invitation/invalid.yml +82 -0
  50. data/spec/support/fixtures/vcr_cassettes/user_management/get_invitation/valid.yml +82 -0
  51. data/spec/support/fixtures/vcr_cassettes/user_management/get_organization_membership.yml +82 -0
  52. data/spec/support/fixtures/vcr_cassettes/user_management/get_user.yml +82 -0
  53. data/spec/support/fixtures/vcr_cassettes/user_management/list_auth_factors/invalid.yml +82 -0
  54. data/spec/support/fixtures/vcr_cassettes/user_management/list_auth_factors/valid.yml +82 -0
  55. data/spec/support/fixtures/vcr_cassettes/user_management/list_invitations/with_after.yml +83 -0
  56. data/spec/support/fixtures/vcr_cassettes/user_management/list_invitations/with_before.yml +83 -0
  57. data/spec/support/fixtures/vcr_cassettes/user_management/list_invitations/with_limit.yml +83 -0
  58. data/spec/support/fixtures/vcr_cassettes/user_management/list_invitations/with_no_options.yml +83 -0
  59. data/spec/support/fixtures/vcr_cassettes/user_management/list_invitations/with_organization_id.yml +83 -0
  60. data/spec/support/fixtures/vcr_cassettes/user_management/list_organization_memberships/no_options.yml +82 -0
  61. data/spec/support/fixtures/vcr_cassettes/user_management/list_organization_memberships/with_options.yml +82 -0
  62. data/spec/support/fixtures/vcr_cassettes/user_management/list_users/no_options.yml +82 -0
  63. data/spec/support/fixtures/vcr_cassettes/user_management/list_users/with_options.yml +82 -0
  64. data/spec/support/fixtures/vcr_cassettes/user_management/reset_password/invalid.yml +82 -0
  65. data/spec/support/fixtures/vcr_cassettes/user_management/reset_password/valid.yml +82 -0
  66. data/spec/support/fixtures/vcr_cassettes/user_management/revoke_invitation/invalid.yml +82 -0
  67. data/spec/support/fixtures/vcr_cassettes/user_management/revoke_invitation/valid.yml +82 -0
  68. data/spec/support/fixtures/vcr_cassettes/user_management/send_invitation/invalid.yml +82 -0
  69. data/spec/support/fixtures/vcr_cassettes/user_management/send_invitation/valid.yml +82 -0
  70. data/spec/support/fixtures/vcr_cassettes/user_management/send_magic_auth_code/valid.yml +82 -0
  71. data/spec/support/fixtures/vcr_cassettes/user_management/send_password_reset_email/invalid.yml +83 -0
  72. data/spec/support/fixtures/vcr_cassettes/user_management/send_password_reset_email/valid.yml +82 -0
  73. data/spec/support/fixtures/vcr_cassettes/user_management/send_verification_email/invalid.yml +82 -0
  74. data/spec/support/fixtures/vcr_cassettes/user_management/send_verification_email/valid.yml +82 -0
  75. data/spec/support/fixtures/vcr_cassettes/user_management/update_user/invalid.yml +82 -0
  76. data/spec/support/fixtures/vcr_cassettes/user_management/update_user/valid.yml +82 -0
  77. data/spec/support/fixtures/vcr_cassettes/user_management/update_user_password/invalid.yml +82 -0
  78. data/spec/support/fixtures/vcr_cassettes/user_management/update_user_password/valid.yml +82 -0
  79. data/spec/support/fixtures/vcr_cassettes/user_management/verify_email/invalid_code.yml +83 -0
  80. data/spec/support/fixtures/vcr_cassettes/user_management/verify_email/invalid_magic_auth_challenge.yml +82 -0
  81. data/spec/support/fixtures/vcr_cassettes/user_management/verify_email/valid.yml +82 -0
  82. data/workos.gemspec +0 -2
  83. metadata +132 -55
  84. data/bin/docs +0 -5
  85. data/docs/WorkOS/APIError.html +0 -160
  86. data/docs/WorkOS/AuditLog.html +0 -235
  87. data/docs/WorkOS/AuditTrail.html +0 -235
  88. data/docs/WorkOS/AuthenticationError.html +0 -160
  89. data/docs/WorkOS/Base.html +0 -287
  90. data/docs/WorkOS/Client.html +0 -504
  91. data/docs/WorkOS/InvalidRequestError.html +0 -160
  92. data/docs/WorkOS/Profile.html +0 -788
  93. data/docs/WorkOS/RequestError.html +0 -135
  94. data/docs/WorkOS/SSO.html +0 -691
  95. data/docs/WorkOS/Types/ProfileStruct.html +0 -135
  96. data/docs/WorkOS/Types/Provider.html +0 -135
  97. data/docs/WorkOS/Types.html +0 -128
  98. data/docs/WorkOS/WorkOSError.html +0 -447
  99. data/docs/WorkOS.html +0 -324
  100. data/docs/class_list.html +0 -51
  101. data/docs/css/common.css +0 -1
  102. data/docs/css/full_list.css +0 -58
  103. data/docs/css/style.css +0 -496
  104. data/docs/file.README.html +0 -252
  105. data/docs/file_list.html +0 -56
  106. data/docs/frames.html +0 -17
  107. data/docs/index.html +0 -250
  108. data/docs/js/app.js +0 -314
  109. data/docs/js/full_list.js +0 -216
  110. data/docs/js/jquery.js +0 -4
  111. data/docs/method_list.html +0 -267
  112. data/docs/top-level-namespace.html +0 -110
  113. data/lib/workos/audit_trail.rb +0 -111
  114. data/spec/lib/workos/audit_trail_spec.rb +0 -146
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+ # typed: true
3
+
4
+ module WorkOS
5
+ # The UserResponse class represents a User as well as an corresponding
6
+ # response data that can later be appended on.
7
+ class UserResponse
8
+ include HashProvider
9
+ extend T::Sig
10
+
11
+ attr_accessor :user
12
+
13
+ sig { params(user_response_json: String).void }
14
+ def initialize(user_response_json)
15
+ json = JSON.parse(user_response_json, symbolize_names: true)
16
+ @user = WorkOS::User.new(json[:user].to_json)
17
+ end
18
+
19
+ def to_json(*)
20
+ {
21
+ user: user.to_json,
22
+ }
23
+ end
24
+ end
25
+ end
@@ -2,5 +2,5 @@
2
2
  # typed: strong
3
3
 
4
4
  module WorkOS
5
- VERSION = '2.16.0'
5
+ VERSION = '3.0.0'
6
6
  end
data/lib/workos.rb CHANGED
@@ -11,10 +11,25 @@ require 'workos/configuration'
11
11
  # requests to the WorkOS API. The gem will read
12
12
  # your API key automatically from the ENV var `WORKOS_API_KEY`.
13
13
  # Alternatively, you can set the key yourself with
14
- # `WorkOS.key = [your api key]` somewhere in the load path of
15
- # your application, such as an initializer.
14
+ # `WorkOS.configure { |config| config.key = [your api key] }` somewhere
15
+ # in the load path of your application, such as an initializer.
16
16
  module WorkOS
17
- API_HOSTNAME = ENV['WORKOS_API_HOSTNAME'] || 'api.workos.com'
17
+ def self.default_config
18
+ Configuration.new.tap do |config|
19
+ config.api_hostname = ENV['WORKOS_API_HOSTNAME'] || 'api.workos.com'
20
+ # Remove WORKOS_KEY at some point in the future. Keeping it here now for
21
+ # backwards compatibility.
22
+ config.key = ENV['WORKOS_API_KEY'] || ENV['WORKOS_KEY']
23
+ end
24
+ end
25
+
26
+ def self.config
27
+ @config ||= default_config
28
+ end
29
+
30
+ def self.configure
31
+ yield(config)
32
+ end
18
33
 
19
34
  def self.key=(value)
20
35
  warn '`WorkOS.key=` is deprecated. Use `WorkOS.configure` instead.'
@@ -28,42 +43,39 @@ module WorkOS
28
43
  config.key
29
44
  end
30
45
 
31
- def self.config
32
- @config ||= Configuration.new
33
- end
34
-
35
- def self.configure
36
- yield(config)
37
- end
38
-
39
- autoload :Types, 'workos/types'
40
- autoload :Client, 'workos/client'
41
- autoload :Configuration, 'workos/configuration'
42
46
  autoload :AuditLogExport, 'workos/audit_log_export'
47
+ autoload :AuthenticationFactorAndChallenge, 'workos/authentication_factor_and_challenge'
48
+ autoload :AuthenticationResponse, 'workos/authentication_response'
43
49
  autoload :AuditLogs, 'workos/audit_logs'
44
- autoload :AuditTrail, 'workos/audit_trail'
50
+ autoload :Challenge, 'workos/challenge'
51
+ autoload :Client, 'workos/client'
45
52
  autoload :Connection, 'workos/connection'
46
- autoload :DirectorySync, 'workos/directory_sync'
53
+ autoload :DeprecatedHashWrapper, 'workos/deprecated_hash_wrapper'
47
54
  autoload :Directory, 'workos/directory'
48
55
  autoload :DirectoryGroup, 'workos/directory_group'
56
+ autoload :DirectorySync, 'workos/directory_sync'
57
+ autoload :DirectoryUser, 'workos/directory_user'
49
58
  autoload :Event, 'workos/event'
50
59
  autoload :Events, 'workos/events'
60
+ autoload :Factor, 'workos/factor'
61
+ autoload :Invitation, 'workos/invitation'
62
+ autoload :MFA, 'workos/mfa'
51
63
  autoload :Organization, 'workos/organization'
52
64
  autoload :Organizations, 'workos/organizations'
65
+ autoload :OrganizationMembership, 'workos/organization_membership'
53
66
  autoload :Passwordless, 'workos/passwordless'
54
67
  autoload :Portal, 'workos/portal'
55
68
  autoload :Profile, 'workos/profile'
56
69
  autoload :ProfileAndToken, 'workos/profile_and_token'
57
70
  autoload :SSO, 'workos/sso'
58
- autoload :DirectoryUser, 'workos/directory_user'
71
+ autoload :Types, 'workos/types'
72
+ autoload :User, 'workos/user'
73
+ autoload :UserAndToken, 'workos/user_and_token'
74
+ autoload :UserManagement, 'workos/user_management'
75
+ autoload :UserResponse, 'workos/user_response'
76
+ autoload :VerifyChallenge, 'workos/verify_challenge'
59
77
  autoload :Webhook, 'workos/webhook'
60
78
  autoload :Webhooks, 'workos/webhooks'
61
- autoload :MFA, 'workos/mfa'
62
- autoload :Factor, 'workos/factor'
63
- autoload :Challenge, 'workos/challenge'
64
- autoload :VerifyChallenge, 'workos/verify_challenge'
65
- autoload :DeprecatedHashWrapper, 'workos/deprecated_hash_wrapper'
66
-
67
79
 
68
80
  # Errors
69
81
  autoload :APIError, 'workos/errors'
@@ -71,9 +83,4 @@ module WorkOS
71
83
  autoload :InvalidRequestError, 'workos/errors'
72
84
  autoload :SignatureVerificationError, 'workos/errors'
73
85
  autoload :TimeoutError, 'workos/errors'
74
-
75
- # Remove WORKOS_KEY at some point in the future. Keeping it here now for
76
- # backwards compatibility.
77
- key = ENV['WORKOS_API_KEY'] || ENV['WORKOS_KEY']
78
- config.key = key unless key.nil?
79
86
  end
@@ -26,7 +26,7 @@ describe WorkOS::SSO do
26
26
  it 'returns the expected hostname' do
27
27
  authorization_url = described_class.authorization_url(**args)
28
28
 
29
- expect(URI.parse(authorization_url).host).to eq(WorkOS::API_HOSTNAME)
29
+ expect(URI.parse(authorization_url).host).to eq(WorkOS.config.api_hostname)
30
30
  end
31
31
 
32
32
  it 'returns the expected query string' do
@@ -60,7 +60,7 @@ describe WorkOS::SSO do
60
60
  it 'returns the expected hostname' do
61
61
  authorization_url = described_class.authorization_url(**args)
62
62
 
63
- expect(URI.parse(authorization_url).host).to eq(WorkOS::API_HOSTNAME)
63
+ expect(URI.parse(authorization_url).host).to eq(WorkOS.config.api_hostname)
64
64
  end
65
65
 
66
66
  it 'returns the expected query string' do
@@ -94,7 +94,7 @@ describe WorkOS::SSO do
94
94
  it 'returns the expected hostname' do
95
95
  authorization_url = described_class.authorization_url(**args)
96
96
 
97
- expect(URI.parse(authorization_url).host).to eq(WorkOS::API_HOSTNAME)
97
+ expect(URI.parse(authorization_url).host).to eq(WorkOS.config.api_hostname)
98
98
  end
99
99
 
100
100
  it 'returns the expected query string' do
@@ -128,7 +128,7 @@ describe WorkOS::SSO do
128
128
  it 'returns the expected hostname' do
129
129
  authorization_url = described_class.authorization_url(**args)
130
130
 
131
- expect(URI.parse(authorization_url).host).to eq(WorkOS::API_HOSTNAME)
131
+ expect(URI.parse(authorization_url).host).to eq(WorkOS.config.api_hostname)
132
132
  end
133
133
 
134
134
  it 'returns the expected query string' do
@@ -163,7 +163,7 @@ describe WorkOS::SSO do
163
163
  it 'returns the expected hostname' do
164
164
  authorization_url = described_class.authorization_url(**args)
165
165
 
166
- expect(URI.parse(authorization_url).host).to eq(WorkOS::API_HOSTNAME)
166
+ expect(URI.parse(authorization_url).host).to eq(WorkOS.config.api_hostname)
167
167
  end
168
168
 
169
169
  it 'returns the expected query string' do
@@ -198,7 +198,7 @@ describe WorkOS::SSO do
198
198
  it 'returns the expected hostname' do
199
199
  authorization_url = described_class.authorization_url(**args)
200
200
 
201
- expect(URI.parse(authorization_url).host).to eq(WorkOS::API_HOSTNAME)
201
+ expect(URI.parse(authorization_url).host).to eq(WorkOS.config.api_hostname)
202
202
  end
203
203
 
204
204
  it 'returns the expected query string' do
@@ -232,7 +232,7 @@ describe WorkOS::SSO do
232
232
  it 'returns the expected hostname' do
233
233
  authorization_url = described_class.authorization_url(**args)
234
234
 
235
- expect(URI.parse(authorization_url).host).to eq(WorkOS::API_HOSTNAME)
235
+ expect(URI.parse(authorization_url).host).to eq(WorkOS.config.api_hostname)
236
236
  end
237
237
 
238
238
  it 'returns the expected query string' do
@@ -282,7 +282,7 @@ describe WorkOS::SSO do
282
282
  described_class.authorization_url(**args)
283
283
  end.to raise_error(
284
284
  ArgumentError,
285
- 'Okta is not a valid value. `provider` must be in ["GoogleOAuth", "MicrosoftOAuth"]',
285
+ 'Okta is not a valid value. `provider` must be in ["GitHubOAuth", "GoogleOAuth", "MicrosoftOAuth"]',
286
286
  )
287
287
  end
288
288
  end