workos 4.1.0 → 4.2.1

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