auth0 3.2.0 → 3.3.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
[![Build Status](https://travis-ci.org/auth0/ruby-auth0.svg?branch=master)](https://travis-ci.org/auth0/ruby-auth0)
|
4
|
+
[![Gem Version](https://badge.fury.io/rb/auth0.svg)](http://badge.fury.io/rb/auth0)
|
5
|
+
[![Coverage Status](https://coveralls.io/repos/auth0/ruby-auth0/badge.svg?branch=master)](https://coveralls.io/r/auth0/ruby-auth0?branch=master)
|
6
|
+
[![Dependency Status](https://gemnasium.com/auth0/ruby-auth0.svg)](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
|