kinde_sdk 1.6.5 → 1.6.6
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.
- checksums.yaml +4 -4
- data/lib/kinde_sdk/client.rb +26 -0
- data/lib/kinde_sdk/version.rb +1 -1
- data/spec/examples.txt +27 -22
- data/spec/kinde_sdk_spec.rb +94 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bce81ebfe4a744f53f2cb742a30c286f26597490aef729901356a54c067c9a3e
|
4
|
+
data.tar.gz: e90c8e6347ed3f5ddaf9fc3c1519d63c264f3faadc5e9f69fb51048a1cfcaf4a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 75145d5084c21ae190183eaa2df156698427f204f0fd85654312761174cc5c5fe80be947af247721555922ab2f99a49996454eff03315c3b06b78e03ac9d88f7
|
7
|
+
data.tar.gz: 25267d878c9e91ae639bc3b1112f37225a96ea5954052eb6b1b312e8440433aacf6948ef24769542911e74c741694756595bdc4c22dc55933a95df1ad361adfd
|
data/lib/kinde_sdk/client.rb
CHANGED
@@ -124,6 +124,32 @@ module KindeSdk
|
|
124
124
|
end
|
125
125
|
end
|
126
126
|
|
127
|
+
# Custom oauth method that provides backward compatibility
|
128
|
+
def oauth
|
129
|
+
oauth_api = init_instance_api(KindeApi::OAuthApi)
|
130
|
+
|
131
|
+
# Add backward compatibility for get_user method
|
132
|
+
unless oauth_api.respond_to?(:get_user)
|
133
|
+
oauth_api.define_singleton_method(:get_user) do |opts = {}|
|
134
|
+
# Call the new method
|
135
|
+
user_profile_v2 = get_user_profile_v2(opts)
|
136
|
+
|
137
|
+
# Convert UserProfileV2 to UserProfile format as a hash
|
138
|
+
# This provides backward compatibility without depending on the UserProfile class
|
139
|
+
{
|
140
|
+
id: user_profile_v2.id || user_profile_v2.sub,
|
141
|
+
preferred_email: user_profile_v2.email,
|
142
|
+
provided_id: user_profile_v2.provided_id,
|
143
|
+
last_name: user_profile_v2.family_name,
|
144
|
+
first_name: user_profile_v2.given_name,
|
145
|
+
picture: user_profile_v2.picture
|
146
|
+
}
|
147
|
+
end
|
148
|
+
end
|
149
|
+
|
150
|
+
oauth_api
|
151
|
+
end
|
152
|
+
|
127
153
|
private
|
128
154
|
|
129
155
|
def init_instance_api(api_klass)
|
data/lib/kinde_sdk/version.rb
CHANGED
data/spec/examples.txt
CHANGED
@@ -1,24 +1,29 @@
|
|
1
1
|
example_id | status | run_time |
|
2
2
|
------------------------------------- | ------ | --------------- |
|
3
|
-
./spec/kinde_sdk_spec.rb[1:1:1] | passed | 0.
|
4
|
-
./spec/kinde_sdk_spec.rb[1:1:2] | passed | 0.
|
5
|
-
./spec/kinde_sdk_spec.rb[1:2:1] | passed | 0.
|
6
|
-
./spec/kinde_sdk_spec.rb[1:2:2:1] | passed | 0.
|
7
|
-
./spec/kinde_sdk_spec.rb[1:3:1] | passed | 0.
|
8
|
-
./spec/kinde_sdk_spec.rb[1:4:1] | passed | 0.
|
9
|
-
./spec/kinde_sdk_spec.rb[1:4:2:1] | passed | 0.
|
10
|
-
./spec/kinde_sdk_spec.rb[1:5:1] | passed | 0.
|
11
|
-
./spec/kinde_sdk_spec.rb[1:5:2:1] | passed | 0.
|
12
|
-
./spec/kinde_sdk_spec.rb[1:6:1:1] | passed | 0.
|
13
|
-
./spec/kinde_sdk_spec.rb[1:6:1:2] | passed | 0.
|
14
|
-
./spec/kinde_sdk_spec.rb[1:6:1:3] | passed | 0.
|
15
|
-
./spec/kinde_sdk_spec.rb[1:6:2:1] | passed | 0.
|
16
|
-
./spec/kinde_sdk_spec.rb[1:6:2:2:1:1] | passed | 0.
|
17
|
-
./spec/kinde_sdk_spec.rb[1:6:2:2:2:1] | passed | 0.
|
18
|
-
./spec/kinde_sdk_spec.rb[1:6:3:1] | passed | 0.
|
19
|
-
./spec/kinde_sdk_spec.rb[1:6:3:2] | passed | 0.
|
20
|
-
./spec/kinde_sdk_spec.rb[1:6:3:3] | passed | 0.
|
21
|
-
./spec/kinde_sdk_spec.rb[1:6:3:4] | passed | 0.
|
22
|
-
./spec/kinde_sdk_spec.rb[1:6:3:5] | passed | 0.
|
23
|
-
./spec/kinde_sdk_spec.rb[1:6:3:6] | passed | 0.
|
24
|
-
./spec/kinde_sdk_spec.rb[1:6:4:1:1] | passed | 0.
|
3
|
+
./spec/kinde_sdk_spec.rb[1:1:1] | passed | 0.04758 seconds |
|
4
|
+
./spec/kinde_sdk_spec.rb[1:1:2] | passed | 0.03488 seconds |
|
5
|
+
./spec/kinde_sdk_spec.rb[1:2:1] | passed | 0.0979 seconds |
|
6
|
+
./spec/kinde_sdk_spec.rb[1:2:2:1] | passed | 0.08776 seconds |
|
7
|
+
./spec/kinde_sdk_spec.rb[1:3:1] | passed | 0.05409 seconds |
|
8
|
+
./spec/kinde_sdk_spec.rb[1:4:1] | passed | 0.05912 seconds |
|
9
|
+
./spec/kinde_sdk_spec.rb[1:4:2:1] | passed | 0.07198 seconds |
|
10
|
+
./spec/kinde_sdk_spec.rb[1:5:1] | passed | 0.05599 seconds |
|
11
|
+
./spec/kinde_sdk_spec.rb[1:5:2:1] | passed | 0.04142 seconds |
|
12
|
+
./spec/kinde_sdk_spec.rb[1:6:1:1] | passed | 0.03109 seconds |
|
13
|
+
./spec/kinde_sdk_spec.rb[1:6:1:2] | passed | 0.04813 seconds |
|
14
|
+
./spec/kinde_sdk_spec.rb[1:6:1:3] | passed | 0.05677 seconds |
|
15
|
+
./spec/kinde_sdk_spec.rb[1:6:2:1] | passed | 0.15193 seconds |
|
16
|
+
./spec/kinde_sdk_spec.rb[1:6:2:2:1:1] | passed | 0.01475 seconds |
|
17
|
+
./spec/kinde_sdk_spec.rb[1:6:2:2:2:1] | passed | 0.04081 seconds |
|
18
|
+
./spec/kinde_sdk_spec.rb[1:6:3:1] | passed | 0.03504 seconds |
|
19
|
+
./spec/kinde_sdk_spec.rb[1:6:3:2] | passed | 0.02938 seconds |
|
20
|
+
./spec/kinde_sdk_spec.rb[1:6:3:3] | passed | 0.09472 seconds |
|
21
|
+
./spec/kinde_sdk_spec.rb[1:6:3:4] | passed | 0.09361 seconds |
|
22
|
+
./spec/kinde_sdk_spec.rb[1:6:3:5] | passed | 0.11623 seconds |
|
23
|
+
./spec/kinde_sdk_spec.rb[1:6:3:6] | passed | 0.04303 seconds |
|
24
|
+
./spec/kinde_sdk_spec.rb[1:6:4:1:1] | passed | 0.09948 seconds |
|
25
|
+
./spec/kinde_sdk_spec.rb[1:7] | passed | 0.05798 seconds |
|
26
|
+
./spec/kinde_sdk_spec.rb[1:8:1] | passed | 0.11195 seconds |
|
27
|
+
./spec/kinde_sdk_spec.rb[1:8:2] | passed | 0.05606 seconds |
|
28
|
+
./spec/kinde_sdk_spec.rb[1:8:3] | passed | 0.0705 seconds |
|
29
|
+
./spec/kinde_sdk_spec.rb[1:8:4] | passed | 0.08605 seconds |
|
data/spec/kinde_sdk_spec.rb
CHANGED
@@ -351,6 +351,100 @@ RSpec.describe KindeSdk do
|
|
351
351
|
end
|
352
352
|
end
|
353
353
|
end
|
354
|
+
|
355
|
+
it "has a version number" do
|
356
|
+
expect(KindeSdk::VERSION).not_to be nil
|
357
|
+
end
|
358
|
+
|
359
|
+
describe 'backward compatibility' do
|
360
|
+
let(:mock_user_profile_v2) do
|
361
|
+
double('UserProfileV2',
|
362
|
+
id: 'test_id',
|
363
|
+
sub: 'test_sub',
|
364
|
+
email: 'test@example.com',
|
365
|
+
provided_id: 'external_id',
|
366
|
+
family_name: 'Doe',
|
367
|
+
given_name: 'John',
|
368
|
+
picture: 'https://example.com/picture.jpg'
|
369
|
+
)
|
370
|
+
end
|
371
|
+
|
372
|
+
# Use a real Ruby class for the OAuthApi mock to allow dynamic method addition
|
373
|
+
let(:mock_oauth_api_class) do
|
374
|
+
Class.new do
|
375
|
+
attr_accessor :user_profile_v2
|
376
|
+
def initialize(user_profile_v2)
|
377
|
+
@user_profile_v2 = user_profile_v2
|
378
|
+
end
|
379
|
+
def get_user_profile_v2(*)
|
380
|
+
@user_profile_v2
|
381
|
+
end
|
382
|
+
def token_introspection(*); end
|
383
|
+
def token_revocation(*); end
|
384
|
+
end
|
385
|
+
end
|
386
|
+
|
387
|
+
let(:mock_oauth_api) { mock_oauth_api_class.new(mock_user_profile_v2) }
|
388
|
+
let(:mock_kinde_api_client) { double('KindeApiClient') }
|
389
|
+
let(:tokens_hash) { { access_token: 'test_token' } }
|
390
|
+
|
391
|
+
before do
|
392
|
+
allow(KindeApi::OAuthApi).to receive(:new) { mock_oauth_api_class.new(mock_user_profile_v2) }
|
393
|
+
end
|
394
|
+
|
395
|
+
it 'supports both get_user and get_user_profile_v2 methods' do
|
396
|
+
client = KindeSdk::Client.new(mock_kinde_api_client, tokens_hash, false)
|
397
|
+
user_profile = client.oauth.get_user
|
398
|
+
expect(user_profile).to be_a(Hash)
|
399
|
+
expect(user_profile[:id]).to eq('test_id')
|
400
|
+
expect(user_profile[:preferred_email]).to eq('test@example.com')
|
401
|
+
expect(user_profile[:first_name]).to eq('John')
|
402
|
+
expect(user_profile[:last_name]).to eq('Doe')
|
403
|
+
expect(user_profile[:picture]).to eq('https://example.com/picture.jpg')
|
404
|
+
|
405
|
+
user_profile_v2 = client.oauth.get_user_profile_v2
|
406
|
+
expect(user_profile_v2.id).to eq('test_id')
|
407
|
+
expect(user_profile_v2.email).to eq('test@example.com')
|
408
|
+
expect(user_profile_v2.given_name).to eq('John')
|
409
|
+
expect(user_profile_v2.family_name).to eq('Doe')
|
410
|
+
expect(user_profile_v2.picture).to eq('https://example.com/picture.jpg')
|
411
|
+
end
|
412
|
+
|
413
|
+
it 'handles missing id field by using sub field' do
|
414
|
+
mock_user_profile_v2_no_id = double('UserProfileV2',
|
415
|
+
id: nil,
|
416
|
+
sub: 'test_sub',
|
417
|
+
email: 'test@example.com',
|
418
|
+
provided_id: 'external_id',
|
419
|
+
family_name: 'Doe',
|
420
|
+
given_name: 'John',
|
421
|
+
picture: 'https://example.com/picture.jpg'
|
422
|
+
)
|
423
|
+
allow(KindeApi::OAuthApi).to receive(:new).and_return(
|
424
|
+
mock_oauth_api_class.new(mock_user_profile_v2_no_id)
|
425
|
+
)
|
426
|
+
client = KindeSdk::Client.new(mock_kinde_api_client, tokens_hash, false)
|
427
|
+
user_profile = client.oauth.get_user
|
428
|
+
expect(user_profile[:id]).to eq('test_sub')
|
429
|
+
end
|
430
|
+
|
431
|
+
it 'only adds get_user method once per oauth instance' do
|
432
|
+
client = KindeSdk::Client.new(mock_kinde_api_client, tokens_hash, false)
|
433
|
+
oauth1 = client.oauth
|
434
|
+
oauth2 = client.oauth
|
435
|
+
expect(oauth1.respond_to?(:get_user)).to be true
|
436
|
+
expect(oauth2.respond_to?(:get_user)).to be true
|
437
|
+
end
|
438
|
+
|
439
|
+
it 'preserves all original oauth methods' do
|
440
|
+
client = KindeSdk::Client.new(mock_kinde_api_client, tokens_hash, false)
|
441
|
+
oauth = client.oauth
|
442
|
+
expect(oauth.respond_to?(:get_user_profile_v2)).to be true
|
443
|
+
expect(oauth.respond_to?(:token_introspection)).to be true
|
444
|
+
expect(oauth.respond_to?(:token_revocation)).to be true
|
445
|
+
expect(oauth.respond_to?(:get_user)).to be true
|
446
|
+
end
|
447
|
+
end
|
354
448
|
end
|
355
449
|
|
356
450
|
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kinde_sdk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.6.
|
4
|
+
version: 1.6.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kinde Australia Pty Ltd
|
8
8
|
bindir: bin
|
9
9
|
cert_chain: []
|
10
|
-
date: 2025-06-
|
10
|
+
date: 2025-06-25 00:00:00.000000000 Z
|
11
11
|
dependencies:
|
12
12
|
- !ruby/object:Gem::Dependency
|
13
13
|
name: typhoeus
|