descope 1.0.5 → 1.0.7

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 (89) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yaml +2 -2
  3. data/.github/workflows/publish-gem.yaml +39 -7
  4. data/.gitignore +2 -0
  5. data/.ruby-version +1 -1
  6. data/Gemfile +7 -7
  7. data/Gemfile.lock +70 -65
  8. data/README.md +175 -52
  9. data/descope.gemspec +25 -20
  10. data/examples/ruby/.ruby-version +1 -0
  11. data/examples/ruby/access_key_app.rb +4 -3
  12. data/examples/ruby/enchantedlink_app.rb +1 -0
  13. data/examples/ruby/magiclink_app.rb +1 -0
  14. data/examples/ruby/management/.ruby-version +1 -0
  15. data/examples/ruby/management/Gemfile +2 -2
  16. data/examples/ruby/management/access_key_app.rb +2 -0
  17. data/examples/ruby/management/audit_app.rb +32 -8
  18. data/examples/ruby/management/authz_app.rb +1 -0
  19. data/examples/ruby/management/flow_app.rb +1 -0
  20. data/examples/ruby/management/permission_app.rb +3 -2
  21. data/examples/ruby/management/role_app.rb +3 -2
  22. data/examples/ruby/management/tenant_app.rb +1 -0
  23. data/examples/ruby/management/user_app.rb +1 -0
  24. data/examples/ruby/oauth_app.rb +1 -0
  25. data/examples/ruby/otp_app.rb +38 -12
  26. data/examples/ruby/password_app.rb +8 -7
  27. data/examples/ruby/saml_app.rb +1 -0
  28. data/examples/ruby/version_check.rb +17 -0
  29. data/examples/ruby-on-rails-api/descope/Gemfile +9 -7
  30. data/examples/ruby-on-rails-api/descope/Gemfile.lock +121 -90
  31. data/examples/ruby-on-rails-api/descope/README.md +18 -18
  32. data/examples/ruby-on-rails-api/descope/app/assets/builds/application.css +20092 -23
  33. data/examples/ruby-on-rails-api/descope/app/assets/builds/application.js +0 -1
  34. data/examples/ruby-on-rails-api/descope/app/assets/builds/components/index.js +0 -14
  35. data/examples/ruby-on-rails-api/descope/package-lock.json +1073 -19302
  36. data/examples/ruby-on-rails-api/descope/package.json +8 -16
  37. data/examples/ruby-on-rails-api/descope/yarn.lock +557 -10641
  38. data/lib/descope/api/v1/auth/enchantedlink.rb +3 -1
  39. data/lib/descope/api/v1/auth/magiclink.rb +3 -1
  40. data/lib/descope/api/v1/auth/otp.rb +24 -15
  41. data/lib/descope/api/v1/auth/password.rb +6 -2
  42. data/lib/descope/api/v1/auth/totp.rb +3 -1
  43. data/lib/descope/api/v1/auth.rb +64 -32
  44. data/lib/descope/api/v1/management/audit.rb +24 -0
  45. data/lib/descope/api/v1/management/common.rb +21 -5
  46. data/lib/descope/api/v1/management/sso_application.rb +236 -0
  47. data/lib/descope/api/v1/management/sso_settings.rb +2 -24
  48. data/lib/descope/api/v1/management/user.rb +151 -13
  49. data/lib/descope/api/v1/management.rb +2 -0
  50. data/lib/descope/api/v1/session.rb +37 -4
  51. data/lib/descope/mixins/common.rb +6 -2
  52. data/lib/descope/mixins/http.rb +60 -9
  53. data/lib/descope/mixins/initializer.rb +2 -1
  54. data/lib/descope/mixins/logging.rb +12 -4
  55. data/lib/descope/mixins/validation.rb +21 -6
  56. data/lib/descope/version.rb +1 -1
  57. data/spec/descope/api/v1/auth_spec.rb +29 -0
  58. data/spec/descope/api/v1/auth_token_extraction_spec.rb +126 -0
  59. data/spec/descope/api/v1/session_refresh_spec.rb +98 -0
  60. data/spec/factories/user.rb +1 -1
  61. data/spec/integration/lib.descope/api/v1/auth/enchantedlink_spec.rb +1 -1
  62. data/spec/integration/lib.descope/api/v1/auth/magiclink_spec.rb +1 -1
  63. data/spec/integration/lib.descope/api/v1/auth/otp_spec.rb +73 -8
  64. data/spec/integration/lib.descope/api/v1/auth/session_spec.rb +49 -0
  65. data/spec/integration/lib.descope/api/v1/auth/totp_spec.rb +1 -1
  66. data/spec/integration/lib.descope/api/v1/management/access_key_spec.rb +3 -0
  67. data/spec/integration/lib.descope/api/v1/management/audit_spec.rb +38 -0
  68. data/spec/integration/lib.descope/api/v1/management/authz_spec.rb +2 -0
  69. data/spec/integration/lib.descope/api/v1/management/flow_spec.rb +3 -1
  70. data/spec/integration/lib.descope/api/v1/management/permissions_spec.rb +4 -2
  71. data/spec/integration/lib.descope/api/v1/management/project_spec.rb +2 -0
  72. data/spec/integration/lib.descope/api/v1/management/roles_spec.rb +3 -1
  73. data/spec/integration/lib.descope/api/v1/management/user_spec.rb +55 -6
  74. data/spec/lib.descope/api/v1/auth/enchantedlink_spec.rb +11 -2
  75. data/spec/lib.descope/api/v1/auth/otp_spec.rb +176 -18
  76. data/spec/lib.descope/api/v1/auth/password_spec.rb +10 -1
  77. data/spec/lib.descope/api/v1/auth_spec.rb +168 -6
  78. data/spec/lib.descope/api/v1/cookie_domain_fix_integration_spec.rb +245 -0
  79. data/spec/lib.descope/api/v1/management/audit_spec.rb +92 -0
  80. data/spec/lib.descope/api/v1/management/sso_application_spec.rb +217 -0
  81. data/spec/lib.descope/api/v1/management/sso_settings_spec.rb +2 -2
  82. data/spec/lib.descope/api/v1/management/user_spec.rb +134 -46
  83. data/spec/lib.descope/api/v1/session_spec.rb +119 -6
  84. data/spec/lib.descope/mixins/http_spec.rb +218 -0
  85. data/spec/support/client_config.rb +0 -1
  86. data/spec/support/utils.rb +6 -0
  87. metadata +34 -137
  88. data/examples/ruby-on-rails-api/descope/app/assets/builds/reportWebVitals.js +0 -211
  89. data/examples/ruby-on-rails-api/descope/app/assets/builds/reportWebVitals.js.map +0 -7
