auth0 5.10.0 → 5.11.0

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.
@@ -13,6 +13,15 @@ describe Auth0::Mixins::Initializer do
13
13
  let(:params) { { namespace: 'samples.auth0.com' } }
14
14
  let(:instance) { DummyClassForProxy.send(:include, described_class).new(params) }
15
15
  let(:time_now) { Time.now }
16
+
17
+ let(:client_assertion_signing_key_pair) do
18
+ rsa_private = OpenSSL::PKey::RSA.generate 2048
19
+
20
+ {
21
+ public_key: rsa_private.public_key,
22
+ private_key: rsa_private
23
+ }
24
+ end
16
25
 
17
26
  context 'api v2' do
18
27
  it 'sets retry_count when passed' do
@@ -45,31 +54,76 @@ describe Auth0::Mixins::Initializer do
45
54
  expect(instance.instance_variable_get('@token')).to eq('123')
46
55
  end
47
56
 
48
- it 'fetches a token if none was given' do
49
- params[:client_id] = client_id = 'test_client_id'
50
- params[:client_secret] = client_secret = 'test_client_secret'
51
- params[:api_identifier] = api_identifier = 'test'
52
-
53
- payload = {
54
- grant_type: 'client_credentials',
55
- client_id: client_id,
56
- client_secret: client_secret,
57
- audience: api_identifier
58
- }
59
-
60
- expect(RestClient::Request).to receive(:execute).with(hash_including(
61
- method: :post,
62
- url: 'https://samples.auth0.com/oauth/token',
63
- payload: payload.to_json
64
- ))
65
- .and_return(StubResponse.new({
66
- "access_token" => "test",
67
- "expires_in" => 86400},
68
- true,
69
- 200))
70
-
71
- expect(instance.instance_variable_get('@token')).to eq('test')
72
- expect(instance.instance_variable_get('@token_expires_at')).to eq(time_now.to_i + 86400)
57
+ context 'with a client secret' do
58
+ it 'fetches a token if none was given' do
59
+ params[:client_id] = client_id = 'test_client_id'
60
+ params[:client_secret] = client_secret = 'test_client_secret'
61
+ params[:api_identifier] = api_identifier = 'test'
62
+
63
+ payload = {
64
+ grant_type: 'client_credentials',
65
+ client_id: client_id,
66
+ client_secret: client_secret,
67
+ audience: api_identifier
68
+ }
69
+
70
+ expect(RestClient::Request).to receive(:execute) do |arg|
71
+ expect(arg).to(match(
72
+ include(
73
+ method: :post,
74
+ url: 'https://samples.auth0.com/oauth/token'
75
+ )
76
+ ))
77
+
78
+ expect(JSON.parse(arg[:payload], { symbolize_names: true })).to eq(payload)
79
+
80
+ StubResponse.new({
81
+ "access_token" => "test",
82
+ "expires_in" => 86400},
83
+ true,
84
+ 200)
85
+ end
86
+
87
+ expect(instance.instance_variable_get('@token')).to eq('test')
88
+ expect(instance.instance_variable_get('@token_expires_at')).to eq(time_now.to_i + 86400)
89
+ end
90
+ end
91
+
92
+ context 'with a client assertion signing key' do
93
+ it 'fetches a token if none was given' do
94
+ private_key = client_assertion_signing_key_pair[:private_key]
95
+
96
+ params[:client_id] = client_id = 'test_client_id'
97
+ params[:api_identifier] = api_identifier = 'test'
98
+ params[:client_assertion_signing_key] = private_key
99
+
100
+ expect(RestClient::Request).to receive(:execute) do |arg|
101
+ expect(arg).to(match(
102
+ include(
103
+ method: :post,
104
+ url: 'https://samples.auth0.com/oauth/token'
105
+ )
106
+ ))
107
+
108
+ payload = JSON.parse(arg[:payload], { symbolize_names: true })
109
+
110
+ expect(payload[:grant_type]).to eq 'client_credentials'
111
+ expect(payload[:client_id]).to eq client_id
112
+ expect(payload[:audience]).to eq api_identifier
113
+ expect(payload[:client_secret]).to be_nil
114
+ expect(payload[:client_assertion]).not_to be_nil
115
+ expect(payload[:client_assertion_type]).to eq Auth0::ClientAssertion::CLIENT_ASSERTION_TYPE
116
+
117
+ StubResponse.new({
118
+ "access_token" => "test",
119
+ "expires_in" => 86400},
120
+ true,
121
+ 200)
122
+ end
123
+
124
+ expect(instance.instance_variable_get('@token')).to eq('test')
125
+ expect(instance.instance_variable_get('@token_expires_at')).to eq(time_now.to_i + 86400)
126
+ end
73
127
  end
