workos 4.1.0 → 4.2.1

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 (132) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +37 -0
  3. data/.github/workflows/release.yml +43 -0
  4. data/.rubocop.yml +8 -1
  5. data/Gemfile.lock +22 -69
  6. data/lib/workos/audit_log_export.rb +8 -31
  7. data/lib/workos/audit_logs.rb +0 -26
  8. data/lib/workos/authentication_factor_and_challenge.rb +0 -3
  9. data/lib/workos/authentication_response.rb +3 -6
  10. data/lib/workos/challenge.rb +9 -28
  11. data/lib/workos/client.rb +0 -41
  12. data/lib/workos/configuration.rb +0 -1
  13. data/lib/workos/connection.rb +11 -35
  14. data/lib/workos/directory.rb +10 -37
  15. data/lib/workos/directory_group.rb +9 -36
  16. data/lib/workos/directory_sync.rb +0 -21
  17. data/lib/workos/directory_user.rb +17 -51
  18. data/lib/workos/errors.rb +0 -16
  19. data/lib/workos/event.rb +5 -26
  20. data/lib/workos/events.rb +0 -7
  21. data/lib/workos/factor.rb +9 -28
  22. data/lib/workos/hash_provider.rb +0 -1
  23. data/lib/workos/impersonator.rb +0 -3
  24. data/lib/workos/invitation.rb +12 -37
  25. data/lib/workos/mfa.rb +0 -42
  26. data/lib/workos/organization.rb +8 -31
  27. data/lib/workos/organization_membership.rb +8 -27
  28. data/lib/workos/organizations.rb +0 -26
  29. data/lib/workos/passwordless.rb +0 -14
  30. data/lib/workos/portal.rb +1 -13
  31. data/lib/workos/profile.rb +12 -39
  32. data/lib/workos/profile_and_token.rb +1 -4
  33. data/lib/workos/refresh_authentication_response.rb +2 -5
  34. data/lib/workos/sso.rb +1 -43
  35. data/lib/workos/types/intent.rb +16 -0
  36. data/lib/workos/types/list_struct.rb +8 -5
  37. data/lib/workos/types/passwordless_session_struct.rb +10 -9
  38. data/lib/workos/types/provider.rb +15 -0
  39. data/lib/workos/types.rb +5 -23
  40. data/lib/workos/user.rb +10 -31
  41. data/lib/workos/user_and_token.rb +1 -4
  42. data/lib/workos/user_management.rb +36 -244
  43. data/lib/workos/user_response.rb +0 -3
  44. data/lib/workos/verify_challenge.rb +4 -18
  45. data/lib/workos/version.rb +1 -2
  46. data/lib/workos/webhook.rb +5 -26
  47. data/lib/workos/webhooks.rb +1 -38
  48. data/lib/workos.rb +0 -2
  49. data/spec/lib/workos/audit_logs_spec.rb +2 -3
  50. data/spec/lib/workos/configuration_spec.rb +0 -1
  51. data/spec/lib/workos/directory_sync_spec.rb +0 -1
  52. data/spec/lib/workos/directory_user_spec.rb +0 -1
  53. data/spec/lib/workos/event_spec.rb +0 -1
  54. data/spec/lib/workos/mfa_spec.rb +0 -1
  55. data/spec/lib/workos/organizations_spec.rb +0 -1
  56. data/spec/lib/workos/passwordless_spec.rb +0 -1
  57. data/spec/lib/workos/portal_spec.rb +0 -1
  58. data/spec/lib/workos/sso_spec.rb +0 -1
  59. data/spec/lib/workos/user_management_spec.rb +29 -1
  60. data/spec/lib/workos/webhooks_spec.rb +0 -1
  61. data/spec/spec_helper.rb +0 -9
  62. data/spec/support/fixtures/vcr_cassettes/user_management/revoke_session/not_found.yml +80 -0
  63. data/spec/support/fixtures/vcr_cassettes/user_management/revoke_session/valid.yml +76 -0
  64. data/spec/support/shared_examples/client_spec.rb +0 -1
  65. data/workos.gemspec +1 -6
  66. metadata +15 -129
  67. data/.semaphore/rubygems.yml +0 -24
  68. data/.semaphore/semaphore.yml +0 -51
  69. data/bin/tapioca +0 -29
  70. data/codecov.yml +0 -12
  71. data/devbox.json +0 -18
  72. data/devbox.lock +0 -11
  73. data/lib/workos/types/audit_log_export_struct.rb +0 -17
  74. data/lib/workos/types/challenge_struct.rb +0 -18
  75. data/lib/workos/types/connection_struct.rb +0 -20
  76. data/lib/workos/types/directory_group_struct.rb +0 -19
  77. data/lib/workos/types/directory_struct.rb +0 -19
  78. data/lib/workos/types/directory_user_struct.rb +0 -26
  79. data/lib/workos/types/event_struct.rb +0 -15
  80. data/lib/workos/types/factor_struct.rb +0 -18
  81. data/lib/workos/types/intent_enum.rb +0 -17
  82. data/lib/workos/types/invitation_struct.rb +0 -20
  83. data/lib/workos/types/magic_auth_challenge_struct.rb +0 -12
  84. data/lib/workos/types/organization_membership_struct.rb +0 -16
  85. data/lib/workos/types/organization_struct.rb +0 -17
  86. data/lib/workos/types/profile_struct.rb +0 -21
  87. data/lib/workos/types/provider_enum.rb +0 -16
  88. data/lib/workos/types/user_struct.rb +0 -18
  89. data/lib/workos/types/verify_challenge_struct.rb +0 -13
  90. data/lib/workos/types/webhook_struct.rb +0 -15
  91. data/sorbet/config +0 -2
  92. data/sorbet/rbi/gems/addressable@2.8.0.rbi +0 -290
  93. data/sorbet/rbi/gems/ast@2.4.2.rbi +0 -54
  94. data/sorbet/rbi/gems/codecov@0.2.12.rbi +0 -55
  95. data/sorbet/rbi/gems/coderay@1.1.3.rbi +0 -8
  96. data/sorbet/rbi/gems/crack@0.4.5.rbi +0 -57
  97. data/sorbet/rbi/gems/diff-lcs@1.4.4.rbi +0 -185
  98. data/sorbet/rbi/gems/docile@1.3.5.rbi +0 -54
  99. data/sorbet/rbi/gems/hashdiff@1.0.1.rbi +0 -82
  100. data/sorbet/rbi/gems/json@2.5.1.rbi +0 -109
  101. data/sorbet/rbi/gems/method_source@1.0.0.rbi +0 -8
  102. data/sorbet/rbi/gems/parallel@1.20.1.rbi +0 -113
  103. data/sorbet/rbi/gems/parser@3.0.1.0.rbi +0 -1187
  104. data/sorbet/rbi/gems/pry@0.14.2.rbi +0 -8
  105. data/sorbet/rbi/gems/public_suffix@4.0.6.rbi +0 -146
  106. data/sorbet/rbi/gems/rainbow@3.0.0.rbi +0 -153
  107. data/sorbet/rbi/gems/rake@13.0.3.rbi +0 -807
  108. data/sorbet/rbi/gems/rbi@0.0.16.rbi +0 -2118
  109. data/sorbet/rbi/gems/regexp_parser@2.1.1.rbi +0 -1117
  110. data/sorbet/rbi/gems/rexml@3.2.5.rbi +0 -709
  111. data/sorbet/rbi/gems/rspec-core@3.9.3.rbi +0 -2467
  112. data/sorbet/rbi/gems/rspec-expectations@3.9.4.rbi +0 -1569
  113. data/sorbet/rbi/gems/rspec-mocks@3.9.1.rbi +0 -1493
  114. data/sorbet/rbi/gems/rspec-support@3.9.4.rbi +0 -511
  115. data/sorbet/rbi/gems/rspec@3.9.0.rbi +0 -38
  116. data/sorbet/rbi/gems/rubocop-ast@1.4.1.rbi +0 -1881
  117. data/sorbet/rbi/gems/rubocop@0.93.1.rbi +0 -11497
  118. data/sorbet/rbi/gems/ruby-progressbar@1.11.0.rbi +0 -405
  119. data/sorbet/rbi/gems/simplecov-html@0.12.3.rbi +0 -89
  120. data/sorbet/rbi/gems/simplecov@0.21.2.rbi +0 -577
  121. data/sorbet/rbi/gems/simplecov_json_formatter@0.1.2.rbi +0 -8
  122. data/sorbet/rbi/gems/spoom@1.1.15.rbi +0 -1549
  123. data/sorbet/rbi/gems/tapioca@0.7.3.rbi +0 -1718
  124. data/sorbet/rbi/gems/thor@1.2.1.rbi +0 -844
  125. data/sorbet/rbi/gems/unicode-display_width@1.7.0.rbi +0 -22
  126. data/sorbet/rbi/gems/unparser@0.6.2.rbi +0 -8
  127. data/sorbet/rbi/gems/vcr@5.0.0.rbi +0 -699
  128. data/sorbet/rbi/gems/webmock@3.12.2.rbi +0 -662
  129. data/sorbet/rbi/gems/yard-sorbet@0.8.0.rbi +0 -268
  130. data/sorbet/rbi/gems/yard@0.9.26.rbi +0 -4048
  131. data/sorbet/tapioca/config.yml +0 -13
  132. data/sorbet/tapioca/require.rb +0 -4
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
- # typed: true
3
2
 