@@ -0,0 +1,218 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Descope::Mixins::HTTP do
6
+ before(:all) do
7
+ dummy_instance = DummyClass.new
8
+ dummy_instance.extend(Descope::Mixins::HTTP)
9
+ @instance = dummy_instance
10
+ end
11
+
12
+ describe '#parse_cookie_value' do
13
+ it 'extracts cookie value from Set-Cookie header' do
14
+ cookie_header = 'DS=jwt_token_value; Path=/; Domain=example.com; HttpOnly; Secure'
15
+ result = @instance.parse_cookie_value(cookie_header, 'DS')
16
+ expect(result).to eq('jwt_token_value')
17
+ end
18
+
19
+ it 'extracts cookie value with complex JWT token' do
20
+ jwt_token = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJodHRwczovL2FwaS5kZXNjb3BlLmNvbS9QMmFiY2RlMTIzNDUifQ.signature'
21
+ cookie_header = "DSR=#{jwt_token}; Path=/; Domain=dev.example.com; HttpOnly; Secure; Max-Age=2592000"
22
+ result = @instance.parse_cookie_value(cookie_header, 'DSR')
23
+ expect(result).to eq(jwt_token)
24
+ end
25
+
26
+ it 'returns nil when cookie name is not found' do
27
+ cookie_header = 'OTHER=value; Path=/; Domain=example.com'
28
+ result = @instance.parse_cookie_value(cookie_header, 'DS')
29
+ expect(result).to be_nil
30
+ end
31
+
32
+ it 'handles cookie value with special characters' do
33
+ cookie_header = 'DS=token.with-special_chars123; Path=/; Domain=example.com'
34
+ result = @instance.parse_cookie_value(cookie_header, 'DS')
35
+ expect(result).to eq('token.with-special_chars123')
36
+ end
37
+
38
+ it 'handles cookie header with spaces around value' do
39
+ cookie_header = 'DS= spaced_token ; Path=/; Domain=example.com'
40
+ result = @instance.parse_cookie_value(cookie_header, 'DS')
41
+ expect(result).to eq('spaced_token')
42
+ end
43
+ end
44
+
45
+ describe '#safe_parse_json with cookie handling' do
46
+ let(:mock_body) do
47
+ {
48
+ 'userId' => 'test123',
49
+ 'cookieExpiration' => 1640704758,
50
+ 'cookieDomain' => 'dev.example.com'
51
+ }.to_json
52
+ end
53
+
54
+ context 'when RestClient cookies are available (same domain)' do
55
+ it 'uses RestClient cookies when available' do
56
+ mock_cookies = {
57
+ 'DS' => 'session_token_from_restclient',
58
+ 'DSR' => 'refresh_token_from_restclient'
59
+ }
60
+
61
+ result = @instance.safe_parse_json(mock_body, cookies: mock_cookies, headers: {})
62
+
63
+ expect(result['cookies']).to eq(mock_cookies)
64
+ expect(result['cookies']['DS']).to eq('session_token_from_restclient')
65
+ expect(result['cookies']['DSR']).to eq('refresh_token_from_restclient')
66
+ end
67
+
68
+ it 'handles only refresh token in RestClient cookies' do
69
+ mock_cookies = { 'DSR' => 'refresh_token_only' }
70
+
71
+ result = @instance.safe_parse_json(mock_body, cookies: mock_cookies, headers: {})
72
+
73
+ expect(result['cookies']).to eq(mock_cookies)
74
+ expect(result['cookies']['DSR']).to eq('refresh_token_only')
75
+ expect(result['cookies']['DS']).to be_nil
76
+ end
77
+ end
78
+
79
+ context 'when RestClient cookies are empty (custom domain)' do
80
+ let(:set_cookie_headers) do
81
+ [
82
+ 'DS=session_jwt_token; Path=/; Domain=dev.example.com; HttpOnly; Secure; SameSite=None',
83
+ 'DSR=refresh_jwt_token; Path=/; Domain=dev.example.com; HttpOnly; Secure; SameSite=None; Max-Age=2592000'
84
+ ]
85
+ end
86
+
87
+ it 'parses cookies from Set-Cookie headers when RestClient cookies are empty' do
88
+ mock_headers = { 'set-cookie' => set_cookie_headers }
89
+
90
+ result = @instance.safe_parse_json(mock_body, cookies: {}, headers: mock_headers)
91
+
92
+ expect(result['cookies']).to_not be_nil
93
+ expect(result['cookies']['DS']).to eq('session_jwt_token')
94
+ expect(result['cookies']['DSR']).to eq('refresh_jwt_token')
95
+ end
96
+
97
+ it 'parses cookies from Set-Cookie header when headers is a string' do
98
+ mock_headers = { 'Set-Cookie' => set_cookie_headers.first }
99
+
100
+ result = @instance.safe_parse_json(mock_body, cookies: {}, headers: mock_headers)
101
+
102
+ expect(result['cookies']).to_not be_nil
103
+ expect(result['cookies']['DS']).to eq('session_jwt_token')
104
+ end
105
+
106
+ it 'handles case-insensitive Set-Cookie header names' do
107
+ mock_headers = { 'Set-Cookie' => set_cookie_headers }
108
+
109
+ result = @instance.safe_parse_json(mock_body, cookies: {}, headers: mock_headers)
110
+
111
+ expect(result['cookies']['DS']).to eq('session_jwt_token')
112
+ expect(result['cookies']['DSR']).to eq('refresh_jwt_token')
113
+ end
114
+
115
+ it 'handles complex JWT tokens in Set-Cookie headers' do
116
+ jwt_session = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJodHRwczovL2FwaS5kZXNjb3BlLmNvbSJ9.session_sig'
117
+ jwt_refresh = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJodHRwczovL2FwaS5kZXNjb3BlLmNvbSJ9.refresh_sig'
118
+
119
+ complex_headers = [
120
+ "DS=#{jwt_session}; Path=/; Domain=custom.example.com; HttpOnly; Secure; SameSite=None",
121
+ "DSR=#{jwt_refresh}; Path=/; Domain=custom.example.com; HttpOnly; Secure; SameSite=None; Max-Age=2592000"
122
+ ]
123
+ mock_headers = { 'set-cookie' => complex_headers }
124
+
125
+ result = @instance.safe_parse_json(mock_body, cookies: {}, headers: mock_headers)
126
+
127
+ expect(result['cookies']['DS']).to eq(jwt_session)
128
+ expect(result['cookies']['DSR']).to eq(jwt_refresh)
129
+ end
130
+
131
+ it 'ignores non-Descope cookies in Set-Cookie headers' do
132
+ mixed_headers = [
133
+ 'DS=session_token; Path=/; Domain=dev.example.com; HttpOnly',
134
+ 'CLOUDFLARE_SESSION=cf_token; Path=/; Domain=.example.com; HttpOnly',
135
+ 'DSR=refresh_token; Path=/; Domain=dev.example.com; HttpOnly'
136
+ ]
137
+ mock_headers = { 'set-cookie' => mixed_headers }
138
+
139
+ result = @instance.safe_parse_json(mock_body, cookies: {}, headers: mock_headers)
140
+
141
+ expect(result['cookies']['DS']).to eq('session_token')
142
+ expect(result['cookies']['DSR']).to eq('refresh_token')
143
+ expect(result['cookies']['CLOUDFLARE_SESSION']).to be_nil
144
+ end
145
+ end
146
+
147
+ context 'when no cookies are available anywhere' do
148
+ it 'does not add cookies key to response' do
149
+ result = @instance.safe_parse_json(mock_body, cookies: {}, headers: {})
150
+
151
+ expect(result).not_to have_key('cookies')
152
+ end
153
+
154
+ it 'handles missing Set-Cookie headers gracefully' do
155
+ mock_headers = { 'content-type' => 'application/json' }
156
+
157
+ result = @instance.safe_parse_json(mock_body, cookies: {}, headers: mock_headers)
158
+
159
+ expect(result).not_to have_key('cookies')
160
+ expect(result['userId']).to eq('test123')
161
+ end
162
+
163
+ it 'handles nil headers gracefully' do
164
+ result = @instance.safe_parse_json(mock_body, cookies: {}, headers: nil)
165
+
166
+ expect(result).not_to have_key('cookies')
167
+ expect(result['userId']).to eq('test123')
168
+ end
169
+ end
170
+
171
+ context 'edge cases' do
172
+ it 'handles malformed Set-Cookie headers' do
173
+ malformed_headers = [
174
+ 'MALFORMED_COOKIE_NO_EQUALS',
175
+ 'DS=; Path=/; Domain=example.com', # Empty value
176
+ '=value_without_name; Path=/', # No name
177
+ ]
178
+ mock_headers = { 'set-cookie' => malformed_headers }
179
+
180
+ result = @instance.safe_parse_json(mock_body, cookies: {}, headers: mock_headers)
181
+
182
+ # Should handle gracefully and not crash
183
+ expect(result['userId']).to eq('test123')
184
+ end
185
+
186
+ it 'prefers RestClient cookies over Set-Cookie headers when both available' do
187
+ mock_cookies = { 'DS' => 'restclient_token' }
188
+ set_cookie_headers = ['DS=header_token; Path=/; Domain=example.com']
189
+ mock_headers = { 'set-cookie' => set_cookie_headers }
190
+
191
+ result = @instance.safe_parse_json(mock_body, cookies: mock_cookies, headers: mock_headers)
192
+
193
+ # Should prefer RestClient cookies
194
+ expect(result['cookies']['DS']).to eq('restclient_token')
195
+ end
196
+ end
197
+ end
198
+
199
+ describe 'integration with request method' do
200
+ it 'passes headers parameter to safe_parse_json' do
201
+ # Mock RestClient response with custom domain cookies
202
+ mock_response = double('response')
203
+ allow(mock_response).to receive(:code).and_return(200)
204
+ allow(mock_response).to receive(:body).and_return('{"success": true}')
205
+ allow(mock_response).to receive(:cookies).and_return({})
206
+ allow(mock_response).to receive(:headers).and_return({
207
+ 'set-cookie' => ['DS=test_token; Domain=custom.example.com']
208
+ })
209
+
210
+ allow(@instance).to receive(:call).and_return(mock_response)
211
+
212
+ result = @instance.request(:get, '/test', {}, {})
213
+
214
+ expect(result['cookies']).to_not be_nil
215
+ expect(result['cookies']['DS']).to eq('test_token')
216
+ end
217
+ end
218
+ end
@@ -5,7 +5,6 @@ module Configuration
5
5
  module_function
