cf-uaac 2.0.3 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: ac80747a5648fea9abc3e07787564eeadff44248
4
+ data.tar.gz: cc69ad42a01ec016cd07509772bf770155d844b0
5
+ SHA512:
6
+ metadata.gz: b1b30fb6191e498d26d8a8db083ec244f72b4529360b6179b7f988e5d02484ac9fa7f89d393603df16940a6ba7fe5e0a83fecc4fb6311cffe7b652e1a4769a40
7
+ data.tar.gz: a55e1a8ca96dbfb6a750ae90717d0178071547604a9afbd63160dcf0ce5033e7eb6b5ab6816c6b756095cbc174daa6456ed0b6f578c6e1d80b42b9a1dc4c915f
@@ -34,16 +34,16 @@ Gem::Specification.new do |s|
34
34
 
35
35
  # dependencies
36
36
  s.add_development_dependency "bundler"
37
- s.add_development_dependency "rake"
38
- s.add_development_dependency "rspec"
39
- s.add_development_dependency "simplecov"
40
- s.add_development_dependency "simplecov-rcov"
37
+ s.add_development_dependency "rake", "~> 10.3.1"
38
+ s.add_development_dependency "rspec", "~> 2.14.1"
39
+ s.add_development_dependency "simplecov", "~> 0.8.2"
40
+ s.add_development_dependency "simplecov-rcov", "~> 0.2.3"
41
41
  s.add_development_dependency "ci_reporter", "~> 1.9.2"
42
- s.add_runtime_dependency "cf-uaa-lib", "~> 2.0.0"
43
- s.add_runtime_dependency "highline"
44
- s.add_runtime_dependency "eventmachine"
45
- s.add_runtime_dependency "launchy"
46
- s.add_runtime_dependency "em-http-request", ">= 1.0.0.beta.3"
47
- s.add_runtime_dependency "json_pure"
48
- s.add_runtime_dependency "rack"
42
+ s.add_runtime_dependency "cf-uaa-lib", "~> 3.0.0"
43
+ s.add_runtime_dependency "highline", "~> 1.6.21"
44
+ s.add_runtime_dependency "eventmachine", "~> 1.0.3"
45
+ s.add_runtime_dependency "launchy", "~> 2.4.2"
46
+ s.add_runtime_dependency "em-http-request", "~> 1.1.2"
47
+ s.add_runtime_dependency "json_pure", "~> 1.8.1"
48
+ s.add_runtime_dependency "rack", "~> 1.5.2"
49
49
  end
@@ -67,7 +67,7 @@ class CommonCli < Topic
67
67
  end
68
68
 
69
69
  def scim_request
70
- yield Scim.new(Config.target, auth_header)
70
+ yield Scim.new(Config.target, auth_header, { skip_ssl_validation: Config.target_value(:skip_ssl_validation) })
71
71
  rescue Exception => e
72
72
  complain e
73
73
  end
@@ -135,30 +135,32 @@ class MiscCli < CommonCli
135
135
  url.to_s.to_sym
136
136
  end
137
137
 
138
- def bad_uaa_url(url, info)
139
- info.replace(@cli_class.uaa_info_client(url.to_s).server)
138
+ def bad_uaa_url(url, info, skip_ssl_validation = false)
139
+ info.replace(@cli_class.uaa_info_client(url.to_s, skip_ssl_validation).server)
140
140
  nil
141
141
  rescue Exception => e
142
142
  "failed to access #{url}: #{e.message}"
143
143
  end
144
144
 
145
+ define_option :skip_ssl_validation, "--skip-ssl-validation", "do not attempt to validate ssl certificate"
145
146
  define_option :force, "--[no-]force", "-f", "set even if target does not respond"
146
- desc "target [uaa_url]", "Display current or set new target", :force do |uaa_url|
147
+ desc "target [uaa_url]", "Display current or set new target", :force, :skip_ssl_validation do |uaa_url|
147
148
  msg, info = nil, {}
148
149
  if uaa_url
149
150
  if uaa_url.to_i.to_s == uaa_url
