workos 2.16.0 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
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