6
6
 
7
7
  def config
8
- raise 'DESCOPE_MANAGEMENT_KEY is not set' if ENV['DESCOPE_MANAGEMENT_KEY'].nil?
9
8
  raise 'DESCOPE_PROJECT_ID is not set' if ENV['DESCOPE_PROJECT_ID'].nil?
10
9
 
11
10
  {
@@ -29,4 +29,10 @@ module SpecUtils
29
29
  value.each { |v| deep_stringify_keys(v) if v.is_a? Hash } if value.is_a? Array
30
30
  end
31
31
  end
32
+
33
+ def build_prefix
34
+ # Use GITHUB_RUN_NUMBER as the primary identifier, fall back to a timestamp if not available
35
+ prefix = ENV['GITHUB_RUN_NUMBER'] || ENV['GITHUB_RUN_ID']
36
+ prefix ? "build#{prefix}-" : "local-#{Time.now.to_i}-"
37
+ end
32
38
  end
metadata CHANGED
@@ -1,29 +1,28 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: descope
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.5
4
+ version: 1.0.7
5
5
  platform: ruby
6
6
  authors:
7
- - Descope
8
- autorequire:
7
+ - Descope Inc.
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2024-03-19 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
- name: rest-client
13
+ name: addressable
15
14
  requirement: !ruby/object:Gem::Requirement
16
15
  requirements:
17
16
  - - "~>"
18
17
  - !ruby/object:Gem::Version
19
- version: '2.1'
18
+ version: '2.8'
20
19
  type: :runtime
21
20
  prerelease: false
22
21
  version_requirements: !ruby/object:Gem::Requirement
23
22
  requirements:
24
23
  - - "~>"
25
24
  - !ruby/object:Gem::Version
26
- version: '2.1'
25
+ version: '2.8'
27
26
  - !ruby/object:Gem::Dependency
28
27
  name: jwt
29
28
  requirement: !ruby/object:Gem::Requirement
@@ -39,33 +38,19 @@ dependencies:
39
38
  - !ruby/object:Gem::Version
40
39
  version: '2.7'
41
40
  - !ruby/object:Gem::Dependency
42
- name: zache
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - "~>"
46
- - !ruby/object:Gem::Version
47
- version: '0.12'
48
- type: :runtime
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - "~>"
53
- - !ruby/object:Gem::Version
54
- version: '0.12'
55
- - !ruby/object:Gem::Dependency
56
- name: addressable
41
+ name: rest-client
57
42
  requirement: !ruby/object:Gem::Requirement
58
43
  requirements:
59
44
  - - "~>"
60
45
  - !ruby/object:Gem::Version
61
- version: '2.8'
46
+ version: '2.1'
62
47
  type: :runtime
63
48
  prerelease: false
64
49
  version_requirements: !ruby/object:Gem::Requirement
65
50
  requirements:
66
51
  - - "~>"
67
52
  - !ruby/object:Gem::Version
68
- version: '2.8'
53
+ version: '2.1'
69
54
  - !ruby/object:Gem::Dependency
70
55
  name: retryable
71
56
  requirement: !ruby/object:Gem::Requirement
@@ -81,120 +66,21 @@ dependencies:
81
66
  - !ruby/object:Gem::Version
82
67
  version: '3.0'
83
68
  - !ruby/object:Gem::Dependency
84
- name: bundler
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - ">="
88
- - !ruby/object:Gem::Version
89
- version: '0'
90
- type: :development
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - ">="
95
- - !ruby/object:Gem::Version
96
- version: '0'
97
- - !ruby/object:Gem::Dependency
98
- name: rake
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - "~>"
102
- - !ruby/object:Gem::Version
103
- version: '13.0'
104
- type: :development
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - "~>"
109
- - !ruby/object:Gem::Version
110
- version: '13.0'
111
- - !ruby/object:Gem::Dependency
112
- name: fuubar
113
- requirement: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - "~>"
116
- - !ruby/object:Gem::Version
117
- version: '2.0'
118
- type: :development
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - "~>"
123
- - !ruby/object:Gem::Version
124
- version: '2.0'
125
- - !ruby/object:Gem::Dependency
126
- name: rspec
127
- requirement: !ruby/object:Gem::Requirement
128
- requirements:
129
- - - "~>"
130
- - !ruby/object:Gem::Version
131
- version: '3.11'
132
- type: :development
133
- prerelease: false
134
- version_requirements: !ruby/object:Gem::Requirement
135
- requirements:
136
- - - "~>"
137
- - !ruby/object:Gem::Version
138
- version: '3.11'
139
- - !ruby/object:Gem::Dependency
140
- name: simplecov
141
- requirement: !ruby/object:Gem::Requirement
142
- requirements:
143
- - - "~>"
144
- - !ruby/object:Gem::Version
145
- version: '0.9'
146
- type: :development
147
- prerelease: false
148
- version_requirements: !ruby/object:Gem::Requirement
149
- requirements:
150
- - - "~>"
151
- - !ruby/object:Gem::Version
152
- version: '0.9'
153
- - !ruby/object:Gem::Dependency
154
- name: faker
155
- requirement: !ruby/object:Gem::Requirement
156
- requirements:
157
- - - "~>"
158
- - !ruby/object:Gem::Version
159
- version: '2.0'
160
- type: :development
161
- prerelease: false
162
- version_requirements: !ruby/object:Gem::Requirement
163
- requirements:
164
- - - "~>"
165
- - !ruby/object:Gem::Version
166
- version: '2.0'
167
- - !ruby/object:Gem::Dependency
168
- name: super_diff
169
- requirement: !ruby/object:Gem::Requirement
170
- requirements:
171
- - - "~>"
172
- - !ruby/object:Gem::Version
173
- version: '1.0'
174
- type: :development
175
- prerelease: false
176
- version_requirements: !ruby/object:Gem::Requirement
177
- requirements:
178
- - - "~>"
179
- - !ruby/object:Gem::Version
180
- version: '1.0'
181
- - !ruby/object:Gem::Dependency
182
- name: concurrent-ruby
69
+ name: zache
183
70
  requirement: !ruby/object:Gem::Requirement
184
71
  requirements:
185
72
  - - "~>"
186
73
  - !ruby/object:Gem::Version
187
- version: '1.1'
188
- type: :development
74
+ version: '0.12'
75
+ type: :runtime
189
76
  prerelease: false
190
77
  version_requirements: !ruby/object:Gem::Requirement
191
78
  requirements:
192
79
  - - "~>"
193
80
  - !ruby/object:Gem::Version
194
- version: '1.1'
81
+ version: '0.12'
195
82
  description: Ruby API Client for Descope API https://descope.com
196
- email:
197
- - support@descope.com
83
+ email: support@descope.com
198
84
  executables: []
199
85
  extensions: []
200
86
  extra_rdoc_files: []
@@ -259,8 +145,6 @@ files:
259
145
  - examples/ruby-on-rails-api/descope/app/assets/builds/controllers/application.js.map
260
146
  - examples/ruby-on-rails-api/descope/app/assets/builds/controllers/index.js
261
147
  - examples/ruby-on-rails-api/descope/app/assets/builds/controllers/index.js.map
262
- - examples/ruby-on-rails-api/descope/app/assets/builds/reportWebVitals.js
263
- - examples/ruby-on-rails-api/descope/app/assets/builds/reportWebVitals.js.map
264
148
  - examples/ruby-on-rails-api/descope/app/assets/builds/routes/index.css
265
149
  - examples/ruby-on-rails-api/descope/app/assets/builds/routes/index.css.map
266
150
  - examples/ruby-on-rails-api/descope/app/assets/builds/routes/index.js
@@ -348,11 +232,13 @@ files:
348
232
  - examples/ruby-on-rails-api/descope/tmp/.keep
349
233
  - examples/ruby-on-rails-api/descope/vendor/.keep
350
234
  - examples/ruby-on-rails-api/descope/yarn.lock
235
+ - examples/ruby/.ruby-version
351
236
  - examples/ruby/Gemfile
352
237
  - examples/ruby/Gemfile.lock
353
238
  - examples/ruby/access_key_app.rb
354
239
  - examples/ruby/enchantedlink_app.rb
355
240
  - examples/ruby/magiclink_app.rb
241
+ - examples/ruby/management/.ruby-version
356
242
  - examples/ruby/management/Gemfile
357
243
  - examples/ruby/management/Gemfile.lock
358
244
  - examples/ruby/management/access_key_app.rb
@@ -368,6 +254,7 @@ files:
368
254
  - examples/ruby/otp_app.rb
369
255
  - examples/ruby/password_app.rb
370
256
  - examples/ruby/saml_app.rb
257
+ - examples/ruby/version_check.rb
371
258
  - lib/descope.rb
372
259
  - lib/descope/api/v1.rb
373
260
  - lib/descope/api/v1/auth.rb
@@ -389,6 +276,7 @@ files:
389
276
  - lib/descope/api/v1/management/project.rb
390
277
  - lib/descope/api/v1/management/role.rb
391
278
  - lib/descope/api/v1/management/scim.rb
279
+ - lib/descope/api/v1/management/sso_application.rb
392
280
  - lib/descope/api/v1/management/sso_settings.rb
393
281
  - lib/descope/api/v1/management/tenant.rb
394
282
  - lib/descope/api/v1/management/user.rb
@@ -406,11 +294,15 @@ files:
406
294
  - lib/descope_client.rb
407
295
  - release-please-config.json
408
296
  - renovate.json
297
+ - spec/descope/api/v1/auth_spec.rb
298
+ - spec/descope/api/v1/auth_token_extraction_spec.rb
299
+ - spec/descope/api/v1/session_refresh_spec.rb
409
300
  - spec/factories/user.rb
410
301
  - spec/integration/lib.descope/api/v1/auth/enchantedlink_spec.rb
411
302
  - spec/integration/lib.descope/api/v1/auth/magiclink_spec.rb
412
303
  - spec/integration/lib.descope/api/v1/auth/otp_spec.rb
413
304
  - spec/integration/lib.descope/api/v1/auth/password_spec.rb
305
+ - spec/integration/lib.descope/api/v1/auth/session_spec.rb
414
306
  - spec/integration/lib.descope/api/v1/auth/totp_spec.rb
415
307
  - spec/integration/lib.descope/api/v1/management/access_key_spec.rb
416
308
  - spec/integration/lib.descope/api/v1/management/audit_spec.rb
@@ -428,6 +320,7 @@ files:
428
320
  - spec/lib.descope/api/v1/auth/saml_spec.rb
429
321
  - spec/lib.descope/api/v1/auth/totp_spec.rb
430
322
  - spec/lib.descope/api/v1/auth_spec.rb
323
+ - spec/lib.descope/api/v1/cookie_domain_fix_integration_spec.rb
431
324
  - spec/lib.descope/api/v1/management/access_key_spec.rb
432
325
  - spec/lib.descope/api/v1/management/audit_spec.rb
433
326
  - spec/lib.descope/api/v1/management/authz_spec.rb
@@ -437,11 +330,13 @@ files:
437
330
  - spec/lib.descope/api/v1/management/project_spec.rb
438
331
  - spec/lib.descope/api/v1/management/role_spec.rb
439
332
  - spec/lib.descope/api/v1/management/scim_spec.rb
333
+ - spec/lib.descope/api/v1/management/sso_application_spec.rb
440
334
  - spec/lib.descope/api/v1/management/sso_settings_spec.rb
441
335
  - spec/lib.descope/api/v1/management/tenant_spec.rb
442
336
  - spec/lib.descope/api/v1/management/user_spec.rb
443
337
  - spec/lib.descope/api/v1/session_spec.rb
444
338
  - spec/lib.descope/client_spec.rb
339
+ - spec/lib.descope/mixins/http_spec.rb
445
340
  - spec/spec_helper.rb
446
341
  - spec/support/client_config.rb
447
342
  - spec/support/dummy_class.rb
@@ -449,8 +344,11 @@ files:
449
344
  homepage: https://github.com/descope/descope-ruby-sdk
450
345
  licenses:
451
346
  - MIT
452
- metadata: {}
453
- post_install_message:
347
+ metadata:
348
+ bug_tracker_uri: https://github.com/descope/descope-ruby-sdk/issues
349
+ changelog_uri: https://github.com/descope/descope-ruby-sdk/releases/tag/1.0.7
350
+ documentation_uri: https://docs.descope.com
351
+ source_code_uri: https://github.com/descope/descope-ruby-sdk/tree/1.0.7
454
352
  rdoc_options: []
455
353
  require_paths:
456
354
  - lib
@@ -458,15 +356,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
458
356
  requirements:
459
357
  - - ">="
460
358
  - !ruby/object:Gem::Version
461
- version: '0'
359
+ version: 3.3.0
462
360
  required_rubygems_version: !ruby/object:Gem::Requirement
463
361
  requirements:
464
362
  - - ">="
465
363
  - !ruby/object:Gem::Version
466
- version: '0'
364
+ version: '3.5'
467
365
  requirements: []
468
- rubygems_version: 3.5.3
469
- signing_key:
366
+ rubygems_version: 3.6.9
470
367
  specification_version: 4
471
- summary: Descope API Client
368
+ summary: Descope Ruby API Client
472
369
  test_files: []