150
151
  return gripe "invalid target index" unless url = Config.target?(uaa_url.to_i)
151
152
  elsif url = normalize_url(uaa_url)
152
- return gripe msg if (msg = bad_uaa_url(url, info)) unless opts[:force] || Config.target?(url)
153
+ return gripe msg if (msg = bad_uaa_url(url, info, opts[:skip_ssl_validation])) unless opts[:force] || Config.target?(url)
153
154
  elsif !Config.target?(url = normalize_url(uaa_url, "https")) &&
154
155
  !Config.target?(url = normalize_url(uaa_url, "http"))
155
156
  if opts[:force]
156
157
  url = normalize_url(uaa_url, "https")
157
- elsif bad_uaa_url((url = normalize_url(uaa_url, "https")), info)
158
- return gripe msg if msg = bad_uaa_url((url = normalize_url(uaa_url, "http")), info)
158
+ else
159
+ return gripe msg if msg = bad_uaa_url((url = normalize_url(uaa_url, "https")), info, opts[:skip_ssl_validation])
159
160
  end
160
161
  end
161
162
  Config.target = url # we now have a canonical url set to https if possible
163
+ Config.target_opts(skip_ssl_validation: true) if opts[:skip_ssl_validation]
162
164
  update_target_info(info) if info[:prompts]
163
165
  end
164
166
  return say "no target set" unless Config.target
@@ -50,8 +50,9 @@ class Cli < BaseCli
50
50
  @uaa_logger = Util.default_logger(opts[:trace]? :trace: opts[:debug]? :debug: :warn, @output)
51
51
  end
52
52
 
53
- def self.uaa_info_client(url = Config.target)
54
- client = Info.new(url)
53
+ def self.uaa_info_client(url = Config.target, skip_ssl_validation = false)
54
+ skip_ssl_validation = Config.config[url][:skip_ssl_validation] if Config.config[url]
55
+ client = Info.new(url, { skip_ssl_validation: skip_ssl_validation })
55
56
  client.logger = @uaa_logger
56
57
  client
57
58
  end
@@ -24,7 +24,8 @@ class TokenCatcher < Stub::Base
24
24
  server.logger.debug "processing grant for path #{request.path}"
25
25
  secret = server.info.delete(:client_secret)
26
26
  ti = TokenIssuer.new(Config.target, server.info.delete(:client_id), secret,
27
- token_target: Config.target_value(:token_target))
27
+ { token_target: Config.target_value(:token_target),
28
+ skip_ssl_validation: Config.target_value(:skip_ssl_validation) })
28
29
  tkn = secret ? ti.authcode_grant(server.info.delete(:uri), data) :
29
30
  ti.implicit_grant(server.info.delete(:uri), data)
30
31
  server.info.update(token_info: tkn.info)
@@ -86,7 +87,8 @@ class TokenCli < CommonCli
86
87
  def issuer_request(client_id, secret = nil)
87
88
  update_target_info
88
89
  yield TokenIssuer.new(Config.target.to_s, client_id, secret,
89
- token_target: Config.target_value(:token_endpoint))
90
+ { token_target: Config.target_value(:token_endpoint),
91
+ skip_ssl_validation: Config.target_value(:skip_ssl_validation) })
90
92
  rescue Exception => e
91
93
  complain e
92
94
  end
@@ -14,6 +14,6 @@
14
14
  # Cloud Foundry namespace
15
15
  module CF
16
16
  module UAA
17
- CLI_VERSION = "2.0.3"
17
+ CLI_VERSION = "3.0.0"
18
18
  end
19
19
  end
@@ -21,9 +21,9 @@ describe CommonCli do
21
21
 
22
22
  include SpecHelper
23
23
 
24
- before :each do
25
- Util.default_logger(:trace)
26
- Cli.configure("", nil, StringIO.new, true)
24
+ before :each do
25
+ # Util.default_logger(:trace)
26
+ Cli.configure("", nil, StringIO.new, true)
27
27
  end
28
28
 
29
29
  ["-v", "version", "--version"].each do |opt|
