auth0 3.2.0 → 3.3.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/.gemrelease +2 -0
- data/.gitignore +1 -0
- data/.rspec +2 -2
- data/.travis.yml +7 -1
- data/Gemfile +5 -0
- data/Guardfile +34 -0
- data/README.md +37 -6
- data/Rakefile +20 -5
- data/auth0.gemspec +12 -9
- data/lib/auth0/api/authentication_endpoints.rb +2 -2
- data/lib/auth0/api/v1/clients.rb +1 -1
- data/lib/auth0/api/v1/users.rb +1 -1
- data/lib/auth0/api/v2/clients.rb +2 -2
- data/lib/auth0/api/v2/users.rb +1 -1
- data/lib/auth0/exception.rb +5 -1
- data/lib/auth0/mixins/initializer.rb +34 -9
- data/lib/auth0/version.rb +1 -1
- data/spec/integration/lib/auth0/api/v1/api_clients_spec.rb +13 -0
- data/spec/integration/lib/auth0/api/v1/api_users_spec.rb +60 -0
- data/spec/integration/lib/auth0/api/v2/api_clients_spec.rb +17 -0
- data/spec/integration/lib/auth0/api/v2/api_users_spec.rb +71 -0
- data/spec/integration/lib/auth0/auth0_client_spec.rb +45 -0
- data/spec/lib/auth0/api/authentication_endpoints_spec.rb +6 -0
- data/spec/lib/auth0/api/v1/clients_spec.rb +1 -1
- data/spec/lib/auth0/api/v1/users_spec.rb +1 -1
- data/spec/lib/auth0/api/v2/users_spec.rb +1 -1
- data/spec/lib/auth0/client_spec.rb +106 -38
- data/spec/lib/auth0/mixins/initializer_spec.rb +2 -1
- data/spec/spec_helper.rb +2 -18
- data/spec/spec_helper_full.rb +33 -0
- data/spec/spec_helper_unit.rb +12 -0
- data/spec/support/credentials.rb +13 -0
- metadata +103 -45
- data/spec/lib/auth0_client_spec.rb +0 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bdf4ecb5c96f5e84e45fc413f782f157ac5ac50d
|
4
|
+
data.tar.gz: c3edbdcee08c40938fc43e97d836a779e3781b4d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f2931b8dfb4223dcb882351f995e51120378234642a59894fc271f441f886e68dfd41aaf4f653dd496b263a29fe6480e73210407f9a56997588776148676be08
|
7
|
+
data.tar.gz: eb8796cfb3d8ceb57da9bae51b9499220dfc3e7f54511b5d4a5c232306c13dffad697577a56683367493305e9986d910887da6d7c37f6c29b3bfe0c0e159d96d
|
data/.gemrelease
ADDED
data/.gitignore
CHANGED
data/.rspec
CHANGED
@@ -1,3 +1,3 @@
|
|
1
1
|
--color
|
2
|
-
--format
|
3
|
-
--
|
2
|
+
--format Fuubar
|
3
|
+
--color
|
data/.travis.yml
CHANGED
data/Gemfile
CHANGED
data/Guardfile
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
scope group: :unit_test
|
2
|
+
|
3
|
+
group :unit_test do
|
4
|
+
guard 'rspec', cmd: "bundle exec rspec -P \"spec/lib/auth0/**/*#{ENV['PATTERN']}*_spec.rb\" --drb --format Fuubar --color" do
|
5
|
+
# run every updated spec file
|
6
|
+
watch(%r{^spec/.+_spec\.rb$})
|
7
|
+
# run the lib specs when a file in lib/ changes
|
8
|
+
watch(%r{^lib/(.+)\.rb$}) { "spec" }
|
9
|
+
# run all test for helper changes
|
10
|
+
watch('spec/spec_helper.rb') { "spec" }
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
group :integration do
|
15
|
+
guard 'rspec', cmd: "MODE=full bundle exec rspec -P \"spec/integration/**/*#{ENV['PATTERN']}*_spec.rb\" --drb --format Fuubar --color" do
|
16
|
+
# run every updated spec file
|
17
|
+
watch(%r{^spec/.+_spec\.rb$})
|
18
|
+
# run the lib specs when a file in lib/ changes
|
19
|
+
watch(%r{^lib/(.+)\.rb$}) { "spec" }
|
20
|
+
# run all test for helper changes
|
21
|
+
watch('spec/spec_helper.rb') { "spec" }
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
group :full do
|
26
|
+
guard 'rspec', cmd: "MODE=full bundle exec rspec --drb --format Fuubar --color" do
|
27
|
+
# run every updated spec file
|
28
|
+
watch(%r{^spec/.+_spec\.rb$})
|
29
|
+
# run the lib specs when a file in lib/ changes
|
30
|
+
watch(%r{^lib/(.+)\.rb$}) { "spec" }
|
31
|
+
# run all test for helper changes
|
32
|
+
watch('spec/spec_helper.rb') { "spec" }
|
33
|
+
end
|
34
|
+
end
|
data/README.md
CHANGED
@@ -1,25 +1,36 @@
|
|
1
|
-
Ruby api client for [Auth0](https://auth0.com)
|
1
|
+
Ruby api client for [Auth0](https://auth0.com) platform
|
2
2
|
|
3
3
|
[](https://travis-ci.org/auth0/ruby-auth0)
|
4
|
+
[](http://badge.fury.io/rb/auth0)
|
5
|
+
[](https://coveralls.io/r/auth0/ruby-auth0?branch=master)
|
6
|
+
[](https://gemnasium.com/auth0/ruby-auth0)
|
4
7
|
|
5
8
|
## Installation
|
6
9
|
|
7
|
-
```
|
10
|
+
``` bash
|
8
11
|
$ gem install auth0
|
9
12
|
```
|
10
13
|
|
14
|
+
or with [Bundler](http://bundler.io)
|
15
|
+
|
16
|
+
```ruby
|
17
|
+
gem 'auth0'
|
18
|
+
```
|
19
|
+
|
11
20
|
## Basic usage
|
12
21
|
|
22
|
+
Using [APIv1](https://auth0.com/docs/api)
|
23
|
+
|
13
24
|
```ruby
|
14
25
|
require "auth0"
|
15
26
|
|
16
27
|
auth0 = Auth0Client.new(
|
17
28
|
:client_id => "YOUR CLIENT ID",
|
18
29
|
:client_secret => "YOUR CLIENT SECRET",
|
19
|
-
:
|
30
|
+
:domain => "<YOUR ACCOUNT>.auth0.com"
|
20
31
|
);
|
21
32
|
|
22
|
-
puts auth0.
|
33
|
+
puts auth0.get_users;
|
23
34
|
```
|
24
35
|
|
25
36
|
Using [APIv2](https://auth0.com/docs/apiv2)
|
@@ -30,17 +41,37 @@ require "auth0"
|
|
30
41
|
auth0 = Auth0Client.new(
|
31
42
|
:api_version => 2,
|
32
43
|
:token => "YOUR JWT HERE",
|
33
|
-
:
|
44
|
+
:domain => "<YOUR ACCOUNT>.auth0.com"
|
34
45
|
);
|
35
46
|
|
36
47
|
puts auth0.get_users;
|
37
48
|
```
|
38
49
|
|
39
50
|
|
51
|
+
## What is Auth0?
|
52
|
+
|
53
|
+
Auth0 helps you to:
|
54
|
+
|
55
|
+
* Add authentication with [multiple authentication sources](https://docs.auth0.com/identityproviders), either social like **Google, Facebook, Microsoft Account, LinkedIn, GitHub, Twitter, Box, Salesforce, amont others**, or enterprise identity systems like **Windows Azure AD, Google Apps, Active Directory, ADFS or any SAML Identity Provider**.
|
56
|
+
* Add authentication through more traditional **[username/password databases](https://docs.auth0.com/mysql-connection-tutorial)**.
|
57
|
+
* Add support for **[linking different user accounts](https://docs.auth0.com/link-accounts)** with the same user.
|
58
|
+
* Support for generating signed [Json Web Tokens](https://docs.auth0.com/jwt) to call your APIs and **flow the user identity** securely.
|
59
|
+
* Analytics of how, when and where users are logging in.
|
60
|
+
* Pull data from other sources and add it to the user profile, through [JavaScript rules](https://docs.auth0.com/rules).
|
61
|
+
|
62
|
+
## Create a free Auth0 Account
|
63
|
+
|
64
|
+
1. Go to [Auth0](https://auth0.com) and click Sign Up.
|
65
|
+
2. Use Google, GitHub or Microsoft Account to login.
|
66
|
+
|
40
67
|
## Issue Reporting
|
41
68
|
|
42
69
|
If you have found a bug or if you have a feature request, please report them at this repository issues section. Please do not report security vulnerabilities on the public GitHub issue tracker. The [Responsible Disclosure Program](https://auth0.com/whitehat) details the procedure for disclosing security issues.
|
43
70
|
|
71
|
+
## Author
|
72
|
+
|
73
|
+
[Auth0](auth0.com)
|
74
|
+
|
44
75
|
## License
|
45
76
|
|
46
|
-
MIT
|
77
|
+
This project is licensed under the MIT license. See the [LICENSE](LICENSE) file for more info.
|
data/Rakefile
CHANGED
@@ -1,9 +1,24 @@
|
|
1
1
|
#!/usr/bin/env rake
|
2
2
|
require "bundler/gem_tasks"
|
3
|
-
require 'rspec/core/rake_task'
|
4
3
|
|
5
|
-
|
6
|
-
|
4
|
+
begin
|
5
|
+
require 'rspec/core/rake_task'
|
7
6
|
|
8
|
-
desc
|
9
|
-
|
7
|
+
desc "Run Integration Tests"
|
8
|
+
RSpec::Core::RakeTask.new(:integration) do |t|
|
9
|
+
t.pattern = FileList["spec/integration/**/*#{ENV['PATTERN']}*_spec.rb"]
|
10
|
+
end
|
11
|
+
|
12
|
+
|
13
|
+
desc "Run Unit Tests"
|
14
|
+
RSpec::Core::RakeTask.new(:spec) do |t|
|
15
|
+
t.pattern = FileList["spec/lib/auth0/**/*#{ENV['PATTERN']}*_spec.rb"]
|
16
|
+
end
|
17
|
+
|
18
|
+
desc "Run All Suites"
|
19
|
+
RSpec::Core::RakeTask.new(:all)
|
20
|
+
|
21
|
+
task :default => :spec
|
22
|
+
rescue LoadError
|
23
|
+
#No RSpec
|
24
|
+
end
|
data/auth0.gemspec
CHANGED
@@ -20,14 +20,17 @@ Gem::Specification.new do |s|
|
|
20
20
|
|
21
21
|
s.add_runtime_dependency 'httparty', '~> 0.13'
|
22
22
|
|
23
|
-
s.add_development_dependency 'rake'
|
24
|
-
s.add_development_dependency '
|
25
|
-
s.add_development_dependency '
|
26
|
-
s.add_development_dependency '
|
27
|
-
s.add_development_dependency '
|
28
|
-
s.add_development_dependency '
|
29
|
-
s.add_development_dependency '
|
30
|
-
s.add_development_dependency '
|
31
|
-
s.add_development_dependency '
|
23
|
+
s.add_development_dependency 'rake', '~> 10.4'
|
24
|
+
s.add_development_dependency 'fuubar', '~> 2.0'
|
25
|
+
s.add_development_dependency 'guard-rspec', '~> 4.5'
|
26
|
+
s.add_development_dependency 'dotenv-rails', '~> 2.0'
|
27
|
+
s.add_development_dependency 'pry', '~> 0.10'
|
28
|
+
s.add_development_dependency 'pry-nav', '~> 0.2.4'
|
29
|
+
s.add_development_dependency 'rspec', '~> 3.1', '>= 3.1.0'
|
30
|
+
s.add_development_dependency 'rack-test', '~> 0.6'
|
31
|
+
s.add_development_dependency 'simplecov', '~> 0.9'
|
32
|
+
s.add_development_dependency 'faker', '~> 1.4'
|
33
|
+
s.add_development_dependency 'yard', '~> 0.8'
|
34
|
+
s.add_development_dependency 'gem-release', '~> 0.7'
|
32
35
|
s.license = 'MIT'
|
33
36
|
end
|
@@ -14,7 +14,7 @@ module Auth0
|
|
14
14
|
end
|
15
15
|
|
16
16
|
# {https://auth0.com/docs/auth-api#!#post--delegation}
|
17
|
-
def delegation(id_token, target, scope = "openid", api_type = "app")
|
17
|
+
def delegation(id_token, target, scope = "openid", api_type = "app", extra_parameters = {})
|
18
18
|
request_params = {
|
19
19
|
client_id: @client_id,
|
20
20
|
grant_type: "urn:ietf:params:oauth:grant-type:jwt-bearer",
|
@@ -22,7 +22,7 @@ module Auth0
|
|
22
22
|
target: target,
|
23
23
|
api_type: api_type,
|
24
24
|
scope: scope
|
25
|
-
}
|
25
|
+
}.merge(extra_parameters)
|
26
26
|
post("/delegation", request_params)
|
27
27
|
end
|
28
28
|
|
data/lib/auth0/api/v1/clients.rb
CHANGED
@@ -24,7 +24,7 @@ module Auth0
|
|
24
24
|
# @deprecated use {#patch_client}
|
25
25
|
# {https://auth0.com/docs/api#!#put--api-clients--client-id-}
|
26
26
|
def update_client(name, callbacks="", client_id=@client_id)
|
27
|
-
warn "This endpoint has been deprecated in favor of
|
27
|
+
warn "This endpoint has been deprecated in favor of PATCH."
|
28
28
|
path = "/api/clients/#{client_id}"
|
29
29
|
request_params = {
|
30
30
|
name: name,
|
data/lib/auth0/api/v1/users.rb
CHANGED
@@ -141,7 +141,7 @@ module Auth0
|
|
141
141
|
|
142
142
|
# {https://auth0.com/docs/api#!#delete--api-users--user_id-}
|
143
143
|
def delete_user(user_id)
|
144
|
-
raise Auth0::
|
144
|
+
raise Auth0::MissingUserId, "if you want to remove all users user delete_users method" if user_id.to_s.empty?
|
145
145
|
path = "/api/users/#{user_id}"
|
146
146
|
delete(path)
|
147
147
|
end
|
data/lib/auth0/api/v2/clients.rb
CHANGED
@@ -26,13 +26,13 @@ module Auth0
|
|
26
26
|
|
27
27
|
#https://auth0.com/docs/apiv2#!/clients/delete_clients_by_id
|
28
28
|
def delete_client(client_id)
|
29
|
-
path = "/api/v2/clients
|
29
|
+
path = "/api/v2/clients/#{client_id}"
|
30
30
|
delete(path)
|
31
31
|
end
|
32
32
|
|
33
33
|
#https://auth0.com/docs/apiv2#!/clients/patch_clients_by_id
|
34
34
|
def patch_client(client_id, options)
|
35
|
-
path = "/api/v2/clients
|
35
|
+
path = "/api/v2/clients/#{client_id}"
|
36
36
|
patch(path, options)
|
37
37
|
end
|
38
38
|
end
|
data/lib/auth0/api/v2/users.rb
CHANGED
@@ -44,7 +44,7 @@ module Auth0
|
|
44
44
|
|
45
45
|
#https://auth0.com/docs/apiv2#!/users/delete_users_by_id
|
46
46
|
def delete_user(user_id)
|
47
|
-
raise Auth0::
|
47
|
+
raise Auth0::MissingUserId, "Must supply a valid user_id" if user_id.nil? or user_id.to_s.empty?
|
48
48
|
path = "/api/v2/users/" + user_id.to_s
|
49
49
|
delete(path)
|
50
50
|
end
|
data/lib/auth0/exception.rb
CHANGED
@@ -15,8 +15,12 @@ class Auth0::ServerError < Auth0::Exception; end
|
|
15
15
|
# exception for incorrect request, you've sent wrong params
|
16
16
|
class Auth0::BadRequest < Auth0::Exception; end
|
17
17
|
# exception for unset user_id, this might cause removal of all users, or other unexpected bahaviour
|
18
|
-
class Auth0::
|
18
|
+
class Auth0::MissingUserId < Auth0::Exception; end
|
19
19
|
# Api v2 access denied
|
20
20
|
class Auth0::AccessDenied < Auth0::Exception; end
|
21
21
|
# Invalid parameter passed, e.g. empty where ID is required
|
22
22
|
class Auth0::InvalidParameter < Auth0::Exception; end
|
23
|
+
# Invalid Auth0 credentials either client_id/secret for API v1 or JWT for API v2/
|
24
|
+
class Auth0::InvalidCredentials < Auth0::Exception; end
|
25
|
+
# Invalid Auth0 API namespace
|
26
|
+
class Auth0::InvalidApiNamespace < Auth0::Exception; end
|
@@ -9,18 +9,15 @@ module Auth0
|
|
9
9
|
# To run using api v2, pass api_version: 2 when creating a client
|
10
10
|
def initialize(config)
|
11
11
|
options = Hash[config.map{|(k,v)| [k.to_sym,v]}]
|
12
|
-
|
12
|
+
domain = api_domain options
|
13
|
+
raise InvalidApiNamespace, "Api namespace must supply an API domain" if domain.nil?
|
14
|
+
self.class.base_uri "https://#{domain}"
|
13
15
|
self.class.headers "Content-Type" => 'application/json'
|
14
16
|
self.extend Auth0::Api::AuthenticationEndpoints
|
15
17
|
@client_id = options[:client_id]
|
16
|
-
if
|
17
|
-
|
18
|
-
|
19
|
-
else
|
20
|
-
self.extend Auth0::Api::V1
|
21
|
-
@client_secret = options[:client_secret]
|
22
|
-
@token = obtain_access_token
|
23
|
-
end
|
18
|
+
initialize_v2(options) if api_v2?(options)
|
19
|
+
initialize_v1(options) if api_v1?(options)
|
20
|
+
raise InvalidCredentials, "Must supply a valid API token" if @token.nil?
|
24
21
|
self.class.headers "Authorization" => "Bearer #{@token}"
|
25
22
|
end
|
26
23
|
|
@@ -29,6 +26,34 @@ module Auth0
|
|
29
26
|
klass.send :prepend, Initializer
|
30
27
|
end
|
31
28
|
|
29
|
+
private
|
30
|
+
|
31
|
+
def api_domain(options)
|
32
|
+
options[:domain] || options[:namespace]
|
33
|
+
end
|
34
|
+
|
35
|
+
def initialize_v2(options)
|
36
|
+
self.extend Auth0::Api::V2
|
37
|
+
@token = options[:access_token] || options[:token]
|
38
|
+
end
|
39
|
+
|
40
|
+
def initialize_v1(options)
|
41
|
+
self.extend Auth0::Api::V1
|
42
|
+
@client_secret = options[:client_secret]
|
43
|
+
raise InvalidCredentials, "Invalid API v1 client_id and client_secret" if @client_id.nil? or @client_secret.nil?
|
44
|
+
@token = obtain_access_token
|
45
|
+
end
|
46
|
+
|
47
|
+
def api_v2?(options)
|
48
|
+
options[:protocols].to_s.include?("v2") or options[:api_version] === 2
|
49
|
+
end
|
50
|
+
|
51
|
+
def api_v1?(options)
|
52
|
+
version = options[:api_version] || 1
|
53
|
+
protocol = options[:protocols].to_s
|
54
|
+
not protocol.include?("v2") and (protocol.include?("v1") or version === 1)
|
55
|
+
end
|
56
|
+
|
32
57
|
end
|
33
58
|
end
|
34
59
|
end
|
data/lib/auth0/version.rb
CHANGED
@@ -0,0 +1,13 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
describe Auth0::Api::V1::Clients do
|
3
|
+
|
4
|
+
let(:client) { Auth0Client.new(v1_creds) }
|
5
|
+
let(:global_client) { Auth0Client.new(v1_global_creds) }
|
6
|
+
|
7
|
+
it { expect(client.clients).to_not be_empty }
|
8
|
+
|
9
|
+
it { expect {client.create_client("client")}.to raise_error(Auth0::Unauthorized) }
|
10
|
+
|
11
|
+
it { expect(global_client.create_client("client")).to_not be_nil }
|
12
|
+
|
13
|
+
end
|
@@ -0,0 +1,60 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
describe Auth0::Api::V1::Users do
|
3
|
+
|
4
|
+
let(:client) { Auth0Client.new(v1_creds) }
|
5
|
+
let(:username) { Faker::Internet.user_name }
|
6
|
+
let(:email) { Faker::Internet.safe_email }
|
7
|
+
let(:password) { Faker::Internet.password }
|
8
|
+
let(:connection) { "Username-Password-Authentication" }
|
9
|
+
let!(:user) { client.create_user(email, password, connection, {
|
10
|
+
"username" => username,
|
11
|
+
"email_verified" => false,
|
12
|
+
})}
|
13
|
+
|
14
|
+
describe '.users' do
|
15
|
+
|
16
|
+
let(:users) { client.users() }
|
17
|
+
|
18
|
+
it { expect(users.size).to be > 0 }
|
19
|
+
it { expect(users.find {|user| user["email"] == email}).to_not be_nil }
|
20
|
+
|
21
|
+
context "#filters" do
|
22
|
+
it { expect(client.users("email: #{email}").size).to be 1 }
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
|
27
|
+
describe '.user' do
|
28
|
+
|
29
|
+
let(:subject) { client.user(user["user_id"]) }
|
30
|
+
|
31
|
+
it { should include("email" => email, "username" => username) }
|
32
|
+
|
33
|
+
end
|
34
|
+
|
35
|
+
describe '.create_user' do
|
36
|
+
|
37
|
+
let(:subject) { user }
|
38
|
+
|
39
|
+
it { should include("user_id", "identities") }
|
40
|
+
it { should include(
|
41
|
+
"username" => username,
|
42
|
+
"email" => email,
|
43
|
+
"email_verified" => false,
|
44
|
+
)}
|
45
|
+
|
46
|
+
end
|
47
|
+
|
48
|
+
describe '.delete_user' do
|
49
|
+
|
50
|
+
it { expect { client.delete_user user["user_id"] }.to_not raise_error }
|
51
|
+
|
52
|
+
it { expect { client.delete_user "" }.to raise_error(Auth0::MissingUserId) }
|
53
|
+
|
54
|
+
end
|
55
|
+
|
56
|
+
describe '.patch_user_metadata' do
|
57
|
+
it { expect(client.patch_user_metadata(user["user_id"], {"custom_field" => "custom_value"})).to eq "OK" }
|
58
|
+
end
|
59
|
+
|
60
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
describe Auth0::Api::V2::Clients do
|
3
|
+
|
4
|
+
let(:client) { Auth0Client.new(v2_creds) }
|
5
|
+
let(:existing_client) { client.create_client("existing") }
|
6
|
+
|
7
|
+
it { expect(client.clients).to_not be_empty }
|
8
|
+
|
9
|
+
it { expect(client.create_client("ClientV2", {custom_login_page_off: true})).to include("name" => "ClientV2", "custom_login_page_off" => true) }
|
10
|
+
|
11
|
+
it { expect(client.patch_client(existing_client["client_id"], {custom_login_page_off: true, sso: true})).to include("custom_login_page_off" => true, "sso" => true) }
|
12
|
+
|
13
|
+
it { expect { client.delete_client(existing_client["client_id"]) }.to_not raise_error }
|
14
|
+
|
15
|
+
it { expect(client.client(existing_client["client_id"])).to include("client_id" => existing_client["client_id"]) }
|
16
|
+
|
17
|
+
end
|
@@ -0,0 +1,71 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
describe Auth0::Api::V2::Users do
|
3
|
+
|
4
|
+
let(:client) { Auth0Client.new(v2_creds) }
|
5
|
+
let(:username) { Faker::Internet.user_name }
|
6
|
+
let(:email) { Faker::Internet.safe_email }
|
7
|
+
let(:password) { Faker::Internet.password }
|
8
|
+
let(:connection) { "Username-Password-Authentication" }
|
9
|
+
let!(:user) { client.create_user(username, {
|
10
|
+
"username" => username,
|
11
|
+
"email" => email,
|
12
|
+
"password" => password,
|
13
|
+
"email_verified" => false,
|
14
|
+
"connection" => connection,
|
15
|
+
"app_metadata" => {}
|
16
|
+
})}
|
17
|
+
|
18
|
+
describe '.users' do
|
19
|
+
|
20
|
+
let(:users) { client.users() }
|
21
|
+
|
22
|
+
it { expect(users.size).to be > 0 }
|
23
|
+
it { expect(users.find {|user| user["email"] == email}).to_not be_nil }
|
24
|
+
|
25
|
+
context "#filters" do
|
26
|
+
it { expect(client.users(per_page: 1).size).to be 1 }
|
27
|
+
it { expect(client.users(per_page: 1, fields: [:picture, :email, :user_id].join(',')).first).to include("email", "user_id", "picture") }
|
28
|
+
it { expect(client.users(per_page: 1, fields: [:picture, :email, :user_id].join(','), exclude_fields: true).first).to_not include("email", "user_id", "picture") }
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
32
|
+
|
33
|
+
describe '.user' do
|
34
|
+
|
35
|
+
let(:subject) { client.user(user["user_id"]) }
|
36
|
+
|
37
|
+
it { should include("email" => email, "name" => username) }
|
38
|
+
|
39
|
+
context "#filters" do
|
40
|
+
it { expect(client.user(user["user_id"], fields: [:picture, :email, :user_id].join(','))).to include("email", "user_id", "picture") }
|
41
|
+
it { expect(client.user(user["user_id"], fields: [:picture, :email, :user_id].join(','), exclude_fields: true)).to_not include("email", "user_id", "picture") }
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
45
|
+
|
46
|
+
describe '.create_user' do
|
47
|
+
|
48
|
+
let(:subject) { user }
|
49
|
+
|
50
|
+
it { should include("user_id", "identities") }
|
51
|
+
it { should include(
|
52
|
+
"username" => username,
|
53
|
+
"email" => email,
|
54
|
+
"email_verified" => false,
|
55
|
+
)}
|
56
|
+
|
57
|
+
end
|
58
|
+
|
59
|
+
describe '.delete_user' do
|
60
|
+
|
61
|
+
it { expect { client.delete_user user["user_id"] }.to_not raise_error }
|
62
|
+
|
63
|
+
it { expect { client.delete_user "" }.to raise_error(Auth0::MissingUserId) }
|
64
|
+
|
65
|
+
end
|
66
|
+
|
67
|
+
describe '.patch_user' do
|
68
|
+
it { expect(client.patch_user(user["user_id"], {"email_verified" => true})).to include("email_verified" => true) }
|
69
|
+
end
|
70
|
+
|
71
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
describe Auth0::Client do
|
3
|
+
|
4
|
+
shared_examples "invalid credentials" do |credentials, error|
|
5
|
+
it "raise an error with credentials #{credentials}" do
|
6
|
+
if error.nil?
|
7
|
+
expect { Auth0Client.new(credentials) }.to raise_error
|
8
|
+
else
|
9
|
+
expect { Auth0Client.new(credentials) }.to raise_error(error)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
it_should_behave_like "invalid credentials", {namespace: "samples.auth0.com"}, Auth0::InvalidCredentials
|
15
|
+
it_should_behave_like "invalid credentials", {namespace: "samples.auth0.com", client_id: "client_id"}, Auth0::InvalidCredentials
|
16
|
+
it_should_behave_like "invalid credentials", {namespace: "samples.auth0.com", client_secret: "secret"}, Auth0::InvalidCredentials
|
17
|
+
it_should_behave_like "invalid credentials", {namespace: "samples.auth0.com", api_version: 2}, Auth0::InvalidCredentials
|
18
|
+
it_should_behave_like "invalid credentials", {}
|
19
|
+
it_should_behave_like "invalid credentials", {api_version: 2}
|
20
|
+
it_should_behave_like "invalid credentials", {api_version: 1}
|
21
|
+
it_should_behave_like "invalid credentials", {client_id: "client_id", client_secret: "secret"}, Auth0::InvalidApiNamespace
|
22
|
+
it_should_behave_like "invalid credentials", {api_version: 2, token: "token"}, Auth0::InvalidApiNamespace
|
23
|
+
|
24
|
+
let(:valid_v1_credentials) { {client_id: ENV["CLIENT_ID"], client_secret: ENV["CLIENT_SECRET"], domain: ENV["DOMAIN"]} }
|
25
|
+
let(:token) { ENV["MASTER_JWT"] }
|
26
|
+
let(:v2_credentials) { {domain: ENV["DOMAIN"], api_version: 2} }
|
27
|
+
|
28
|
+
shared_examples "valid credentials" do
|
29
|
+
it { expect { Auth0Client.new(credentials) }.to_not raise_error }
|
30
|
+
end
|
31
|
+
|
32
|
+
it_should_behave_like "valid credentials" do
|
33
|
+
let(:credentials) { valid_v1_credentials }
|
34
|
+
end
|
35
|
+
it_should_behave_like "valid credentials" do
|
36
|
+
let(:credentials) { valid_v1_credentials.merge({api_version: 1}) }
|
37
|
+
end
|
38
|
+
it_should_behave_like "valid credentials" do
|
39
|
+
let(:credentials) { v2_credentials.merge({token: token})}
|
40
|
+
end
|
41
|
+
it_should_behave_like "valid credentials" do
|
42
|
+
let(:credentials) { v2_credentials.merge({access_token: ENV["MASTER_JWT"]}) }
|
43
|
+
end
|
44
|
+
|
45
|
+
end
|
@@ -28,6 +28,12 @@ describe Auth0::Api::AuthenticationEndpoints do
|
|
28
28
|
api_type: "salesforce_api"})
|
29
29
|
@instance.delegation("", "", "", "salesforce_api")
|
30
30
|
end
|
31
|
+
it "allows to pass extra parameters" do
|
32
|
+
expect(@instance).to receive(:post).with("/delegation",{:client_id=>nil, :grant_type=>"urn:ietf:params:oauth:grant-type:jwt-bearer",
|
33
|
+
:id_token=>"", :target=>"", :scope=>"", :api_type => "",
|
34
|
+
:community_name => 'test-community', community_url: 'test-url'})
|
35
|
+
@instance.delegation("", "", "", "", community_name: 'test-community', community_url: 'test-url')
|
36
|
+
end
|
31
37
|
end
|
32
38
|
|
33
39
|
context ".impersonate" do
|
@@ -44,7 +44,7 @@ describe Auth0::Api::V1::Clients do
|
|
44
44
|
end
|
45
45
|
|
46
46
|
it "is expected to make warn on deprecated endpoint" do
|
47
|
-
expect(@instance).to receive(:warn).with("This endpoint has been deprecated in favor of
|
47
|
+
expect(@instance).to receive(:warn).with("This endpoint has been deprecated in favor of PATCH.")
|
48
48
|
@instance.update_client("test")
|
49
49
|
end
|
50
50
|
end
|
@@ -195,7 +195,7 @@ describe Auth0::Api::V1::Users do
|
|
195
195
|
|
196
196
|
it "is expected not to call delete to /api/users if user_id is blank" do
|
197
197
|
expect(@instance).not_to receive(:delete)
|
198
|
-
expect{@instance.delete_user("")}.to raise_exception(Auth0::
|
198
|
+
expect{@instance.delete_user("")}.to raise_exception(Auth0::MissingUserId)
|
199
199
|
end
|
200
200
|
end
|
201
201
|
|
@@ -49,7 +49,7 @@ describe Auth0::Api::V2::Users do
|
|
49
49
|
|
50
50
|
it "is expected not to call delete to /api/v2/users if user_id is blank" do
|
51
51
|
expect(@instance).not_to receive(:delete)
|
52
|
-
expect{@instance.delete_user("")}.to raise_exception(Auth0::
|
52
|
+
expect{@instance.delete_user("")}.to raise_exception(Auth0::MissingUserId)
|
53
53
|
end
|
54
54
|
end
|
55
55
|
|
@@ -1,47 +1,115 @@
|
|
1
1
|
require "spec_helper"
|
2
|
+
|
2
3
|
describe Auth0::Client do
|
3
|
-
|
4
|
-
|
4
|
+
|
5
|
+
shared_examples_for "v1 API client" do
|
6
|
+
it { should be_a Auth0::Api::V1 }
|
7
|
+
it { should be_a Auth0::Api::V1::Users }
|
8
|
+
it { should be_a Auth0::Api::V1::Connections }
|
9
|
+
it { should be_a Auth0::Api::V1::Clients }
|
10
|
+
it { should be_a Auth0::Api::V1::Rules }
|
11
|
+
it { should be_a Auth0::Api::V1::Logs }
|
12
|
+
it { should_not be_a Auth0::Api::V2 }
|
13
|
+
it { should_not be_a Auth0::Api::V2::Clients }
|
14
|
+
it { should_not be_a Auth0::Api::V2::Users }
|
15
|
+
it { should_not be_a Auth0::Api::V2::Jobs }
|
16
|
+
it { should_not be_a Auth0::Api::V2::Stats }
|
17
|
+
it { should_not be_a Auth0::Api::V2::Blacklists }
|
18
|
+
end
|
19
|
+
|
20
|
+
shared_examples_for "v2 API client" do
|
21
|
+
it { should be_a Auth0::Api::V2 }
|
22
|
+
it { should be_a Auth0::Api::V2::Clients }
|
23
|
+
it { should be_a Auth0::Api::V2::Users }
|
24
|
+
it { should be_a Auth0::Api::V2::Stats }
|
25
|
+
it { should be_a Auth0::Api::V2::Jobs }
|
26
|
+
it { should be_a Auth0::Api::V2::Blacklists }
|
27
|
+
it { should_not be_a Auth0::Api::V1 }
|
28
|
+
it { should_not be_a Auth0::Api::V1::Users }
|
29
|
+
it { should_not be_a Auth0::Api::V1::Connections }
|
30
|
+
it { should_not be_a Auth0::Api::V1::Clients }
|
31
|
+
it { should_not be_a Auth0::Api::V1::Rules }
|
32
|
+
it { should_not be_a Auth0::Api::V1::Logs }
|
33
|
+
end
|
34
|
+
|
35
|
+
shared_examples_for "authentication API client" do
|
36
|
+
it { should be_a Auth0::Api::AuthenticationEndpoints }
|
37
|
+
end
|
38
|
+
|
39
|
+
let(:domain) { "samples.auth0.com" }
|
40
|
+
let(:client_id) { "client_id" }
|
41
|
+
let(:client_secret) { "client_secret" }
|
42
|
+
let(:jwt) { "Header.Payload.Signature" }
|
43
|
+
let(:access_token) { "token" }
|
44
|
+
|
45
|
+
describe "V1 client" do
|
46
|
+
|
5
47
|
before :each do
|
6
|
-
allow_any_instance_of(Auth0::Api::AuthenticationEndpoints).to receive(:obtain_access_token)
|
7
|
-
end
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
48
|
+
allow_any_instance_of(Auth0::Api::AuthenticationEndpoints).to receive(:obtain_access_token).and_return "token"
|
49
|
+
end
|
50
|
+
|
51
|
+
context "with namespace" do
|
52
|
+
|
53
|
+
let(:subject) { Auth0::Client.new(client_id: "client_id", client_secret: "client_secret", namespace: "samples.auth0.com") }
|
54
|
+
|
55
|
+
it_should_behave_like "v1 API client"
|
56
|
+
it_should_behave_like "authentication API client"
|
57
|
+
|
58
|
+
end
|
59
|
+
|
60
|
+
context "with domain" do
|
61
|
+
|
62
|
+
let(:subject) { Auth0::Client.new(client_id: "client_id", client_secret: "client_secret", domain: "samples.auth0.com") }
|
63
|
+
|
64
|
+
it_should_behave_like "v1 API client"
|
65
|
+
it_should_behave_like "authentication API client"
|
66
|
+
|
67
|
+
end
|
68
|
+
|
69
|
+
context "with version" do
|
70
|
+
|
71
|
+
let(:subject) { Auth0::Client.new(client_id: "client_id", client_secret: "client_secret", domain: "samples.auth0.com", api_version: 1) }
|
72
|
+
|
73
|
+
it_should_behave_like "v1 API client"
|
74
|
+
it_should_behave_like "authentication API client"
|
75
|
+
|
76
|
+
end
|
77
|
+
|
24
78
|
end
|
25
|
-
|
26
|
-
|
79
|
+
|
80
|
+
describe "V2 client" do
|
81
|
+
|
27
82
|
before :each do
|
28
83
|
expect_any_instance_of(Auth0::Api::AuthenticationEndpoints).not_to receive(:obtain_access_token)
|
29
84
|
end
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
85
|
+
|
86
|
+
context "with namespace" do
|
87
|
+
|
88
|
+
let(:subject) { Auth0::Client.new(protocols: "v2", access_token: "access_token", namespace: "samples.auth0.com") }
|
89
|
+
|
90
|
+
it_should_behave_like "v2 API client"
|
91
|
+
it_should_behave_like "authentication API client"
|
92
|
+
|
93
|
+
end
|
94
|
+
|
95
|
+
context "with domain" do
|
96
|
+
|
97
|
+
let(:subject) { Auth0::Client.new(protocols: "v2", access_token: "access_token", domain: "samples.auth0.com") }
|
98
|
+
|
99
|
+
it_should_behave_like "v2 API client"
|
100
|
+
it_should_behave_like "authentication API client"
|
101
|
+
|
102
|
+
end
|
103
|
+
|
104
|
+
context "with version" do
|
105
|
+
|
106
|
+
let(:subject) { Auth0::Client.new(api_version: 2, access_token: "access_token", domain: "samples.auth0.com") }
|
107
|
+
|
108
|
+
it_should_behave_like "v2 API client"
|
109
|
+
it_should_behave_like "authentication API client"
|
110
|
+
|
111
|
+
end
|
112
|
+
|
46
113
|
end
|
114
|
+
|
47
115
|
end
|
@@ -1,4 +1,5 @@
|
|
1
1
|
require "spec_helper"
|
2
|
+
|
2
3
|
class MockClass
|
3
4
|
attr_reader :token
|
4
5
|
include Auth0::Mixins::Initializer
|
@@ -6,7 +7,7 @@ class MockClass
|
|
6
7
|
end
|
7
8
|
|
8
9
|
describe Auth0::Mixins::Initializer do
|
9
|
-
let(:params) { {
|
10
|
+
let(:params) { { namespace: 'samples.auth0.com' } }
|
10
11
|
let(:instance) { DummyClassForProxy.include(described_class).new(params) }
|
11
12
|
context 'api v2' do
|
12
13
|
before do
|
data/spec/spec_helper.rb
CHANGED
@@ -1,18 +1,2 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
require 'simplecov'
|
4
|
-
SimpleCov.start do
|
5
|
-
add_filter "/spec/"
|
6
|
-
end
|
7
|
-
require 'rspec'
|
8
|
-
require 'rack/test'
|
9
|
-
require 'webmock/rspec'
|
10
|
-
require 'byebug'
|
11
|
-
require 'auth0'
|
12
|
-
Dir[("./lib/**/*.rb")].each { |f| require f }
|
13
|
-
Dir[("./spec/support/**/*.rb")].each { |f| require f }
|
14
|
-
RSpec.configure do |config|
|
15
|
-
config.include WebMock::API
|
16
|
-
config.include Rack::Test::Methods
|
17
|
-
# config.fail_fast = true
|
18
|
-
end
|
1
|
+
mode = ENV["MODE"] || "unit"
|
2
|
+
require_relative "spec_helper_#{mode}"
|
@@ -0,0 +1,33 @@
|
|
1
|
+
$:.unshift File.expand_path('..', __FILE__)
|
2
|
+
$:.unshift File.expand_path('../../lib', __FILE__)
|
3
|
+
|
4
|
+
require 'coveralls'
|
5
|
+
Coveralls.wear!
|
6
|
+
|
7
|
+
require 'simplecov'
|
8
|
+
SimpleCov.start do
|
9
|
+
add_filter "/spec/"
|
10
|
+
add_filter "/spec/integration"
|
11
|
+
end
|
12
|
+
|
13
|
+
require 'rspec'
|
14
|
+
require 'rack/test'
|
15
|
+
require 'faker'
|
16
|
+
require 'auth0'
|
17
|
+
require 'pry'
|
18
|
+
|
19
|
+
Dir[("./lib/**/*.rb")].each { |f| require f }
|
20
|
+
Dir[("./spec/support/**/*.rb")].each { |f| require f }
|
21
|
+
|
22
|
+
RSpec.configure do |config|
|
23
|
+
config.include Rack::Test::Methods
|
24
|
+
config.include Credentials
|
25
|
+
config.after(:suite) do
|
26
|
+
v2_client = Auth0Client.new({token: ENV["MASTER_JWT"], api_version: 2, domain: ENV["DOMAIN"]})
|
27
|
+
v2_client
|
28
|
+
.clients
|
29
|
+
.select { |client| client["name"] != "DefaultApp" and not client["global"] }
|
30
|
+
.each { |client| v2_client.delete_client(client["client_id"]) }
|
31
|
+
v2_client.delete_users
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
$:.unshift File.expand_path('..', __FILE__)
|
2
|
+
$:.unshift File.expand_path('../../lib', __FILE__)
|
3
|
+
require 'rspec'
|
4
|
+
require 'rack/test'
|
5
|
+
require 'faker'
|
6
|
+
require 'auth0'
|
7
|
+
Dir[("./lib/**/*.rb")].each { |f| require f }
|
8
|
+
Dir[("./spec/support/**/*.rb")].each { |f| require f }
|
9
|
+
RSpec.configure do |config|
|
10
|
+
config.include Rack::Test::Methods
|
11
|
+
config.fail_fast = true
|
12
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module Credentials
|
2
|
+
def v1_creds
|
3
|
+
{client_id: ENV["CLIENT_ID"], client_secret: ENV["CLIENT_SECRET"], domain: ENV["DOMAIN"]}
|
4
|
+
end
|
5
|
+
|
6
|
+
def v1_global_creds
|
7
|
+
{client_id: ENV["GLOBAL_CLIENT_ID"], client_secret: ENV["GLOBAL_CLIENT_SECRET"], domain: ENV["DOMAIN"]}
|
8
|
+
end
|
9
|
+
|
10
|
+
def v2_creds
|
11
|
+
{token: ENV["MASTER_JWT"], api_version: 2, domain: ENV["DOMAIN"]}
|
12
|
+
end
|
13
|
+
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: 3.
|
4
|
+
version: 3.3.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: 2015-04-
|
14
|
+
date: 2015-04-15 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: httparty
|
@@ -31,134 +31,176 @@ dependencies:
|
|
31
31
|
name: rake
|
32
32
|
requirement: !ruby/object:Gem::Requirement
|
33
33
|
requirements:
|
34
|
-
- - "
|
34
|
+
- - "~>"
|
35
35
|
- !ruby/object:Gem::Version
|
36
|
-
version: '
|
36
|
+
version: '10.4'
|
37
37
|
type: :development
|
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: '
|
43
|
+
version: '10.4'
|
44
44
|
- !ruby/object:Gem::Dependency
|
45
|
-
name:
|
45
|
+
name: fuubar
|
46
46
|
requirement: !ruby/object:Gem::Requirement
|
47
47
|
requirements:
|
48
48
|
- - "~>"
|
49
49
|
- !ruby/object:Gem::Version
|
50
|
-
version:
|
51
|
-
|
50
|
+
version: '2.0'
|
51
|
+
type: :development
|
52
|
+
prerelease: false
|
53
|
+
version_requirements: !ruby/object:Gem::Requirement
|
54
|
+
requirements:
|
55
|
+
- - "~>"
|
52
56
|
- !ruby/object:Gem::Version
|
53
|
-
version:
|
57
|
+
version: '2.0'
|
58
|
+
- !ruby/object:Gem::Dependency
|
59
|
+
name: guard-rspec
|
60
|
+
requirement: !ruby/object:Gem::Requirement
|
61
|
+
requirements:
|
62
|
+
- - "~>"
|
63
|
+
- !ruby/object:Gem::Version
|
64
|
+
version: '4.5'
|
54
65
|
type: :development
|
55
66
|
prerelease: false
|
56
67
|
version_requirements: !ruby/object:Gem::Requirement
|
57
68
|
requirements:
|
58
69
|
- - "~>"
|
59
70
|
- !ruby/object:Gem::Version
|
60
|
-
version:
|
61
|
-
|
71
|
+
version: '4.5'
|
72
|
+
- !ruby/object:Gem::Dependency
|
73
|
+
name: dotenv-rails
|
74
|
+
requirement: !ruby/object:Gem::Requirement
|
75
|
+
requirements:
|
76
|
+
- - "~>"
|
62
77
|
- !ruby/object:Gem::Version
|
63
|
-
version:
|
78
|
+
version: '2.0'
|
79
|
+
type: :development
|
80
|
+
prerelease: false
|
81
|
+
version_requirements: !ruby/object:Gem::Requirement
|
82
|
+
requirements:
|
83
|
+
- - "~>"
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: '2.0'
|
64
86
|
- !ruby/object:Gem::Dependency
|
65
|
-
name:
|
87
|
+
name: pry
|
66
88
|
requirement: !ruby/object:Gem::Requirement
|
67
89
|
requirements:
|
68
|
-
- - "
|
90
|
+
- - "~>"
|
69
91
|
- !ruby/object:Gem::Version
|
70
|
-
version: '0'
|
92
|
+
version: '0.10'
|
71
93
|
type: :development
|
72
94
|
prerelease: false
|
73
95
|
version_requirements: !ruby/object:Gem::Requirement
|
74
96
|
requirements:
|
75
|
-
- - "
|
97
|
+
- - "~>"
|
76
98
|
- !ruby/object:Gem::Version
|
77
|
-
version: '0'
|
99
|
+
version: '0.10'
|
78
100
|
- !ruby/object:Gem::Dependency
|
79
|
-
name:
|
101
|
+
name: pry-nav
|
80
102
|
requirement: !ruby/object:Gem::Requirement
|
81
103
|
requirements:
|
82
|
-
- - "
|
104
|
+
- - "~>"
|
83
105
|
- !ruby/object:Gem::Version
|
84
|
-
version:
|
106
|
+
version: 0.2.4
|
85
107
|
type: :development
|
86
108
|
prerelease: false
|
87
109
|
version_requirements: !ruby/object:Gem::Requirement
|
88
110
|
requirements:
|
89
|
-
- - "
|
111
|
+
- - "~>"
|
90
112
|
- !ruby/object:Gem::Version
|
91
|
-
version:
|
113
|
+
version: 0.2.4
|
92
114
|
- !ruby/object:Gem::Dependency
|
93
|
-
name:
|
115
|
+
name: rspec
|
94
116
|
requirement: !ruby/object:Gem::Requirement
|
95
117
|
requirements:
|
118
|
+
- - "~>"
|
119
|
+
- !ruby/object:Gem::Version
|
120
|
+
version: '3.1'
|
96
121
|
- - ">="
|
97
122
|
- !ruby/object:Gem::Version
|
98
|
-
version:
|
123
|
+
version: 3.1.0
|
99
124
|
type: :development
|
100
125
|
prerelease: false
|
101
126
|
version_requirements: !ruby/object:Gem::Requirement
|
102
127
|
requirements:
|
128
|
+
- - "~>"
|
129
|
+
- !ruby/object:Gem::Version
|
130
|
+
version: '3.1'
|
103
131
|
- - ">="
|
104
132
|
- !ruby/object:Gem::Version
|
105
|
-
version:
|
133
|
+
version: 3.1.0
|
106
134
|
- !ruby/object:Gem::Dependency
|
107
|
-
name:
|
135
|
+
name: rack-test
|
108
136
|
requirement: !ruby/object:Gem::Requirement
|
109
137
|
requirements:
|
110
|
-
- - "
|
138
|
+
- - "~>"
|
111
139
|
- !ruby/object:Gem::Version
|
112
|
-
version: '0'
|
140
|
+
version: '0.6'
|
113
141
|
type: :development
|
114
142
|
prerelease: false
|
115
143
|
version_requirements: !ruby/object:Gem::Requirement
|
116
144
|
requirements:
|
117
|
-
- - "
|
145
|
+
- - "~>"
|
146
|
+
- !ruby/object:Gem::Version
|
147
|
+
version: '0.6'
|
148
|
+
- !ruby/object:Gem::Dependency
|
149
|
+
name: simplecov
|
150
|
+
requirement: !ruby/object:Gem::Requirement
|
151
|
+
requirements:
|
152
|
+
- - "~>"
|
153
|
+
- !ruby/object:Gem::Version
|
154
|
+
version: '0.9'
|
155
|
+
type: :development
|
156
|
+
prerelease: false
|
157
|
+
version_requirements: !ruby/object:Gem::Requirement
|
158
|
+
requirements:
|
159
|
+
- - "~>"
|
118
160
|
- !ruby/object:Gem::Version
|
119
|
-
version: '0'
|
161
|
+
version: '0.9'
|
120
162
|
- !ruby/object:Gem::Dependency
|
121
163
|
name: faker
|
122
164
|
requirement: !ruby/object:Gem::Requirement
|
123
165
|
requirements:
|
124
|
-
- - "
|
166
|
+
- - "~>"
|
125
167
|
- !ruby/object:Gem::Version
|
126
|
-
version: '
|
168
|
+
version: '1.4'
|
127
169
|
type: :development
|
128
170
|
prerelease: false
|
129
171
|
version_requirements: !ruby/object:Gem::Requirement
|
130
172
|
requirements:
|
131
|
-
- - "
|
173
|
+
- - "~>"
|
132
174
|
- !ruby/object:Gem::Version
|
133
|
-
version: '
|
175
|
+
version: '1.4'
|
134
176
|
- !ruby/object:Gem::Dependency
|
135
177
|
name: yard
|
136
178
|
requirement: !ruby/object:Gem::Requirement
|
137
179
|
requirements:
|
138
|
-
- - "
|
180
|
+
- - "~>"
|
139
181
|
- !ruby/object:Gem::Version
|
140
|
-
version: '0'
|
182
|
+
version: '0.8'
|
141
183
|
type: :development
|
142
184
|
prerelease: false
|
143
185
|
version_requirements: !ruby/object:Gem::Requirement
|
144
186
|
requirements:
|
145
|
-
- - "
|
187
|
+
- - "~>"
|
146
188
|
- !ruby/object:Gem::Version
|
147
|
-
version: '0'
|
189
|
+
version: '0.8'
|
148
190
|
- !ruby/object:Gem::Dependency
|
149
191
|
name: gem-release
|
150
192
|
requirement: !ruby/object:Gem::Requirement
|
151
193
|
requirements:
|
152
|
-
- - "
|
194
|
+
- - "~>"
|
153
195
|
- !ruby/object:Gem::Version
|
154
|
-
version: '0'
|
196
|
+
version: '0.7'
|
155
197
|
type: :development
|
156
198
|
prerelease: false
|
157
199
|
version_requirements: !ruby/object:Gem::Requirement
|
158
200
|
requirements:
|
159
|
-
- - "
|
201
|
+
- - "~>"
|
160
202
|
- !ruby/object:Gem::Version
|
161
|
-
version: '0'
|
203
|
+
version: '0.7'
|
162
204
|
description: Ruby client library for the Auth0 API.
|
163
205
|
email:
|
164
206
|
- support@auth0.com
|
@@ -167,10 +209,12 @@ extensions: []
|
|
167
209
|
extra_rdoc_files: []
|
168
210
|
files:
|
169
211
|
- ".bundle/config"
|
212
|
+
- ".gemrelease"
|
170
213
|
- ".gitignore"
|
171
214
|
- ".rspec"
|
172
215
|
- ".travis.yml"
|
173
216
|
- Gemfile
|
217
|
+
- Guardfile
|
174
218
|
- LICENSE
|
175
219
|
- README.md
|
176
220
|
- Rakefile
|
@@ -196,6 +240,11 @@ files:
|
|
196
240
|
- lib/auth0/mixins/initializer.rb
|
197
241
|
- lib/auth0/version.rb
|
198
242
|
- lib/auth0_client.rb
|
243
|
+
- spec/integration/lib/auth0/api/v1/api_clients_spec.rb
|
244
|
+
- spec/integration/lib/auth0/api/v1/api_users_spec.rb
|
245
|
+
- spec/integration/lib/auth0/api/v2/api_clients_spec.rb
|
246
|
+
- spec/integration/lib/auth0/api/v2/api_users_spec.rb
|
247
|
+
- spec/integration/lib/auth0/auth0_client_spec.rb
|
199
248
|
- spec/lib/auth0/api/authentication_endpoints_spec.rb
|
200
249
|
- spec/lib/auth0/api/v1/clients_spec.rb
|
201
250
|
- spec/lib/auth0/api/v1/connections_spec.rb
|
@@ -210,8 +259,10 @@ files:
|
|
210
259
|
- spec/lib/auth0/client_spec.rb
|
211
260
|
- spec/lib/auth0/mixins/httparty_proxy_spec.rb
|
212
261
|
- spec/lib/auth0/mixins/initializer_spec.rb
|
213
|
-
- spec/lib/auth0_client_spec.rb
|
214
262
|
- spec/spec_helper.rb
|
263
|
+
- spec/spec_helper_full.rb
|
264
|
+
- spec/spec_helper_unit.rb
|
265
|
+
- spec/support/credentials.rb
|
215
266
|
- spec/support/dummy_class.rb
|
216
267
|
- spec/support/dummy_class_for_proxy.rb
|
217
268
|
- spec/support/stub_response.rb
|
@@ -240,6 +291,11 @@ signing_key:
|
|
240
291
|
specification_version: 4
|
241
292
|
summary: Auth0 API Client
|
242
293
|
test_files:
|
294
|
+
- spec/integration/lib/auth0/api/v1/api_clients_spec.rb
|
295
|
+
- spec/integration/lib/auth0/api/v1/api_users_spec.rb
|
296
|
+
- spec/integration/lib/auth0/api/v2/api_clients_spec.rb
|
297
|
+
- spec/integration/lib/auth0/api/v2/api_users_spec.rb
|
298
|
+
- spec/integration/lib/auth0/auth0_client_spec.rb
|
243
299
|
- spec/lib/auth0/api/authentication_endpoints_spec.rb
|
244
300
|
- spec/lib/auth0/api/v1/clients_spec.rb
|
245
301
|
- spec/lib/auth0/api/v1/connections_spec.rb
|
@@ -254,8 +310,10 @@ test_files:
|
|
254
310
|
- spec/lib/auth0/client_spec.rb
|
255
311
|
- spec/lib/auth0/mixins/httparty_proxy_spec.rb
|
256
312
|
- spec/lib/auth0/mixins/initializer_spec.rb
|
257
|
-
- spec/lib/auth0_client_spec.rb
|
258
313
|
- spec/spec_helper.rb
|
314
|
+
- spec/spec_helper_full.rb
|
315
|
+
- spec/spec_helper_unit.rb
|
316
|
+
- spec/support/credentials.rb
|
259
317
|
- spec/support/dummy_class.rb
|
260
318
|
- spec/support/dummy_class_for_proxy.rb
|
261
319
|
- spec/support/stub_response.rb
|