4
3
  module WorkOS
5
4
  # The Webhook class provides a lightweight wrapper around
@@ -7,18 +6,16 @@ module WorkOS
7
6
  # in user space, and is instantiated internally but exposed.
8
7
  class Webhook
9
8
  include HashProvider
10
- extend T::Sig
11
9
 
12
10
  attr_accessor :id, :event, :data, :created_at
13
11
 
14
- sig { params(json: String).void }
15
12
  def initialize(json)
16
- raw = parse_json(json)
13
+ hash = JSON.parse(json, symbolize_names: true)
17
14
 
18
- @id = T.let(raw.id, String)
19
- @event = T.let(raw.event, String)
20
- @data = raw.data
21
- @created_at = T.let(raw.created_at, String)
15
+ @id = hash[:id]
16
+ @event = hash[:event]
17
+ @data = hash[:data]
18
+ @created_at = hash[:created_at]
22
19
  end
23
20
 
24
21
  def to_json(*)
@@ -29,23 +26,5 @@ module WorkOS
29
26
  created_at: created_at,
30
27
  }
31
28
  end
32
-
33
- private
34
-
35
- sig do
36
- params(
37
- json_string: String,
38
- ).returns(WorkOS::Types::WebhookStruct)
39
- end
40
- def parse_json(json_string)
41
- hash = JSON.parse(json_string, symbolize_names: true)
42
-
43
- WorkOS::Types::WebhookStruct.new(
44
- id: hash[:id],
45
- event: hash[:event],
46
- data: hash[:data],
47
- created_at: hash[:created_at],
48
- )
49
- end
50
29
  end