74
128
 
75
129
  it "doesn't get a new token if one was supplied using 'token'" do
@@ -34,16 +34,21 @@ describe Auth0::Mixins::TokenManagement do
34
34
 
35
35
  context 'get_token' do
36
36
  it 'renews the token if there is no token set' do
37
- expect(RestClient::Request).to receive(:execute).with(hash_including(
38
- method: :post,
39
- url: 'https://samples.auth0.com/oauth/token',
40
- payload: payload.to_json
41
- ))
42
- .and_return(StubResponse.new({
43
- "access_token" => "test",
44
- "expires_in" => 86400},
45
- true,
46
- 200))
37
+ expect(RestClient::Request).to receive(:execute) do |arg|
38
+ expect(arg).to(match(
39
+ include(
40
+ method: :post,
41
+ url: 'https://samples.auth0.com/oauth/token'
42
+ )))
43
+
44
+ expect(JSON.parse(arg[:payload], { symbolize_names: true })).to eq(payload)
45
+
46
+ StubResponse.new({
47
+ "access_token" => "test",
48
+ "expires_in" => 86400},
49
+ true,
50
+ 200)
51
+ end
47
52
 
48
53
  instance.send(:get_token)
49
54
 
@@ -70,16 +75,21 @@ describe Auth0::Mixins::TokenManagement do
70
75
  params[:token] = 'test-token'
71
76
  params[:token_expires_at] = time_now.to_i + 5
72
77
 
73
- expect(RestClient::Request).to receive(:execute).with(hash_including(
74
- method: :post,
75
- url: 'https://samples.auth0.com/oauth/token',
76
- payload: payload.to_json
77
- ))
78
- .and_return(StubResponse.new({
79
- "access_token" => "renewed_token",
80
- "expires_in" => 86400},
81
- true,
82
- 200))
78
+ expect(RestClient::Request).to receive(:execute) do |arg|
79
+ expect(arg).to(match(
80
+ include(
81
+ method: :post,
82
+ url: 'https://samples.auth0.com/oauth/token'
83
+ )))
84
+
85
+ expect(JSON.parse(arg[:payload], { symbolize_names: true })).to eq(payload)
86
+
87
+ StubResponse.new({
88
+ "access_token" => "renewed_token",
89
+ "expires_in" => 86400},
90
+ true,
91
+ 200)
92
+ end
83
93
 
84
94
  instance.send(:get_token)
85
95
 
@@ -91,16 +101,21 @@ describe Auth0::Mixins::TokenManagement do
91
101
  params[:token] = 'test-token'
92
102
  params[:token_expires_at] = time_now.to_i - 10
93
103
 
94
- expect(RestClient::Request).to receive(:execute).with(hash_including(
95
- method: :post,
96
- url: 'https://samples.auth0.com/oauth/token',
97
- payload: payload.to_json
98
- ))
99
- .and_return(StubResponse.new({
100
- "access_token" => "renewed_token",
101
- "expires_in" => 86400},
102
- true,
103
- 200))
104
+ expect(RestClient::Request).to receive(:execute) do |arg|
105
+ expect(arg).to(match(
106
+ include(
107
+ method: :post,
108
+ url: 'https://samples.auth0.com/oauth/token'
109
+ )))
110
+
111
+ expect(JSON.parse(arg[:payload], { symbolize_names: true })).to eq(payload)
112
+
113
+ StubResponse.new({
114
+ "access_token" => "renewed_token",
115
+ "expires_in" => 86400},
116
+ true,
117
+ 200)
118
+ end
104
119
 
105
120
  instance.send(:get_token)
106
121
 
data/spec/spec_helper.rb CHANGED
@@ -1,4 +1,3 @@
1
- require 'pry'
2
1
  require 'rack/test'
3
2
  require 'faker'
4
3
  require 'json'
