cf-uaac 1.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.
- data/.gitignore +8 -0
- data/Gemfile +16 -0
- data/README.md +48 -0
- data/Rakefile +50 -0
- data/bin/completion-helper +80 -0
- data/bin/uaac +5 -0
- data/bin/uaac-completion.sh +34 -0
- data/bin/uaas +7 -0
- data/cf-uaac.gemspec +48 -0
- data/lib/cli.rb +15 -0
- data/lib/cli/base.rb +277 -0
- data/lib/cli/client_reg.rb +103 -0
- data/lib/cli/common.rb +187 -0
- data/lib/cli/config.rb +163 -0
- data/lib/cli/favicon.ico +0 -0
- data/lib/cli/group.rb +85 -0
- data/lib/cli/info.rb +54 -0
- data/lib/cli/runner.rb +52 -0
- data/lib/cli/token.rb +217 -0
- data/lib/cli/user.rb +108 -0
- data/lib/cli/version.rb +18 -0
- data/lib/stub/scim.rb +387 -0
- data/lib/stub/server.rb +310 -0
- data/lib/stub/uaa.rb +485 -0
- data/spec/client_reg_spec.rb +104 -0
- data/spec/common_spec.rb +89 -0
- data/spec/group_spec.rb +93 -0
- data/spec/http_spec.rb +165 -0
- data/spec/info_spec.rb +74 -0
- data/spec/spec_helper.rb +87 -0
- data/spec/token_spec.rb +119 -0
- data/spec/user_spec.rb +61 -0
- metadata +292 -0
data/spec/info_spec.rb
ADDED
@@ -0,0 +1,74 @@
|
|
1
|
+
#--
|
2
|
+
# Cloud Foundry 2012.02.03 Beta
|
3
|
+
# Copyright (c) [2009-2012] VMware, Inc. All Rights Reserved.
|
4
|
+
#
|
5
|
+
# This product is licensed to you under the Apache License, Version 2.0 (the "License").
|
6
|
+
# You may not use this product except in compliance with the License.
|
7
|
+
#
|
8
|
+
# This product includes a number of subcomponents with
|
9
|
+
# separate copyright notices and license terms. Your use of these
|
10
|
+
# subcomponents is subject to the terms and conditions of the
|
11
|
+
# subcomponent's license, as noted in the LICENSE file.
|
12
|
+
#++
|
13
|
+
|
14
|
+
require 'spec_helper'
|
15
|
+
require 'cli'
|
16
|
+
require 'stub/uaa'
|
17
|
+
|
18
|
+
module CF::UAA
|
19
|
+
|
20
|
+
describe InfoCli do
|
21
|
+
|
22
|
+
include SpecHelper
|
23
|
+
|
24
|
+
before :all do
|
25
|
+
#Util.default_logger(:trace)
|
26
|
+
Cli.configure("", nil, StringIO.new, true)
|
27
|
+
if ENV["UAA_CLIENT_TARGET"]
|
28
|
+
@target, @stub_uaa = ENV["UAA_CLIENT_TARGET"], nil
|
29
|
+
@varz_secret = ENV['UAA_VARZ_SECRET']
|
30
|
+
else
|
31
|
+
@stub_uaa = StubUAA.new.run_on_thread
|
32
|
+
@target, @varz_secret = @stub_uaa.url, "varzsecret"
|
33
|
+
end
|
34
|
+
Cli.run("target #{@target}").should be
|
35
|
+
Cli.output.string.should include URI.parse(@target).host
|
36
|
+
end
|
37
|
+
|
38
|
+
after :all do @stub_uaa.stop if @stub_uaa end
|
39
|
+
|
40
|
+
it "gets server info" do
|
41
|
+
Cli.run("info").should be
|
42
|
+
Cli.output.string.should match /\d.\d.\d/
|
43
|
+
Cli.output.string.should include "prompts", "commit_id"
|
44
|
+
end
|
45
|
+
|
46
|
+
it "gets prompts" do
|
47
|
+
Cli.run("prompts").should be
|
48
|
+
Cli.output.string.should include "username", "password"
|
49
|
+
end
|
50
|
+
|
51
|
+
it "checks password strength" do
|
52
|
+
Cli.run("password strength PaSsW0rd").should be
|
53
|
+
Cli.output.string.should include "score", "requiredScore"
|
54
|
+
end
|
55
|
+
|
56
|
+
it "gets the server stats" do
|
57
|
+
pending "no UAA_VARZ_SECRET environment variable set" unless @varz_secret
|
58
|
+
Cli.run("stats -c varz -s #{@varz_secret}").should be
|
59
|
+
Cli.output.string.should include 'type: UAA', 'mem:', 'version:'
|
60
|
+
end
|
61
|
+
|
62
|
+
it "sets multiple targets to be fully qualified in config and targets output" do
|
63
|
+
Config.load("")
|
64
|
+
Cli.run("target example.com --force")
|
65
|
+
Cli.run("target example2.com --force")
|
66
|
+
uri = URI.parse(@target)
|
67
|
+
Cli.run("target #{uri.host}:#{uri.port}#{uri.path}")
|
68
|
+
Cli.run("targets").should be
|
69
|
+
Config.yaml.should include "https://example.com", "https://example2.com", @target
|
70
|
+
Cli.output.string.should include "https://example.com", "https://example2.com", @target
|
71
|
+
end
|
72
|
+
|
73
|
+
end
|
74
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,87 @@
|
|
1
|
+
#--
|
2
|
+
# Cloud Foundry 2012.02.03 Beta
|
3
|
+
# Copyright (c) [2009-2012] VMware, Inc. All Rights Reserved.
|
4
|
+
#
|
5
|
+
# This product is licensed to you under the Apache License, Version 2.0 (the "License").
|
6
|
+
# You may not use this product except in compliance with the License.
|
7
|
+
#
|
8
|
+
# This product includes a number of subcomponents with
|
9
|
+
# separate copyright notices and license terms. Your use of these
|
10
|
+
# subcomponents is subject to the terms and conditions of the
|
11
|
+
# subcomponent's license, as noted in the LICENSE file.
|
12
|
+
#++
|
13
|
+
|
14
|
+
if ENV['COVERAGE']
|
15
|
+
require "simplecov"
|
16
|
+
if ENV['COVERAGE'] =~ /rcov/
|
17
|
+
require "simplecov-rcov"
|
18
|
+
SimpleCov.formatter = SimpleCov::Formatter::RcovFormatter
|
19
|
+
end
|
20
|
+
SimpleCov.add_filter "^#{File.dirname(__FILE__)}" if ENV['COVERAGE'] =~ /exclude-spec/
|
21
|
+
SimpleCov.add_filter "^#{File.expand_path(File.join(__FILE__, "..", "..", "vendor"))}" if ENV['COVERAGE'] =~ /exclude-vendor/
|
22
|
+
SimpleCov.start
|
23
|
+
end
|
24
|
+
|
25
|
+
require 'rspec'
|
26
|
+
require 'eventmachine'
|
27
|
+
require 'stub/uaa'
|
28
|
+
|
29
|
+
module CF::UAA
|
30
|
+
|
31
|
+
module SpecHelper
|
32
|
+
|
33
|
+
def capture_exception
|
34
|
+
yield
|
35
|
+
rescue Exception => e
|
36
|
+
e
|
37
|
+
end
|
38
|
+
|
39
|
+
# Runs given block on a thread or fiber and returns result.
|
40
|
+
# If eventmachine is running on another thread, the fiber
|
41
|
+
# must be on the same thread, hence EM.schedule and the
|
42
|
+
# restriction that the given block cannot include rspec matchers.
|
43
|
+
def frequest(on_fiber, &blk)
|
44
|
+
return capture_exception(&blk) unless on_fiber
|
45
|
+
result = nil
|
46
|
+
cthred = Thread.current
|
47
|
+
EM.schedule { Fiber.new { result = capture_exception(&blk); cthred.run }.resume }
|
48
|
+
Thread.stop
|
49
|
+
result
|
50
|
+
end
|
51
|
+
|
52
|
+
def setup_target(opts = {})
|
53
|
+
opts = { authorities: "clients.read,scim.read,scim.write,uaa.resource",
|
54
|
+
grant_types: "client_credentials,password",
|
55
|
+
scope: "openid,password.write"}.update(opts)
|
56
|
+
@admin_client = ENV["UAA_CLIENT_ID"] || "admin"
|
57
|
+
@admin_secret = ENV["UAA_CLIENT_SECRET"] || "adminsecret"
|
58
|
+
if ENV["UAA_CLIENT_TARGET"]
|
59
|
+
@target, @stub_uaa = ENV["UAA_CLIENT_TARGET"], nil
|
60
|
+
else
|
61
|
+
@stub_uaa = StubUAA.new(@admin_client, @admin_secret).run_on_thread
|
62
|
+
@target = @stub_uaa.url
|
63
|
+
end
|
64
|
+
Cli.run("target #{@target}").should be
|
65
|
+
Cli.run("token client get #{@admin_client} -s #{@admin_secret}")
|
66
|
+
Config.yaml.should include("access_token")
|
67
|
+
test_client = "test_client_#{Time.now.to_i}"
|
68
|
+
@test_secret = "+=tEsTsEcRet~!@"
|
69
|
+
Cli.run("client add #{test_client} -s #{@test_secret} " +
|
70
|
+
"--authorities #{opts[:authorities]} --scope #{opts[:scope]} " +
|
71
|
+
"--authorized_grant_types #{opts[:grant_types]}").should be
|
72
|
+
opts.each { |k, a| Util.arglist(a).each {|v| Cli.output.string.should include(v) }}
|
73
|
+
@test_client = test_client
|
74
|
+
end
|
75
|
+
|
76
|
+
def cleanup_target
|
77
|
+
Cli.run("context #{@admin_client}")
|
78
|
+
if @test_client && !@test_client.empty?
|
79
|
+
Cli.run("client delete #{@test_client}").should be
|
80
|
+
Cli.output.string.should include("deleted")
|
81
|
+
end
|
82
|
+
@stub_uaa.stop if @stub_uaa
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
end
|
87
|
+
|
data/spec/token_spec.rb
ADDED
@@ -0,0 +1,119 @@
|
|
1
|
+
#--
|
2
|
+
# Cloud Foundry 2012.02.03 Beta
|
3
|
+
# Copyright (c) [2009-2012] VMware, Inc. All Rights Reserved.
|
4
|
+
#
|
5
|
+
# This product is licensed to you under the Apache License, Version 2.0 (the "License").
|
6
|
+
# You may not use this product except in compliance with the License.
|
7
|
+
#
|
8
|
+
# This product includes a number of subcomponents with
|
9
|
+
# separate copyright notices and license terms. Your use of these
|
10
|
+
# subcomponents is subject to the terms and conditions of the
|
11
|
+
# subcomponent's license, as noted in the LICENSE file.
|
12
|
+
#++
|
13
|
+
|
14
|
+
require 'spec_helper'
|
15
|
+
require 'cli'
|
16
|
+
|
17
|
+
module CF::UAA
|
18
|
+
|
19
|
+
describe TokenCli do
|
20
|
+
|
21
|
+
include SpecHelper
|
22
|
+
|
23
|
+
before :all do
|
24
|
+
#Util.default_logger(:trace)
|
25
|
+
Cli.configure("", nil, StringIO.new, true)
|
26
|
+
setup_target(authorities: "clients.read,scim.read,scim.write,uaa.resource")
|
27
|
+
Cli.run("token client get #{@test_client} -s #{@test_secret}").should be
|
28
|
+
Config.yaml.should include("access_token")
|
29
|
+
@test_pwd = "TesTpwd$%^"
|
30
|
+
@test_user = "tEst_UseR+-#{Time.now.to_i}"
|
31
|
+
Cli.run("user add #{@test_user} -p #{@test_pwd} " +
|
32
|
+
"--emails sam@example.com,joNES@sample.com --given_name SamueL " +
|
33
|
+
"--phones 801-555-1212 --family_name jonES").should be
|
34
|
+
end
|
35
|
+
|
36
|
+
after :all do cleanup_target end
|
37
|
+
|
38
|
+
it "gets the server signing key" do
|
39
|
+
Cli.run("signing key -c #{@test_client} -s #{@test_secret}").should be
|
40
|
+
Cli.output.string.should include 'alg:', 'value:'
|
41
|
+
end
|
42
|
+
|
43
|
+
it "logs in with implicit grant & posted credentials as a user" do
|
44
|
+
Cli.run("token get #{@test_user} #{@test_pwd}").should be
|
45
|
+
Cli.output.string.should include("Successfully fetched token")
|
46
|
+
end
|
47
|
+
|
48
|
+
it "decodes the token" do
|
49
|
+
Cli.run("token decode").should be
|
50
|
+
["user_name", "exp", "aud", "scope", "client_id", "email", "user_id"].each do |a|
|
51
|
+
Cli.output.string.should include(a)
|
52
|
+
end
|
53
|
+
Cli.output.string.should include("email: sam@example.com")
|
54
|
+
#Cli.output.string.should include("user_name: #{@test_user}")
|
55
|
+
end
|
56
|
+
|
57
|
+
it "gets authenticated user information" do
|
58
|
+
Cli.run("me").should be
|
59
|
+
Cli.output.string.should include(@test_user)
|
60
|
+
end
|
61
|
+
|
62
|
+
it "updates the user" do
|
63
|
+
Cli.run "context #{@test_client}"
|
64
|
+
Cli.run("user update #{@test_user} --emails #{@test_user}+1@example.com --phones 123-456-7890").should be
|
65
|
+
Cli.run("user get #{@test_user}").should be
|
66
|
+
Cli.output.string.should include(@test_user, "#{@test_user}+1@example.com", "123-456-7890")
|
67
|
+
end
|
68
|
+
|
69
|
+
it "gets updated information in the token" do
|
70
|
+
Cli.run("token get #{@test_user} #{@test_pwd}").should be
|
71
|
+
Cli.output.string.should include("Successfully fetched token")
|
72
|
+
Cli.run("token decode").should be
|
73
|
+
Cli.output.string.should include("email: #{@test_user}+1@example.com")
|
74
|
+
end
|
75
|
+
|
76
|
+
it "gets ids for a username" do
|
77
|
+
Cli.run("user ids #{@test_user.downcase}").should be
|
78
|
+
Cli.output.string.should include(@test_user, "id")
|
79
|
+
end
|
80
|
+
|
81
|
+
it "has multiple distinct authentication contexts" do
|
82
|
+
Cli.run("contexts").should be
|
83
|
+
Cli.output.string.should include "[admin]", "[#{@test_client}]", "[#{@test_user.downcase}]"
|
84
|
+
end
|
85
|
+
|
86
|
+
it "removes the user context" do
|
87
|
+
Cli.run("token delete #{@test_user}").should be
|
88
|
+
Cli.run "contexts"
|
89
|
+
Cli.output.string.should include "[admin]", "[#{@test_client}]"
|
90
|
+
Cli.output.string.should_not include "#{@test_user}"
|
91
|
+
end
|
92
|
+
|
93
|
+
it "logs in with owner password grant" do
|
94
|
+
Cli.run("token owner get #{@test_client} -s #{@test_secret} #{@test_user} -p #{@test_pwd}" ).should be
|
95
|
+
Cli.output.string.should include "Successfully fetched token"
|
96
|
+
end
|
97
|
+
|
98
|
+
it "decodes the owner token" do
|
99
|
+
Cli.run("token decode").should be
|
100
|
+
["user_name", "exp", "aud", "scope", "client_id", "email", "user_id", "openid", "password.write"].each do |a|
|
101
|
+
Cli.output.string.should include a
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
it "uses the token endpoint given by the login server" do
|
106
|
+
pending "only saml login server returns token endpoint" if ENV["UAA_CLIENT_TARGET"]
|
107
|
+
@stub_uaa.info[:token_endpoint] = te = "#{@stub_uaa.url}/alternate"
|
108
|
+
Cli.run("target #{@target} --config")
|
109
|
+
Cli.run("token client get #{@test_client} -s #{@test_secret}").should be
|
110
|
+
Config.yaml.should include("access_token", "token_endpoint", te)
|
111
|
+
@stub_uaa.info[:token_endpoint].should be_nil
|
112
|
+
Cli.configure("", nil, StringIO.new) # clean up
|
113
|
+
Cli.run("target #{@target}").should be
|
114
|
+
Cli.run("token client get #{@admin_client} -s #{@admin_secret}").should be
|
115
|
+
end
|
116
|
+
|
117
|
+
end
|
118
|
+
|
119
|
+
end
|
data/spec/user_spec.rb
ADDED
@@ -0,0 +1,61 @@
|
|
1
|
+
#--
|
2
|
+
# Cloud Foundry 2012.02.03 Beta
|
3
|
+
# Copyright (c) [2009-2012] VMware, Inc. All Rights Reserved.
|
4
|
+
#
|
5
|
+
# This product is licensed to you under the Apache License, Version 2.0 (the "License").
|
6
|
+
# You may not use this product except in compliance with the License.
|
7
|
+
#
|
8
|
+
# This product includes a number of subcomponents with
|
9
|
+
# separate copyright notices and license terms. Your use of these
|
10
|
+
# subcomponents is subject to the terms and conditions of the
|
11
|
+
# subcomponent's license, as noted in the LICENSE file.
|
12
|
+
#++
|
13
|
+
|
14
|
+
require 'spec_helper'
|
15
|
+
require 'cli'
|
16
|
+
|
17
|
+
module CF::UAA
|
18
|
+
|
19
|
+
describe UserCli do
|
20
|
+
|
21
|
+
include SpecHelper
|
22
|
+
|
23
|
+
before :all do
|
24
|
+
#Util.default_logger(:trace)
|
25
|
+
Cli.configure("", nil, StringIO.new, true)
|
26
|
+
setup_target(authorities: "clients.read,scim.read,scim.write")
|
27
|
+
Cli.run("token client get #{@test_client} -s #{@test_secret}").should be
|
28
|
+
Config.yaml.should include("access_token")
|
29
|
+
@test_pwd = "TesTpwd$%^"
|
30
|
+
@test_user = "tEst_UseR_#{Time.now.to_i}"
|
31
|
+
Cli.run("user add #{@test_user} -p #{@test_pwd} " +
|
32
|
+
"--emails sam@example.com,joNES@sample.com --given_name SamueL " +
|
33
|
+
"--phones 801-555-1212 --family_name jonES").should be
|
34
|
+
end
|
35
|
+
|
36
|
+
after :all do cleanup_target end
|
37
|
+
|
38
|
+
it "creates a user" do
|
39
|
+
Cli.output.string.should include "success"
|
40
|
+
end
|
41
|
+
|
42
|
+
it "fails to change a user's password with the wrong old pwd" do
|
43
|
+
Cli.run("password change -p newpwd --old_password not-the-password").should be_nil
|
44
|
+
end
|
45
|
+
|
46
|
+
it "changes a user's password" do
|
47
|
+
Cli.run("token get #{@test_user} #{@test_pwd}").should be
|
48
|
+
Cli.run("password change -p newpwd --old_password #{@test_pwd}").should be
|
49
|
+
Cli.run("token get #{@test_user} newpwd").should be
|
50
|
+
Cli.output.string.should include "Successfully fetched token"
|
51
|
+
end
|
52
|
+
|
53
|
+
it "preserves case in names" do
|
54
|
+
Cli.run("context #{@test_client}")
|
55
|
+
Cli.run("user get #{@test_user.upcase}").should be
|
56
|
+
Cli.output.string.should =~ /#{@test_user}/
|
57
|
+
end
|
58
|
+
|
59
|
+
end
|
60
|
+
|
61
|
+
end
|
metadata
ADDED
@@ -0,0 +1,292 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: cf-uaac
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.3.0
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Dave Syer
|
9
|
+
- Dale Olds
|
10
|
+
- Joel D'sa
|
11
|
+
- Vidya Valmikinathan
|
12
|
+
- Luke Taylor
|
13
|
+
autorequire:
|
14
|
+
bindir: bin
|
15
|
+
cert_chain: []
|
16
|
+
date: 2012-12-05 00:00:00.000000000 Z
|
17
|
+
dependencies:
|
18
|
+
- !ruby/object:Gem::Dependency
|
19
|
+
name: bundler
|
20
|
+
requirement: !ruby/object:Gem::Requirement
|
21
|
+
none: false
|
22
|
+
requirements:
|
23
|
+
- - ! '>='
|
24
|
+
- !ruby/object:Gem::Version
|
25
|
+
version: '0'
|
26
|
+
type: :development
|
27
|
+
prerelease: false
|
28
|
+
version_requirements: !ruby/object:Gem::Requirement
|
29
|
+
none: false
|
30
|
+
requirements:
|
31
|
+
- - ! '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
- !ruby/object:Gem::Dependency
|
35
|
+
name: rake
|
36
|
+
requirement: !ruby/object:Gem::Requirement
|
37
|
+
none: false
|
38
|
+
requirements:
|
39
|
+
- - ! '>='
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: '0'
|
42
|
+
type: :development
|
43
|
+
prerelease: false
|
44
|
+
version_requirements: !ruby/object:Gem::Requirement
|
45
|
+
none: false
|
46
|
+
requirements:
|
47
|
+
- - ! '>='
|
48
|
+
- !ruby/object:Gem::Version
|
49
|
+
version: '0'
|
50
|
+
- !ruby/object:Gem::Dependency
|
51
|
+
name: rspec
|
52
|
+
requirement: !ruby/object:Gem::Requirement
|
53
|
+
none: false
|
54
|
+
requirements:
|
55
|
+
- - ! '>='
|
56
|
+
- !ruby/object:Gem::Version
|
57
|
+
version: '0'
|
58
|
+
type: :development
|
59
|
+
prerelease: false
|
60
|
+
version_requirements: !ruby/object:Gem::Requirement
|
61
|
+
none: false
|
62
|
+
requirements:
|
63
|
+
- - ! '>='
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: '0'
|
66
|
+
- !ruby/object:Gem::Dependency
|
67
|
+
name: simplecov
|
68
|
+
requirement: !ruby/object:Gem::Requirement
|
69
|
+
none: false
|
70
|
+
requirements:
|
71
|
+
- - ! '>='
|
72
|
+
- !ruby/object:Gem::Version
|
73
|
+
version: '0'
|
74
|
+
type: :development
|
75
|
+
prerelease: false
|
76
|
+
version_requirements: !ruby/object:Gem::Requirement
|
77
|
+
none: false
|
78
|
+
requirements:
|
79
|
+
- - ! '>='
|
80
|
+
- !ruby/object:Gem::Version
|
81
|
+
version: '0'
|
82
|
+
- !ruby/object:Gem::Dependency
|
83
|
+
name: simplecov-rcov
|
84
|
+
requirement: !ruby/object:Gem::Requirement
|
85
|
+
none: false
|
86
|
+
requirements:
|
87
|
+
- - ! '>='
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
none: false
|
94
|
+
requirements:
|
95
|
+
- - ! '>='
|
96
|
+
- !ruby/object:Gem::Version
|
97
|
+
version: '0'
|
98
|
+
- !ruby/object:Gem::Dependency
|
99
|
+
name: ci_reporter
|
100
|
+
requirement: !ruby/object:Gem::Requirement
|
101
|
+
none: false
|
102
|
+
requirements:
|
103
|
+
- - ! '>='
|
104
|
+
- !ruby/object:Gem::Version
|
105
|
+
version: '0'
|
106
|
+
type: :development
|
107
|
+
prerelease: false
|
108
|
+
version_requirements: !ruby/object:Gem::Requirement
|
109
|
+
none: false
|
110
|
+
requirements:
|
111
|
+
- - ! '>='
|
112
|
+
- !ruby/object:Gem::Version
|
113
|
+
version: '0'
|
114
|
+
- !ruby/object:Gem::Dependency
|
115
|
+
name: highline
|
116
|
+
requirement: !ruby/object:Gem::Requirement
|
117
|
+
none: false
|
118
|
+
requirements:
|
119
|
+
- - ! '>='
|
120
|
+
- !ruby/object:Gem::Version
|
121
|
+
version: '0'
|
122
|
+
type: :runtime
|
123
|
+
prerelease: false
|
124
|
+
version_requirements: !ruby/object:Gem::Requirement
|
125
|
+
none: false
|
126
|
+
requirements:
|
127
|
+
- - ! '>='
|
128
|
+
- !ruby/object:Gem::Version
|
129
|
+
version: '0'
|
130
|
+
- !ruby/object:Gem::Dependency
|
131
|
+
name: cf-uaa-lib
|
132
|
+
requirement: !ruby/object:Gem::Requirement
|
133
|
+
none: false
|
134
|
+
requirements:
|
135
|
+
- - ! '>='
|
136
|
+
- !ruby/object:Gem::Version
|
137
|
+
version: 1.3.0
|
138
|
+
type: :runtime
|
139
|
+
prerelease: false
|
140
|
+
version_requirements: !ruby/object:Gem::Requirement
|
141
|
+
none: false
|
142
|
+
requirements:
|
143
|
+
- - ! '>='
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: 1.3.0
|
146
|
+
- !ruby/object:Gem::Dependency
|
147
|
+
name: multi_json
|
148
|
+
requirement: !ruby/object:Gem::Requirement
|
149
|
+
none: false
|
150
|
+
requirements:
|
151
|
+
- - ! '>='
|
152
|
+
- !ruby/object:Gem::Version
|
153
|
+
version: '0'
|
154
|
+
type: :runtime
|
155
|
+
prerelease: false
|
156
|
+
version_requirements: !ruby/object:Gem::Requirement
|
157
|
+
none: false
|
158
|
+
requirements:
|
159
|
+
- - ! '>='
|
160
|
+
- !ruby/object:Gem::Version
|
161
|
+
version: '0'
|
162
|
+
- !ruby/object:Gem::Dependency
|
163
|
+
name: eventmachine
|
164
|
+
requirement: !ruby/object:Gem::Requirement
|
165
|
+
none: false
|
166
|
+
requirements:
|
167
|
+
- - ! '>='
|
168
|
+
- !ruby/object:Gem::Version
|
169
|
+
version: '0'
|
170
|
+
type: :runtime
|
171
|
+
prerelease: false
|
172
|
+
version_requirements: !ruby/object:Gem::Requirement
|
173
|
+
none: false
|
174
|
+
requirements:
|
175
|
+
- - ! '>='
|
176
|
+
- !ruby/object:Gem::Version
|
177
|
+
version: '0'
|
178
|
+
- !ruby/object:Gem::Dependency
|
179
|
+
name: launchy
|
180
|
+
requirement: !ruby/object:Gem::Requirement
|
181
|
+
none: false
|
182
|
+
requirements:
|
183
|
+
- - ! '>='
|
184
|
+
- !ruby/object:Gem::Version
|
185
|
+
version: '0'
|
186
|
+
type: :runtime
|
187
|
+
prerelease: false
|
188
|
+
version_requirements: !ruby/object:Gem::Requirement
|
189
|
+
none: false
|
190
|
+
requirements:
|
191
|
+
- - ! '>='
|
192
|
+
- !ruby/object:Gem::Version
|
193
|
+
version: '0'
|
194
|
+
- !ruby/object:Gem::Dependency
|
195
|
+
name: em-http-request
|
196
|
+
requirement: !ruby/object:Gem::Requirement
|
197
|
+
none: false
|
198
|
+
requirements:
|
199
|
+
- - ! '>='
|
200
|
+
- !ruby/object:Gem::Version
|
201
|
+
version: 1.0.0.beta.3
|
202
|
+
type: :runtime
|
203
|
+
prerelease: false
|
204
|
+
version_requirements: !ruby/object:Gem::Requirement
|
205
|
+
none: false
|
206
|
+
requirements:
|
207
|
+
- - ! '>='
|
208
|
+
- !ruby/object:Gem::Version
|
209
|
+
version: 1.0.0.beta.3
|
210
|
+
description: Client command line tools for interacting with the CloudFoundry User
|
211
|
+
Account and Authorization (UAA) server. The UAA is an OAuth2 Authorization Server
|
212
|
+
so it can be used by webapps and command line apps to obtain access tokens to act
|
213
|
+
on behalf of users. The tokens can then be used to access protected resources in
|
214
|
+
a Resource Server. This library can be used by clients (as a convenient wrapper
|
215
|
+
for mainstream oauth gems) or by resource servers.
|
216
|
+
email:
|
217
|
+
- dsyer@vmware.com
|
218
|
+
- olds@vmware.com
|
219
|
+
- jdsa@vmware.com
|
220
|
+
- vidya@vmware.com
|
221
|
+
- ltaylor@vmware.com
|
222
|
+
executables:
|
223
|
+
- completion-helper
|
224
|
+
- uaac
|
225
|
+
- uaac-completion.sh
|
226
|
+
- uaas
|
227
|
+
extensions: []
|
228
|
+
extra_rdoc_files: []
|
229
|
+
files:
|
230
|
+
- .gitignore
|
231
|
+
- Gemfile
|
232
|
+
- README.md
|
233
|
+
- Rakefile
|
234
|
+
- bin/completion-helper
|
235
|
+
- bin/uaac
|
236
|
+
- bin/uaac-completion.sh
|
237
|
+
- bin/uaas
|
238
|
+
- cf-uaac.gemspec
|
239
|
+
- lib/cli.rb
|
240
|
+
- lib/cli/base.rb
|
241
|
+
- lib/cli/client_reg.rb
|
242
|
+
- lib/cli/common.rb
|
243
|
+
- lib/cli/config.rb
|
244
|
+
- lib/cli/favicon.ico
|
245
|
+
- lib/cli/group.rb
|
246
|
+
- lib/cli/info.rb
|
247
|
+
- lib/cli/runner.rb
|
248
|
+
- lib/cli/token.rb
|
249
|
+
- lib/cli/user.rb
|
250
|
+
- lib/cli/version.rb
|
251
|
+
- lib/stub/scim.rb
|
252
|
+
- lib/stub/server.rb
|
253
|
+
- lib/stub/uaa.rb
|
254
|
+
- spec/client_reg_spec.rb
|
255
|
+
- spec/common_spec.rb
|
256
|
+
- spec/group_spec.rb
|
257
|
+
- spec/http_spec.rb
|
258
|
+
- spec/info_spec.rb
|
259
|
+
- spec/spec_helper.rb
|
260
|
+
- spec/token_spec.rb
|
261
|
+
- spec/user_spec.rb
|
262
|
+
homepage: https://github.com/cloudfoundry/cf-uaac
|
263
|
+
licenses: []
|
264
|
+
post_install_message:
|
265
|
+
rdoc_options: []
|
266
|
+
require_paths:
|
267
|
+
- lib
|
268
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
269
|
+
none: false
|
270
|
+
requirements:
|
271
|
+
- - ! '>='
|
272
|
+
- !ruby/object:Gem::Version
|
273
|
+
version: '0'
|
274
|
+
segments:
|
275
|
+
- 0
|
276
|
+
hash: -3878497912978208519
|
277
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
278
|
+
none: false
|
279
|
+
requirements:
|
280
|
+
- - ! '>='
|
281
|
+
- !ruby/object:Gem::Version
|
282
|
+
version: '0'
|
283
|
+
segments:
|
284
|
+
- 0
|
285
|
+
hash: -3878497912978208519
|
286
|
+
requirements: []
|
287
|
+
rubyforge_project: cf-uaac
|
288
|
+
rubygems_version: 1.8.21
|
289
|
+
signing_key:
|
290
|
+
specification_version: 3
|
291
|
+
summary: Command line interface for CloudFoundry UAA
|
292
|
+
test_files: []
|