51
30
  end
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
- # typed: true
3
2
 
4
3
  require 'openssl'
5
4
 
@@ -14,8 +13,6 @@ module WorkOS
14
13
  #
15
14
  module Webhooks
16
15
  class << self
17
- extend T::Sig
18
-
19
16
  DEFAULT_TOLERANCE = 180
20
17
 
21
18
  # Initializes an Event object from a JSON payload
@@ -37,14 +34,6 @@ module WorkOS
37
34
  #
38
35
  # @return [WorkOS::Webhook]
39
36
  # rubocop:enable Layout/LineLength
40
- sig do
41
- params(
42
- payload: String,
43
- sig_header: String,
44
- secret: String,
45
- tolerance: Integer,
46
- ).returns(WorkOS::Webhook)
47
- end
48
37
  def construct_event(
49
38
  payload:,
50
39
  sig_header:,
@@ -74,14 +63,6 @@ module WorkOS
74
63
  #
75
64
  # @return Boolean
76
65
  # rubocop:enable Layout/LineLength
77
- sig do
78
- params(
79
- payload: String,
80
- sig_header: String,
81
- secret: String,
82
- tolerance: Integer,
83
- ).returns(T::Boolean)
84
- end
85
66
  # rubocop:disable Metrics/AbcSize
86
67
  def verify_header(
87
68
  payload:,
@@ -134,11 +115,6 @@ module WorkOS
134
115
  # => ['1626125972272', '80f7ab7efadc306eb5797c588cee9410da9be4416782b497bf1e1bf4175fb928']
135
116
  #
136
117
  # @return Array
137
- sig do
138
- params(
139
- sig_header: String,
140
- ).returns([String, String])
141
- end
142
118
  def get_timestamp_and_signature_hash(
143
119
  sig_header:
144
120
  )
@@ -174,13 +150,6 @@ module WorkOS
174
150
  #
175
151
  # @return String
176
152
  # rubocop:enable Layout/LineLength
177
- sig do
178
- params(
179
- timestamp: String,
180
- payload: String,
181
- secret: String,
182
- ).returns(String)
183
- end
184
153
  def compute_signature(
185
154
  timestamp:,
186
155
  payload:,
@@ -193,19 +162,13 @@ module WorkOS
193
162
 
194
163
  # Constant time string comparison to prevent timing attacks
195
164
  # Code borrowed from ActiveSupport
196
- sig do
197
- params(
198
- str_a: String,
199
- str_b: String,
200
- ).returns(T::Boolean)
201
- end
202
165
  def secure_compare(
203
166
  str_a:,
204
167
  str_b:
205
168
  )
206
169
  return false unless str_a.bytesize == str_b.bytesize
207
170
 
208
- l = T.unsafe(str_a.unpack("C#{str_a.bytesize}"))
171
+ l = str_a.unpack("C#{str_a.bytesize}")
209
172
 
210
173
  res = 0
211
174
  str_b.each_byte { |byte| res |= byte ^ l.shift }
data/lib/workos.rb CHANGED
@@ -1,8 +1,6 @@
1
1
  # frozen_string_literal: true
2
- # typed: true
3
2
 
4
3
  require 'workos/version'
5
- require 'sorbet-runtime'
6
4
  require 'json'
7
5
  require 'workos/hash_provider'
8
6
  require 'workos/configuration'
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
- # typed: false
3
2
 
4
3
  describe WorkOS::AuditLogs do
5
4
  it_behaves_like 'client'
@@ -48,7 +47,7 @@ describe WorkOS::AuditLogs do
48
47
  idempotency_key: 'idempotency_key',
49
48
  )
50
49
 
51
- expect(response).to eq T::Private::Types::Void::VOID
50
+ expect(response.code).to eq '201'
52
51
  end
53
52
  end
54
53
  end
@@ -61,7 +60,7 @@ describe WorkOS::AuditLogs do
61
60
  event: valid_event,
62
61
  )
63
62
 
64
- expect(response).to eq T::Private::Types::Void::VOID
63
+ expect(response.code).to eq '201'
65
64
  end
66
65
  end
67
66
  end
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
- # typed: false
3
2
 
4
3
  describe WorkOS do
5
4
  describe '.configure' do
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
- # typed: false
3
2
 
4
3
  describe WorkOS::DirectorySync do
5
4
  it_behaves_like 'client'
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
- # typed: false
3
2
 
4
3
  describe WorkOS::DirectoryUser do
5
4
  # rubocop:disable Layout/LineLength
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
- # typed: false
3
2
 
4
3
  describe WorkOS::Events do
5
4
  it_behaves_like 'client'
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
- # typed: false
3
2
 
4
3
  describe WorkOS::MFA do
5
4
  it_behaves_like 'client'
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
- # typed: false
3
2
 
4
3
  describe WorkOS::Organizations do
5
4
  it_behaves_like 'client'
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
- # typed: false
3
2
 
4
3
  describe WorkOS::Passwordless do
5
4
  it_behaves_like 'client'
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
- # typed: false
3
2
 
4
3
  describe WorkOS::Portal do
5
4
  it_behaves_like 'client'
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
- # typed: false
3
2
 
4
3
  require 'securerandom'
5
4
 
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
- # typed: false
3
2
 
4
3
  describe WorkOS::UserManagement do
5
4
  it_behaves_like 'client'
@@ -1146,4 +1145,33 @@ describe WorkOS::UserManagement do
1146
1145
  end
1147
1146
  end
1148
1147
  end
1148
+
1149
+ describe '.revoke_session' do
1150
+ context 'with valid payload' do
1151
+ it 'revokes session' do
1152
+ VCR.use_cassette 'user_management/revoke_session/valid' do
1153
+ result = described_class.revoke_session(
1154
+ session_id: 'session_01HRX85ATNADY1GQ053AHRFFN6',
1155
+ )
1156
+
1157
+ expect(result).to be true
1158
+ end
1159
+ end
1160
+ end
1161
+
1162
+ context 'with a non-existant session' do
1163
+ it 'returns an error' do
1164
+ VCR.use_cassette 'user_management/revoke_session/not_found' do
1165
+ expect do
1166
+ described_class.revoke_session(
1167
+ session_id: 'session_01H5JQDV7R7ATEYZDEG0W5PRYS',
1168
+ )
1169
+ end.to raise_error(
1170
+ WorkOS::APIError,
1171
+ /Session not found/,
1172
+ )
1173
+ end
1174
+ end
1175
+ end
1176
+ end
1149
1177
  end
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
- # typed: false
3
2
 
4
3
  require 'json'
5
4
  require 'openssl'
data/spec/spec_helper.rb CHANGED
@@ -1,13 +1,4 @@
1
1
  # frozen_string_literal: true
2
- # typed: false
3
-
4
- require 'simplecov'
5
- SimpleCov.start
6
-
7
- if ENV['CI'] == 'true'
8
- require 'codecov'
9
- SimpleCov.formatter = SimpleCov::Formatter::Codecov
10
- end
11
2
 
12
3
  $LOAD_PATH << File.join(File.dirname(__FILE__), '..', 'lib')
13
4
  $LOAD_PATH << File.join(File.dirname(__FILE__))
@@ -0,0 +1,80 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://api.workos.com/user_management/sessions/revoke
6
+ body:
7
+ encoding: UTF-8
8
+ string: '{"session_id":"session_01H5JQDV7R7ATEYZDEG0W5PRYS"}'
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.1.4; arm64-darwin22; v4.2.0
18
+ Authorization:
19
+ - Bearer <API_KEY>
20
+ response:
21
+ status:
22
+ code: 404
23
+ message: Not Found
24
+ headers:
25
+ Date:
26
+ - Thu, 11 Apr 2024 22:36:42 GMT
27
+ Content-Type:
28
+ - application/json; charset=utf-8
29
+ Transfer-Encoding:
30
+ - chunked
31
+ Connection:
32
+ - keep-alive
33
+ Cf-Ray:
34
+ - 872e74fd9ed6db9e-LAX
35
+ Cf-Cache-Status:
36
+ - DYNAMIC
37
+ Etag:
38
+ - W/"91-9u3slgvENRDVFp/62vKalhPzVuw"
39
+ Strict-Transport-Security:
40
+ - max-age=15552000; includeSubDomains
41
+ Vary:
42
+ - Origin, Accept-Encoding
43
+ Access-Control-Allow-Credentials:
44
+ - 'true'
45
+ Content-Security-Policy:
46
+ - 'default-src ''self'';base-uri ''self'';block-all-mixed-content;font-src ''self''
47
+ https: data:;frame-ancestors ''self'';img-src ''self'' data:;object-src ''none'';script-src
48
+ ''self'';script-src-attr ''none'';style-src ''self'' https: ''unsafe-inline'';upgrade-insecure-requests'
49
+ Expect-Ct:
50
+ - max-age=0
51
+ Referrer-Policy:
52
+ - no-referrer
53
+ X-Content-Type-Options:
54
+ - nosniff
55
+ X-Dns-Prefetch-Control:
56
+ - 'off'
57
+ X-Download-Options:
58
+ - noopen
59
+ X-Frame-Options:
60
+ - SAMEORIGIN
61
+ X-Permitted-Cross-Domain-Policies:
62
+ - none
63
+ X-Request-Id:
64
+ - bc0771a4-8d66-4b34-809c-d3d8976af390
65
+ X-Xss-Protection:
66
+ - '0'
67
+ Set-Cookie:
68
+ - __cf_bm=iJMFbMBT_gDvh2ZbVYwAWHii9wrMPSJJeFQ3sXKSNNw-1712875002-1.0.1.1-d0033NtW0ShwCrgulDZg60Nw0yfEROthaCZQWVIAnWbbmaoa5HDqSkl4DsECxoAaZNdoLWqOxi9YXtZx9FqVSA;
69
+ path=/; expires=Thu, 11-Apr-24 23:06:42 GMT; domain=.workos.com; HttpOnly;
70
+ Secure; SameSite=None
71
+ - __cfruid=c2a61e4869ba7669d8dd1d11a8e59bba189e21ba-1712875002; path=/; domain=.workos.com;
72
+ HttpOnly; Secure; SameSite=None
73
+ Server:
74
+ - cloudflare
75
+ body:
76
+ encoding: ASCII-8BIT
77
+ string: '{"message":"Session not found: ''session_01H5JQDV7R7ATEYZDEG0W5PRYS''.","code":"entity_not_found","entity_id":"session_01H5JQDV7R7ATEYZDEG0W5PRYS"}'
78
+ http_version:
79
+ recorded_at: Thu, 11 Apr 2024 22:36:42 GMT
80
+ recorded_with: VCR 5.0.0
@@ -0,0 +1,76 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://api.workos.com/user_management/sessions/revoke
6
+ body:
7
+ encoding: UTF-8
8
+ string: '{"session_id":"session_01HRX85ATNADY1GQ053AHRFFN6"}'
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.1.4; arm64-darwin22; v4.2.0
18
+ Authorization:
19
+ - Bearer <API_KEY>
20
+ response:
21
+ status:
22
+ code: 200
23
+ message: OK
24
+ headers:
25
+ Date:
26
+ - Thu, 11 Apr 2024 22:36:42 GMT
27
+ Transfer-Encoding:
28
+ - chunked
29
+ Connection:
30
+ - keep-alive
31
+ Cf-Ray:
32
+ - 872e74fc2ee3092d-LAX
33
+ Cf-Cache-Status:
34
+ - DYNAMIC
35
+ Strict-Transport-Security:
36
+ - max-age=15552000; includeSubDomains
37
+ Vary:
38
+ - Origin, Accept-Encoding
39
+ Access-Control-Allow-Credentials:
40
+ - 'true'
41
+ Content-Security-Policy:
42
+ - 'default-src ''self'';base-uri ''self'';block-all-mixed-content;font-src ''self''
43
+ https: data:;frame-ancestors ''self'';img-src ''self'' data:;object-src ''none'';script-src
44
+ ''self'';script-src-attr ''none'';style-src ''self'' https: ''unsafe-inline'';upgrade-insecure-requests'
45
+ Expect-Ct:
46
+ - max-age=0
47
+ Referrer-Policy:
48
+ - no-referrer
49
+ X-Content-Type-Options:
50
+ - nosniff
51
+ X-Dns-Prefetch-Control:
52
+ - 'off'
53
+ X-Download-Options:
54
+ - noopen
55
+ X-Frame-Options:
56
+ - SAMEORIGIN
57
+ X-Permitted-Cross-Domain-Policies:
58
+ - none
59
+ X-Request-Id:
60
+ - 1b04e560-4438-40ba-97d2-05ae571aeedf
61
+ X-Xss-Protection:
62
+ - '0'
63
+ Set-Cookie:
64
+ - __cf_bm=lXssAzjuk1ajbWnDLtD_SUYIufESNBd9WVxCY8MCxJU-1712875002-1.0.1.1-oBbEhifco.kAMIrc30VrsrzW8tP4OpouniBD3jTd.5UowyS_IWs6ah59yKeFO9X6IqMLjlJt6n5O9lTpN0.2fw;
65
+ path=/; expires=Thu, 11-Apr-24 23:06:42 GMT; domain=.workos.com; HttpOnly;
66
+ Secure; SameSite=None
67
+ - __cfruid=c2a61e4869ba7669d8dd1d11a8e59bba189e21ba-1712875002; path=/; domain=.workos.com;
68
+ HttpOnly; Secure; SameSite=None
69
+ Server:
70
+ - cloudflare
71
+ body:
72
+ encoding: UTF-8
73
+ string: ''
74
+ http_version:
75
+ recorded_at: Thu, 11 Apr 2024 22:36:42 GMT
76
+ recorded_with: VCR 5.0.0
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
- # typed: false
3
2
 
4
3
  RSpec.shared_examples 'client' do
5
4
  subject(:client) { described_class.client }
data/workos.gemspec CHANGED
@@ -21,16 +21,11 @@ Gem::Specification.new do |spec|
21
21
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
22
22
  spec.require_paths = ['lib']
23
23
 
24
- spec.add_dependency 'sorbet-runtime', '~> 0.5'
25
-
26
24
  spec.add_development_dependency 'bundler', '>= 2.0.1'
27
- spec.add_development_dependency 'codecov', '~> 0.2.8'
28
25
  spec.add_development_dependency 'rspec', '~> 3.9.0'
29
26
  spec.add_development_dependency 'rubocop', '~> 0.77'
30
- spec.add_development_dependency 'sorbet', '~> 0.5'
31
- spec.add_development_dependency 'tapioca'
32
27
  spec.add_development_dependency 'vcr', '~> 5.0.0'
33
28
  spec.add_development_dependency 'webmock'
34
29
 
35
- spec.required_ruby_version = '>= 2.5'
30
+ spec.required_ruby_version = '>= 2.7'
36
31
  end