auth0 5.9.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.
- checksums.yaml +4 -4
- data/.circleci/config.yml +3 -3
- data/.devcontainer/Dockerfile +19 -0
- data/.devcontainer/devcontainer.json +37 -0
- data/CHANGELOG.md +22 -0
- data/DEVELOPMENT.md +35 -0
- data/EXAMPLES.md +220 -0
- data/Gemfile +1 -0
- data/Gemfile.lock +59 -63
- data/README.md +68 -253
- data/auth0.gemspec +2 -4
- data/examples/ruby-api/Gemfile +3 -2
- data/examples/ruby-api/Gemfile.lock +33 -0
- data/examples/ruby-api/README.md +2 -2
- data/examples/ruby-on-rails-api/README.md +0 -2
- data/lib/auth0/api/authentication_endpoints.rb +70 -13
- data/lib/auth0/api/v2/clients.rb +42 -0
- data/lib/auth0/api/v2/jobs.rb +15 -4
- data/lib/auth0/api/v2/organizations.rb +1 -1
- data/lib/auth0/client_assertion.rb +45 -0
- data/lib/auth0/mixins/httpproxy.rb +11 -12
- data/lib/auth0/mixins/initializer.rb +2 -0
- data/lib/auth0/mixins/token_management.rb +2 -2
- data/lib/auth0/version.rb +1 -1
- data/opslevel.yml +5 -0
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Clients/_patch_client/should_update_the_client_with_the_correct_attributes.yml +2 -1
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Connections/_update_connection/should_update_the_connection.yml +1 -1
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/_update_rule/should_update_the_disabled_rule_to_be_enabled.yml +1 -1
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Tenants/_update_tenant_settings/should_revert_the_tenant_name.yml +1 -1
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Tenants/_update_tenant_settings/should_update_the_tenant_settings_with_a_new_tenant_name.yml +1 -1
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_add_user_roles/should_add_a_Role_to_a_User_successfully.yml +1 -1
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_patch_user/should_patch_the_User_successfully.yml +1 -1
- data/spec/lib/auth0/api/authentication_endpoints_spec.rb +632 -0
- data/spec/lib/auth0/api/v2/clients_spec.rb +51 -0
- data/spec/lib/auth0/api/v2/jobs_spec.rb +18 -0
- data/spec/lib/auth0/mixins/httpproxy_spec.rb +53 -17
- data/spec/lib/auth0/mixins/initializer_spec.rb +79 -25
- data/spec/lib/auth0/mixins/token_management_spec.rb +47 -37
- data/spec/spec_helper.rb +4 -1
- data/spec/support/dummy_class_for_tokens.rb +2 -0
- metadata +15 -35
@@ -67,6 +67,7 @@ describe Auth0::Api::V2::Jobs do
|
|
67
67
|
format: 'csv',
|
68
68
|
limit: 10
|
69
69
|
})
|
70
|
+
|
70
71
|
@instance.export_users(
|
71
72
|
fields: ['author'],
|
72
73
|
connection_id: 'test-connection',
|
@@ -74,6 +75,23 @@ describe Auth0::Api::V2::Jobs do
|
|
74
75
|
limit: 10
|
75
76
|
)
|
76
77
|
end
|
78
|
+
|
79
|
+
it 'sends post to /api/v2/jobs/users-exports with export_as field' do
|
80
|
+
expect(@instance).to receive(:post).with(
|
81
|
+
'/api/v2/jobs/users-exports', {
|
82
|
+
fields: [{ name: 'author', export_as: 'writer' }],
|
83
|
+
connection_id: 'test-connection',
|
84
|
+
format: 'csv',
|
85
|
+
limit: 10
|
86
|
+
})
|
87
|
+
|
88
|
+
@instance.export_users(
|
89
|
+
fields: [{ name: 'author', export_as: 'writer' }],
|
90
|
+
connection_id: 'test-connection',
|
91
|
+
format: 'csv',
|
92
|
+
limit: 10
|
93
|
+
)
|
94
|
+
end
|
77
95
|
end
|
78
96
|
|
79
97
|
context '.send_verification_email' do
|
@@ -494,12 +494,13 @@ describe Auth0::Mixins::HTTPProxy do
|
|
494
494
|
end
|
495
495
|
|
496
496
|
context "Renewing tokens" do
|
497
|
-
|
498
|
-
|
497
|
+
let(:httpproxy_instance) {
|
498
|
+
DummyClassForTokens.new(
|
499
499
|
client_id: 'test-client-id',
|
500
500
|
client_secret: 'test-client-secret',
|
501
|
-
domain: 'auth0.com'
|
502
|
-
|
501
|
+
domain: 'auth0.com',
|
502
|
+
)
|
503
|
+
}
|
503
504
|
|
504
505
|
%i(get delete).each do |http_method|
|
505
506
|
context "for #{http_method}" do
|
@@ -507,7 +508,7 @@ describe Auth0::Mixins::HTTPProxy do
|
|
507
508
|
expect(RestClient::Request).to receive(:execute).with(hash_including(
|
508
509
|
method: :post,
|
509
510
|
url: 'https://auth0.com/oauth/token',
|
510
|
-
)
|
511
|
+
)).and_return(StubResponse.new({
|
511
512
|
"access_token" => "access_token",
|
512
513
|
"expires_in" => 86400},
|
513
514
|
true,
|
@@ -515,11 +516,10 @@ describe Auth0::Mixins::HTTPProxy do
|
|
515
516
|
|
516
517
|
expect(RestClient::Request).to receive(:execute).with(hash_including(
|
517
518
|
method: http_method,
|
518
|
-
url: 'https://auth0.com/test'
|
519
|
-
headers: { params: {}, "Authorization" => "Bearer access_token" }
|
519
|
+
url: 'https://auth0.com/test'
|
520
520
|
)).and_return(StubResponse.new('Some random text here', true, 200))
|
521
521
|
|
522
|
-
expect {
|
522
|
+
expect { httpproxy_instance.send(http_method, '/test') }.not_to raise_error
|
523
523
|
end
|
524
524
|
end
|
525
525
|
end
|
@@ -539,24 +539,24 @@ describe Auth0::Mixins::HTTPProxy do
|
|
539
539
|
expect(RestClient::Request).to receive(:execute).with(hash_including(
|
540
540
|
method: http_method,
|
541
541
|
url: 'https://auth0.com/test',
|
542
|
-
headers:
|
542
|
+
headers: hash_including( "Authorization" => "Bearer access_token")
|
543
543
|
)).and_return(StubResponse.new('Some random text here', true, 200))
|
544
544
|
|
545
|
-
expect {
|
545
|
+
expect { httpproxy_instance.send(http_method, '/test') }.not_to raise_error
|
546
546
|
end
|
547
547
|
end
|
548
548
|
end
|
549
549
|
end
|
550
550
|
|
551
551
|
context "Using cached tokens" do
|
552
|
-
|
553
|
-
|
552
|
+
let(:httpproxy_instance) {
|
553
|
+
DummyClassForTokens.new(
|
554
554
|
client_id: 'test-client-id',
|
555
555
|
client_secret: 'test-client-secret',
|
556
556
|
domain: 'auth0.com',
|
557
557
|
token: 'access_token',
|
558
558
|
token_expires_at: Time.now.to_i + 86400)
|
559
|
-
|
559
|
+
}
|
560
560
|
|
561
561
|
%i(get delete).each do |http_method|
|
562
562
|
context "for #{http_method}" do
|
@@ -569,10 +569,10 @@ describe Auth0::Mixins::HTTPProxy do
|
|
569
569
|
expect(RestClient::Request).to receive(:execute).with(hash_including(
|
570
570
|
method: http_method,
|
571
571
|
url: 'https://auth0.com/test',
|
572
|
-
headers:
|
572
|
+
headers: hash_including(params: {}, "Authorization" => "Bearer access_token")
|
573
573
|
)).and_return(StubResponse.new('Some random text here', true, 200))
|
574
574
|
|
575
|
-
expect {
|
575
|
+
expect { httpproxy_instance.send(http_method, '/test') }.not_to raise_error
|
576
576
|
end
|
577
577
|
end
|
578
578
|
end
|
@@ -588,10 +588,46 @@ describe Auth0::Mixins::HTTPProxy do
|
|
588
588
|
expect(RestClient::Request).to receive(:execute).with(hash_including(
|
589
589
|
method: http_method,
|
590
590
|
url: 'https://auth0.com/test',
|
591
|
-
headers:
|
591
|
+
headers: hash_including("Authorization" => "Bearer access_token")
|
592
592
|
)).and_return(StubResponse.new('Some random text here', true, 200))
|
593
593
|
|
594
|
-
expect {
|
594
|
+
expect { httpproxy_instance.send(http_method, '/test') }.not_to raise_error
|
595
|
+
end
|
596
|
+
end
|
597
|
+
end
|
598
|
+
end
|
599
|
+
|
600
|
+
context 'Normal operation' do
|
601
|
+
let(:httpproxy_instance) {
|
602
|
+
DummyClassForTokens.new(
|
603
|
+
client_id: 'test-client-id',
|
604
|
+
client_secret: 'test-client-secret',
|
605
|
+
domain: 'auth0.com',
|
606
|
+
token: 'access_token',
|
607
|
+
token_expires_at: Time.now.to_i + 86400)
|
608
|
+
}
|
609
|
+
|
610
|
+
# This sets up a test matrix to verify that both :get and :delete calls (the only two HTTP methods in the proxy that mutated headers)
|
611
|
+
# don't bleed query params into subsequent calls to :post :patch and :put.
|
612
|
+
%i(get delete).each do |http_get_delete|
|
613
|
+
%i(post patch put).each do |http_ppp|
|
614
|
+
it "should not bleed :#{http_get_delete} headers/parameters to the subsequent :#{http_ppp} request" do
|
615
|
+
expect(RestClient::Request).to receive(:execute).with(hash_including(
|
616
|
+
method: http_get_delete,
|
617
|
+
url: "https://auth0.com/test-#{http_get_delete}",
|
618
|
+
headers: hash_including(params: { email: 'test@test.com' })
|
619
|
+
)).and_return(StubResponse.new('OK', true, 200))
|
620
|
+
|
621
|
+
# email: parameter that is sent in the GET request should not appear
|
622
|
+
# as a parameter in the `headers` hash for the subsequent PATCH request.
|
623
|
+
expect(RestClient::Request).to receive(:execute).with(hash_including(
|
624
|
+
method: http_ppp,
|
625
|
+
url: "https://auth0.com/test-#{http_ppp}",
|
626
|
+
headers: hash_not_including(:params)
|
627
|
+
)).and_return(StubResponse.new('OK', true, 200))
|
628
|
+
|
629
|
+
expect { httpproxy_instance.send(http_get_delete, "/test-#{http_get_delete}", { email: 'test@test.com' }) }.not_to raise_error
|
630
|
+
expect { httpproxy_instance.send(http_ppp, "/test-#{http_ppp}") }.not_to raise_error
|
595
631
|
end
|
596
632
|
end
|
597
633
|
end
|
@@ -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
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
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)
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
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)
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
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)
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
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
|
|
@@ -110,16 +125,11 @@ describe Auth0::Mixins::TokenManagement do
|
|
110
125
|
|
111
126
|
it 'does not renew existing token if no token_expires_at' do
|
112
127
|
params[:token] = 'test-token'
|
128
|
+
instance.instance_variable_set '@token_expires_at', nil
|
113
129
|
|
114
|
-
expect(RestClient::Request).not_to receive(:execute)
|
115
|
-
method: :post,
|
116
|
-
url: 'https://samples.auth0.com/oauth/token',
|
117
|
-
))
|
130
|
+
expect(RestClient::Request).not_to receive(:execute)
|
118
131
|
|
119
132
|
instance.send(:get_token)
|
120
|
-
|
121
|
-
expect(instance.instance_variable_get('@token')).to eq('test-token')
|
122
|
-
expect(instance.instance_variable_get('@token_expires_at')).to be_nil
|
123
133
|
end
|
124
134
|
end
|
125
135
|
end
|
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'
|
@@ -51,6 +50,10 @@ RSpec.configure do |config|
|
|
51
50
|
config.filter_run focus: true
|
52
51
|
config.run_all_when_everything_filtered = true
|
53
52
|
config.include Credentials
|
53
|
+
|
54
|
+
config.expect_with :rspec do |c|
|
55
|
+
c.max_formatted_output_length = 1000000
|
56
|
+
end
|
54
57
|
end
|
55
58
|
|
56
59
|
def wait(time, increment = 5, elapsed_time = 0, &block)
|
@@ -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.
|
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:
|
14
|
+
date: 2023-01-27 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: rest-client
|
@@ -33,14 +33,14 @@ dependencies:
|
|
33
33
|
requirements:
|
34
34
|
- - "~>"
|
35
35
|
- !ruby/object:Gem::Version
|
36
|
-
version: 2.
|
36
|
+
version: '2.5'
|
37
37
|
type: :runtime
|
38
38
|
prerelease: false
|
39
39
|
version_requirements: !ruby/object:Gem::Requirement
|
40
40
|
requirements:
|
41
41
|
- - "~>"
|
42
42
|
- !ruby/object:Gem::Version
|
43
|
-
version: 2.
|
43
|
+
version: '2.5'
|
44
44
|
- !ruby/object:Gem::Dependency
|
45
45
|
name: zache
|
46
46
|
requirement: !ruby/object:Gem::Requirement
|
@@ -139,48 +139,20 @@ 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
|
173
145
|
requirements:
|
174
146
|
- - "~>"
|
175
147
|
- !ruby/object:Gem::Version
|
176
|
-
version: '3.
|
148
|
+
version: '3.11'
|
177
149
|
type: :development
|
178
150
|
prerelease: false
|
179
151
|
version_requirements: !ruby/object:Gem::Requirement
|
180
152
|
requirements:
|
181
153
|
- - "~>"
|
182
154
|
- !ruby/object:Gem::Version
|
183
|
-
version: '3.
|
155
|
+
version: '3.11'
|
184
156
|
- !ruby/object:Gem::Dependency
|
185
157
|
name: rack-test
|
186
158
|
requirement: !ruby/object:Gem::Requirement
|
@@ -260,6 +232,8 @@ extra_rdoc_files: []
|
|
260
232
|
files:
|
261
233
|
- ".bundle/config"
|
262
234
|
- ".circleci/config.yml"
|
235
|
+
- ".devcontainer/Dockerfile"
|
236
|
+
- ".devcontainer/devcontainer.json"
|
263
237
|
- ".env.example"
|
264
238
|
- ".gemrelease"
|
265
239
|
- ".github/CODEOWNERS"
|
@@ -278,7 +252,9 @@ files:
|
|
278
252
|
- CHANGELOG.md
|
279
253
|
- CODE_OF_CONDUCT.md
|
280
254
|
- DEPLOYMENT.md
|
255
|
+
- DEVELOPMENT.md
|
281
256
|
- Dockerfile
|
257
|
+
- EXAMPLES.md
|
282
258
|
- Gemfile
|
283
259
|
- Gemfile.lock
|
284
260
|
- Guardfile
|
@@ -291,6 +267,7 @@ files:
|
|
291
267
|
- examples/ruby-api/.env.example
|
292
268
|
- examples/ruby-api/.gitignore
|
293
269
|
- examples/ruby-api/Gemfile
|
270
|
+
- examples/ruby-api/Gemfile.lock
|
294
271
|
- examples/ruby-api/README.md
|
295
272
|
- examples/ruby-api/config.ru
|
296
273
|
- examples/ruby-api/main.rb
|
@@ -386,6 +363,7 @@ files:
|
|
386
363
|
- lib/auth0/api/v2/users.rb
|
387
364
|
- lib/auth0/api/v2/users_by_email.rb
|
388
365
|
- lib/auth0/client.rb
|
366
|
+
- lib/auth0/client_assertion.rb
|
389
367
|
- lib/auth0/exception.rb
|
390
368
|
- lib/auth0/mixins.rb
|
391
369
|
- lib/auth0/mixins/access_token_struct.rb
|
@@ -398,6 +376,7 @@ files:
|
|
398
376
|
- lib/auth0/mixins/validation.rb
|
399
377
|
- lib/auth0/version.rb
|
400
378
|
- lib/auth0_client.rb
|
379
|
+
- opslevel.yml
|
401
380
|
- publish_rubygem.sh
|
402
381
|
- spec/fixtures/vcr_cassettes/Auth0_Api_AuthenticationEndpoints/_change_password/should_trigger_a_password_reset.yml
|
403
382
|
- spec/fixtures/vcr_cassettes/Auth0_Api_AuthenticationEndpoints/_login_with_resource_owner/should_fail_with_an_incorrect_email.yml
|
@@ -576,6 +555,7 @@ files:
|
|
576
555
|
- spec/integration/lib/auth0/api/v2/api_user_blocks_spec.rb
|
577
556
|
- spec/integration/lib/auth0/api/v2/api_users_spec.rb
|
578
557
|
- spec/integration/lib/auth0/auth0_client_spec.rb
|
558
|
+
- spec/lib/auth0/api/authentication_endpoints_spec.rb
|
579
559
|
- spec/lib/auth0/api/v2/actions_spec.rb
|
580
560
|
- spec/lib/auth0/api/v2/anomaly_spec.rb
|
581
561
|
- spec/lib/auth0/api/v2/attack_protection_spec.rb
|
@@ -634,7 +614,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
634
614
|
- !ruby/object:Gem::Version
|
635
615
|
version: '0'
|
636
616
|
requirements: []
|
637
|
-
rubygems_version: 3.3.
|
617
|
+
rubygems_version: 3.3.26
|
638
618
|
signing_key:
|
639
619
|
specification_version: 4
|
640
620
|
summary: Auth0 API Client
|