@@ -83,7 +83,18 @@ describe CommonCli do
83
83
  Config.yaml.should_not include "foo\.bar"
84
84
  end
85
85
 
86
- end
86
+ it "does not attempt to validate ssl certificate" do
87
+ Cli.run("target --force --skip-ssl-validation https://example.com")
88
+ Cli.output.string.should include "https://example.com"
89
+ Config.yaml.should include "skip_ssl_validation: true"
90
+ end
87
91
 
92
+ it "only attempts http if scheme is http" do
93
+ Cli.run("target http://example.com")
94
+ puts Cli.output.string
95
+ Cli.output.string.should_not include "https"
96
+ end
97
+
98
+ end
88
99
  end
89
100
 
@@ -61,13 +61,13 @@ describe InfoCli do
61
61
 
62
62
  it "sets multiple targets to be fully qualified in config and targets output" do
63
63
  Config.load("")
64
- Cli.run("target example.com --force")
64
+ Cli.run("target example1.com --force")
65
65
  Cli.run("target example2.com --force")
66
- uri = URI.parse(@target)
67
- Cli.run("target #{uri.host}:#{uri.port}#{uri.path}")
66
+ Cli.run("target example.com")
67
+ Cli.output.string.should_not include "http://example.com"
68
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
69
+ Config.yaml.should include "https://example1.com", "https://example2.com"
70
+ Cli.output.string.should include "https://example1.com", "https://example2.com"
71
71
  end
72
72
 
73
73
  end
@@ -0,0 +1,69 @@
1
+ # Cloud Foundry
2
+ # Copyright (c) [2009-2014] Pivotal Software, Inc. All Rights Reserved.
3
+ #
4
+ # This product is licensed to you under the Apache License, Version 2.0 (the "License").
5
+ # You may not use this product except in compliance with the License.
6
+ #
7
+ # This product includes a number of subcomponents with
8
+ # separate copyright notices and license terms. Your use of these
9
+ # subcomponents is subject to the terms and conditions of the
10
+ # subcomponent's license, as noted in the LICENSE file.
11
+
12
+ require 'spec_helper'
13
+ require 'fiber'
14
+ require 'em-http'
15
+ require 'cli'
16
+ require 'stub/server'
17
+
18
+ module CF::UAA
19
+
20
+ if ENV["UAA_CLIENT_TARGET"] && ENV["UAA_CLIENT_TARGET"].start_with?("https")
21
+
22
+ class StubHttp < Stub::Base
23
+ route(:get, '/') { reply_in_kind "welcome to stub http, version #{CLI_VERSION}" }
24
+ end
25
+
26
+ describe "cf-uaa-lib integration" do
27
+
28
+ include SpecHelper
29
+
30
+ before :all do
31
+ @url = URI.parse(ENV["UAA_CLIENT_TARGET"])
32
+ Cli.configure("", nil, StringIO.new, true)
33
+ end
34
+
35
+ before :each do
36
+ Config.load("")
37
+ end
38
+
39
+ describe 'targetting a https URL' do
40
+ it "fails ssl validation without a certificate via HTTPS unless skipped" do
41
+ Cli.run("target #{ENV["UAA_CLIENT_TARGET"]}")
42
+ Cli.output.string.should include "Invalid SSL Cert"
43
+ end
44
+
45
+ it "skips ssl validation with a flag" do
46
+ Cli.run("target #{ENV["UAA_CLIENT_TARGET"]} --skip-ssl-validation")
47
+ Cli.output.string.should_not include "Invalid SSL Cert"
48
+ end
49
+ end
50
+
51
+ describe 'targeting a URL without specifying the scheme' do
52
+ it "uses HTTPS if --skip-ssl-validation is true" do
53
+ Cli.run("target #{@url.host}:#{@url.port}/#{@url.path} --skip-ssl-validation")
54
+ Cli.output.string.should include "https"
55
+ Cli.output.string.should_not include "Invalid SSL Cert"
56
+ end
57
+ end
58
+
59
+ describe 'using other commands after skipping ssl validation' do
60
+ it "does not raise SSLException for the same target" do
61
+ Cli.run("target #{ENV["UAA_CLIENT_TARGET"]} --skip-ssl-validation")
62
+ Cli.run("token client get foo -s bar")
63
+ Cli.output.string.should_not include "Invalid SSL Cert"
64
+ end
65
+ end
66
+ end
67
+
68
+ end
69
+ end
metadata CHANGED
@@ -1,8 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cf-uaac
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.3
5
- prerelease:
4
+ version: 3.0.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Dave Syer
@@ -13,216 +12,190 @@ authors:
13
12
  autorequire:
