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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e09a644031cc5915d99166b84fc7d9cd59657fbe2991faa4a93697c51f39978a
4
- data.tar.gz: 30a74f7a9cc11d9c7eebf827eb4db4db9c904ce47ca3d5db6cefaecd6d438d3d
3
+ metadata.gz: bce81ebfe4a744f53f2cb742a30c286f26597490aef729901356a54c067c9a3e
4
+ data.tar.gz: e90c8e6347ed3f5ddaf9fc3c1519d63c264f3faadc5e9f69fb51048a1cfcaf4a
5
5
  SHA512:
6
- metadata.gz: caa067305857d9904758f66c5cb522b9e4f104258686431fe846f968623c93eb6dda2c1c2fd8ccb0281d052e7e528d6f48d64aa5ea4fadb11c26b6abbb1c259a
7
- data.tar.gz: 7f459347afb2493a4a722f8a6d249906d95994008d9f89e6475e6a673929f09cf15414c4fb41644d478898f1ca6aef408805741921aa9ae4dc298c20f45f45e8
6
+ metadata.gz: 75145d5084c21ae190183eaa2df156698427f204f0fd85654312761174cc5c5fe80be947af247721555922ab2f99a49996454eff03315c3b06b78e03ac9d88f7
7
+ data.tar.gz: 25267d878c9e91ae639bc3b1112f37225a96ea5954052eb6b1b312e8440433aacf6948ef24769542911e74c741694756595bdc4c22dc55933a95df1ad361adfd
@@ -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)
@@ -1,3 +1,3 @@
1
1
  module KindeSdk
2
- VERSION = "1.6.5"
2
+ VERSION = "1.6.6"
3
3
  end
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.08981 seconds |
4
- ./spec/kinde_sdk_spec.rb[1:1:2] | passed | 0.16283 seconds |
5
- ./spec/kinde_sdk_spec.rb[1:2:1] | passed | 0.04053 seconds |
6
- ./spec/kinde_sdk_spec.rb[1:2:2:1] | passed | 0.00692 seconds |
7
- ./spec/kinde_sdk_spec.rb[1:3:1] | passed | 0.20177 seconds |
8
- ./spec/kinde_sdk_spec.rb[1:4:1] | passed | 0.10943 seconds |
9
- ./spec/kinde_sdk_spec.rb[1:4:2:1] | passed | 0.0565 seconds |
10
- ./spec/kinde_sdk_spec.rb[1:5:1] | passed | 0.03191 seconds |
11
- ./spec/kinde_sdk_spec.rb[1:5:2:1] | passed | 0.18111 seconds |
12
- ./spec/kinde_sdk_spec.rb[1:6:1:1] | passed | 0.04266 seconds |
13
- ./spec/kinde_sdk_spec.rb[1:6:1:2] | passed | 0.1197 seconds |
14
- ./spec/kinde_sdk_spec.rb[1:6:1:3] | passed | 0.08009 seconds |
15
- ./spec/kinde_sdk_spec.rb[1:6:2:1] | passed | 0.02948 seconds |
16
- ./spec/kinde_sdk_spec.rb[1:6:2:2:1:1] | passed | 0.04764 seconds |
17
- ./spec/kinde_sdk_spec.rb[1:6:2:2:2:1] | passed | 0.03494 seconds |
18
- ./spec/kinde_sdk_spec.rb[1:6:3:1] | passed | 0.1131 seconds |
19
- ./spec/kinde_sdk_spec.rb[1:6:3:2] | passed | 0.14076 seconds |
20
- ./spec/kinde_sdk_spec.rb[1:6:3:3] | passed | 0.03831 seconds |
21
- ./spec/kinde_sdk_spec.rb[1:6:3:4] | passed | 0.05261 seconds |
22
- ./spec/kinde_sdk_spec.rb[1:6:3:5] | passed | 0.04123 seconds |
23
- ./spec/kinde_sdk_spec.rb[1:6:3:6] | passed | 0.06887 seconds |
24
- ./spec/kinde_sdk_spec.rb[1:6:4:1:1] | passed | 0.07917 seconds |
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 |
@@ -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.5
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-19 00:00:00.000000000 Z
10
+ date: 2025-06-25 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: typhoeus