@@ -13,5 +13,7 @@ class DummyClassForTokens
13
13
  @base_uri = "https://#{@domain}"
14
14
  @token = config[:token]
15
15
  @token_expires_at = config[:token_expires_at]
16
+ @client_assertion_signing_key = config[:client_assertion_signing_key]
17
+ @client_assertion_signing_alg = config[:client_assertion_signing_alg] || 'RS256'
16
18
  end
17
19
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: auth0
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.10.0
4
+ version: 5.11.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Auth0
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2022-10-10 00:00:00.000000000 Z
14
+ date: 2023-01-27 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: rest-client
@@ -139,34 +139,6 @@ dependencies:
139
139
  - - "~>"
140
140
  - !ruby/object:Gem::Version
141
141
  version: '2.0'
142
- - !ruby/object:Gem::Dependency
143
- name: pry
144
- requirement: !ruby/object:Gem::Requirement
145
- requirements:
146
- - - "~>"
147
- - !ruby/object:Gem::Version
148
- version: '0.10'
149
- type: :development
150
- prerelease: false
151
- version_requirements: !ruby/object:Gem::Requirement
152
- requirements:
153
- - - "~>"
154
- - !ruby/object:Gem::Version
155
- version: '0.10'
156
- - !ruby/object:Gem::Dependency
157
- name: pry-nav
158
- requirement: !ruby/object:Gem::Requirement
159
- requirements:
160
- - - "~>"
161
- - !ruby/object:Gem::Version
162
- version: '0.2'
163
- type: :development
164
- prerelease: false
165
- version_requirements: !ruby/object:Gem::Requirement
166
- requirements:
167
- - - "~>"
168
- - !ruby/object:Gem::Version
169
- version: '0.2'
170
142
  - !ruby/object:Gem::Dependency
171
143
  name: rspec
172
144
  requirement: !ruby/object:Gem::Requirement
@@ -280,7 +252,9 @@ files:
280
252
  - CHANGELOG.md
281
253
  - CODE_OF_CONDUCT.md
282
254
  - DEPLOYMENT.md
255
+ - DEVELOPMENT.md
283
256
  - Dockerfile
257
+ - EXAMPLES.md
284
258
  - Gemfile
285
259
  - Gemfile.lock
286
260
  - Guardfile
@@ -389,6 +363,7 @@ files:
389
363
  - lib/auth0/api/v2/users.rb
390
364
  - lib/auth0/api/v2/users_by_email.rb
391
365
  - lib/auth0/client.rb
366
+ - lib/auth0/client_assertion.rb
392
367
  - lib/auth0/exception.rb
393
368
  - lib/auth0/mixins.rb
394
369
  - lib/auth0/mixins/access_token_struct.rb
@@ -401,6 +376,7 @@ files:
401
376
  - lib/auth0/mixins/validation.rb
402
377
  - lib/auth0/version.rb
403
378
  - lib/auth0_client.rb
379
+ - opslevel.yml
404
380
  - publish_rubygem.sh
405
381
  - spec/fixtures/vcr_cassettes/Auth0_Api_AuthenticationEndpoints/_change_password/should_trigger_a_password_reset.yml
406
382
  - spec/fixtures/vcr_cassettes/Auth0_Api_AuthenticationEndpoints/_login_with_resource_owner/should_fail_with_an_incorrect_email.yml
@@ -579,6 +555,7 @@ files:
579
555
  - spec/integration/lib/auth0/api/v2/api_user_blocks_spec.rb
580
556
  - spec/integration/lib/auth0/api/v2/api_users_spec.rb
581
557
  - spec/integration/lib/auth0/auth0_client_spec.rb
558
+ - spec/lib/auth0/api/authentication_endpoints_spec.rb
582
559
  - spec/lib/auth0/api/v2/actions_spec.rb
583
560
  - spec/lib/auth0/api/v2/anomaly_spec.rb
584
561
  - spec/lib/auth0/api/v2/attack_protection_spec.rb
@@ -637,7 +614,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
637
614
  - !ruby/object:Gem::Version
638
615
  version: '0'
639
616
  requirements: []
640
- rubygems_version: 3.3.11
617
+ rubygems_version: 3.3.26
641
618
  signing_key:
642
619
  specification_version: 4
643
620
  summary: Auth0 API Client