14
13
  bindir: bin
15
14
  cert_chain: []
16
- date: 2014-07-25 00:00:00.000000000 Z
15
+ date: 2014-08-08 00:00:00.000000000 Z
17
16
  dependencies:
18
17
  - !ruby/object:Gem::Dependency
19
18
  name: bundler
20
19
  requirement: !ruby/object:Gem::Requirement
21
- none: false
22
20
  requirements:
23
- - - ! '>='
21
+ - - ">="
24
22
  - !ruby/object:Gem::Version
25
23
  version: '0'
26
24
  type: :development
27
25
  prerelease: false
28
26
  version_requirements: !ruby/object:Gem::Requirement
29
- none: false
30
27
  requirements:
31
- - - ! '>='
28
+ - - ">="
32
29
  - !ruby/object:Gem::Version
33
30
  version: '0'
34
31
  - !ruby/object:Gem::Dependency
35
32
  name: rake
36
33
  requirement: !ruby/object:Gem::Requirement
37
- none: false
38
34
  requirements:
39
- - - ! '>='
35
+ - - "~>"
40
36
  - !ruby/object:Gem::Version
41
- version: '0'
37
+ version: 10.3.1
42
38
  type: :development
43
39
  prerelease: false
44
40
  version_requirements: !ruby/object:Gem::Requirement
45
- none: false
46
41
  requirements:
47
- - - ! '>='
42
+ - - "~>"
48
43
  - !ruby/object:Gem::Version
49
- version: '0'
44
+ version: 10.3.1
50
45
  - !ruby/object:Gem::Dependency
51
46
  name: rspec
52
47
  requirement: !ruby/object:Gem::Requirement
53
- none: false
54
48
  requirements:
55
- - - ! '>='
49
+ - - "~>"
56
50
  - !ruby/object:Gem::Version
57
- version: '0'
51
+ version: 2.14.1
58
52
  type: :development
59
53
  prerelease: false
60
54
  version_requirements: !ruby/object:Gem::Requirement
61
- none: false
62
55
  requirements:
63
- - - ! '>='
56
+ - - "~>"
64
57
  - !ruby/object:Gem::Version
65
- version: '0'
58
+ version: 2.14.1
66
59
  - !ruby/object:Gem::Dependency
67
60
  name: simplecov
68
61
  requirement: !ruby/object:Gem::Requirement
69
- none: false
70
62
  requirements:
71
- - - ! '>='
63
+ - - "~>"
72
64
  - !ruby/object:Gem::Version
73
- version: '0'
65
+ version: 0.8.2
74
66
  type: :development
75
67
  prerelease: false
76
68
  version_requirements: !ruby/object:Gem::Requirement
77
- none: false
78
69
  requirements:
79
- - - ! '>='
70
+ - - "~>"
80
71
  - !ruby/object:Gem::Version
81
- version: '0'
72
+ version: 0.8.2
82
73
  - !ruby/object:Gem::Dependency
83
74
  name: simplecov-rcov
84
75
  requirement: !ruby/object:Gem::Requirement
85
- none: false
86
76
  requirements:
87
- - - ! '>='
77
+ - - "~>"
88
78
  - !ruby/object:Gem::Version
89
- version: '0'
79
+ version: 0.2.3
90
80
  type: :development
91
81
  prerelease: false
92
82
  version_requirements: !ruby/object:Gem::Requirement
93
- none: false
94
83
  requirements:
95
- - - ! '>='
84
+ - - "~>"
96
85
  - !ruby/object:Gem::Version
97
- version: '0'
86
+ version: 0.2.3
98
87
  - !ruby/object:Gem::Dependency
99
88
  name: ci_reporter
100
89
  requirement: !ruby/object:Gem::Requirement
101
- none: false
102
90
  requirements:
103
- - - ~>
91
+ - - "~>"
104
92
  - !ruby/object:Gem::Version
105
93
  version: 1.9.2
106
94
  type: :development
107
95
  prerelease: false
108
96
  version_requirements: !ruby/object:Gem::Requirement
109
- none: false
110
97
  requirements:
111
- - - ~>
98
+ - - "~>"
112
99
  - !ruby/object:Gem::Version
113
100
  version: 1.9.2
114
101
  - !ruby/object:Gem::Dependency
115
102
  name: cf-uaa-lib
116
103
  requirement: !ruby/object:Gem::Requirement
117
- none: false
118
104
  requirements:
119
- - - ~>
105
+ - - "~>"
120
106
  - !ruby/object:Gem::Version
121
- version: 2.0.0
107
+ version: 3.0.0
122
108
  type: :runtime
123
109
  prerelease: false
124
110
  version_requirements: !ruby/object:Gem::Requirement
125
- none: false
126
111
  requirements:
127
- - - ~>
112
+ - - "~>"
128
113
  - !ruby/object:Gem::Version
129
- version: 2.0.0
114
+ version: 3.0.0
130
115
  - !ruby/object:Gem::Dependency
131
116
  name: highline
132
117
  requirement: !ruby/object:Gem::Requirement
133
- none: false
134
118
  requirements:
135
- - - ! '>='
119
+ - - "~>"
136
120
  - !ruby/object:Gem::Version
137
- version: '0'
121
+ version: 1.6.21
138
122
  type: :runtime
139
123
  prerelease: false
140
124
  version_requirements: !ruby/object:Gem::Requirement
141
- none: false
142
125
  requirements:
143
- - - ! '>='
126
+ - - "~>"
144
127
  - !ruby/object:Gem::Version
145
- version: '0'
128
+ version: 1.6.21
146
129
  - !ruby/object:Gem::Dependency
147
130
  name: eventmachine
148
131
  requirement: !ruby/object:Gem::Requirement
149
- none: false
150
132
  requirements:
151
- - - ! '>='
133
+ - - "~>"
152
134
  - !ruby/object:Gem::Version
153
- version: '0'
135
+ version: 1.0.3
154
136
  type: :runtime
155
137
  prerelease: false
156
138
  version_requirements: !ruby/object:Gem::Requirement
157
- none: false
158
139
  requirements:
159
- - - ! '>='
140
+ - - "~>"
160
141
  - !ruby/object:Gem::Version
161
- version: '0'
142
+ version: 1.0.3
162
143
  - !ruby/object:Gem::Dependency
163
144
  name: launchy
164
145
  requirement: !ruby/object:Gem::Requirement
165
- none: false
166
146
  requirements:
167
- - - ! '>='
147
+ - - "~>"
168
148
  - !ruby/object:Gem::Version
169
- version: '0'
149
+ version: 2.4.2
170
150
  type: :runtime
171
151
  prerelease: false
172
152
  version_requirements: !ruby/object:Gem::Requirement
173
- none: false
174
153
  requirements:
175
- - - ! '>='
154
+ - - "~>"
176
155
  - !ruby/object:Gem::Version
177
- version: '0'
156
+ version: 2.4.2
178
157
  - !ruby/object:Gem::Dependency
179
158
  name: em-http-request
180
159
  requirement: !ruby/object:Gem::Requirement
181
- none: false
182
160
  requirements:
183
- - - ! '>='
161
+ - - "~>"
184
162
  - !ruby/object:Gem::Version
185
- version: 1.0.0.beta.3
163
+ version: 1.1.2
186
164
  type: :runtime
187
165
  prerelease: false
188
166
  version_requirements: !ruby/object:Gem::Requirement
189
- none: false
190
167
  requirements:
191
- - - ! '>='
168
+ - - "~>"
192
169
  - !ruby/object:Gem::Version
193
- version: 1.0.0.beta.3
170
+ version: 1.1.2
194
171
  - !ruby/object:Gem::Dependency
195
172
  name: json_pure
196
173
  requirement: !ruby/object:Gem::Requirement
197
- none: false
198
174
  requirements:
199
- - - ! '>='
175
+ - - "~>"
200
176
  - !ruby/object:Gem::Version
201
- version: '0'
177
+ version: 1.8.1
202
178
  type: :runtime
203
179
  prerelease: false
204
180
  version_requirements: !ruby/object:Gem::Requirement
205
- none: false
206
181
  requirements:
207
- - - ! '>='
182
+ - - "~>"
208
183
  - !ruby/object:Gem::Version
209
- version: '0'
184
+ version: 1.8.1
210
185
  - !ruby/object:Gem::Dependency
211
186
  name: rack
212
187
  requirement: !ruby/object:Gem::Requirement
213
- none: false
214
188
  requirements:
215
- - - ! '>='
189
+ - - "~>"
216
190
  - !ruby/object:Gem::Version
217
- version: '0'
191
+ version: 1.5.2
218
192
  type: :runtime
219
193
  prerelease: false
220
194
  version_requirements: !ruby/object:Gem::Requirement
221
- none: false
222
195
  requirements:
223
- - - ! '>='
196
+ - - "~>"
224
197
  - !ruby/object:Gem::Version
225
- version: '0'
198
+ version: 1.5.2
226
199
  description: Client command line tools for interacting with the CloudFoundry User
227
200
  Account and Authorization (UAA) server. The UAA is an OAuth2 Authorization Server
228
201
  so it can be used by webapps and command line apps to obtain access tokens to act
@@ -243,9 +216,9 @@ executables:
243
216
  extensions: []
244
217
  extra_rdoc_files: []
245
218
  files:
246
- - .gitignore
247
- - .travis.yml
248
- - .yardopts
219
+ - ".gitignore"
220
+ - ".travis.yml"
221
+ - ".yardopts"
249
222
  - Gemfile
250
223
  - LICENSE.TXT
251
224
  - NOTICE.TXT
@@ -280,32 +253,32 @@ files:
280
253
  - spec/info_spec.rb
281
254
  - spec/setup_helper.rb
282
255
  - spec/spec_helper.rb
256
+ - spec/ssl_integration_spec.rb
283
257
  - spec/token_spec.rb
284
258
  - spec/user_spec.rb
285
259
  homepage: https://github.com/cloudfoundry/cf-uaac
286
260
  licenses:
287
261
  - Apache 2.0
262
+ metadata: {}
288
263
  post_install_message:
289
264
  rdoc_options: []
290
265
  require_paths:
291
266
  - lib
292
267
  required_ruby_version: !ruby/object:Gem::Requirement
293
- none: false
294
268
  requirements:
295
- - - ! '>='
269
+ - - ">="
296
270
  - !ruby/object:Gem::Version
297
271
  version: '0'
298
272
  required_rubygems_version: !ruby/object:Gem::Requirement
299
- none: false
300
273
  requirements:
301
- - - ! '>='
274
+ - - ">="
302
275
  - !ruby/object:Gem::Version
303
276
  version: '0'
304
277
  requirements: []
305
278
  rubyforge_project: cf-uaac
306
- rubygems_version: 1.8.23
279
+ rubygems_version: 2.2.2
307
280
  signing_key:
308
- specification_version: 3
281
+ specification_version: 4
309
282
  summary: Command line interface for CloudFoundry UAA
310
283
  test_files:
311
284
  - spec/client_reg_spec.rb
@@ -316,5 +289,6 @@ test_files:
316
289
  - spec/info_spec.rb
317
290
  - spec/setup_helper.rb
318
291
  - spec/spec_helper.rb
292
+ - spec/ssl_integration_spec.rb
319
293
  - spec/token_spec.rb
320
294
  - spec/user_spec.rb