cf-uaac 3.0.0 → 3.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ac80747a5648fea9abc3e07787564eeadff44248
4
- data.tar.gz: cc69ad42a01ec016cd07509772bf770155d844b0
3
+ metadata.gz: f975b934d93193d3d23935f98683510bff81a468
4
+ data.tar.gz: 7b1b63c9a22b67fed10faa292668623ef960dcae
5
5
  SHA512:
6
- metadata.gz: b1b30fb6191e498d26d8a8db083ec244f72b4529360b6179b7f988e5d02484ac9fa7f89d393603df16940a6ba7fe5e0a83fecc4fb6311cffe7b652e1a4769a40
7
- data.tar.gz: a55e1a8ca96dbfb6a750ae90717d0178071547604a9afbd63160dcf0ce5033e7eb6b5ab6816c6b756095cbc174daa6456ed0b6f578c6e1d80b42b9a1dc4c915f
6
+ metadata.gz: 4b2d1575c80cfb76cf72d151fc0765a327bbae04c4e617fe434732873b74055b285df2810aa9150df636e30a333aa29a0adf8edf17d2ced159793a2c62a27492
7
+ data.tar.gz: 0f4901450bff3c9b06d6e559376aa0dd8aeb54b8819f81670edbfa71aa4cb29d5e308d806dbfea0c3d0c392f6a039f69fa91b26f35ab4554d2cfb3be1cbc345e
data/Gemfile CHANGED
@@ -1,5 +1,6 @@
1
- # Cloud Foundry 2012.02.03 Beta
2
- # Copyright (c) [2009-2012] VMware, Inc. All Rights Reserved.
1
+ #--
2
+ # Cloud Foundry
3
+ # Copyright (c) [2009-2014] Pivotal Software, Inc. All Rights Reserved.
3
4
  #
4
5
  # This product is licensed to you under the Apache License, Version 2.0 (the "License").
5
6
  # You may not use this product except in compliance with the License.
@@ -8,7 +9,7 @@
8
9
  # separate copyright notices and license terms. Your use of these
9
10
  # subcomponents is subject to the terms and conditions of the
10
11
  # subcomponent's license, as noted in the LICENSE file.
11
- #
12
+ #++
12
13
 
13
14
  source "http://rubygems.org"
14
15
 
data/NOTICE.TXT CHANGED
@@ -1,10 +1,10 @@
1
- Cloud Foundry 2012.02.03 Beta
2
- Copyright (c) [2009-2012] VMware, Inc. All Rights Reserved.
1
+ Cloud Foundry
2
+ Copyright (c) [2009-2014] Pivotal Software, Inc. All Rights Reserved.
3
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.
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
6
 
7
7
  This product includes a number of subcomponents with
8
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.
9
+ subcomponents is subject to the terms and conditions of the
10
+ subcomponent's license, as noted in the LICENSE file.
data/Rakefile CHANGED
@@ -1,5 +1,6 @@
1
- # Cloud Foundry 2012.02.03 Beta
2
- # Copyright (c) [2009-2012] VMware, Inc. All Rights Reserved.
1
+ #--
2
+ # Cloud Foundry
3
+ # Copyright (c) [2009-2014] Pivotal Software, Inc. All Rights Reserved.
3
4
  #
4
5
  # This product is licensed to you under the Apache License, Version 2.0 (the "License").
5
6
  # You may not use this product except in compliance with the License.
@@ -8,7 +9,7 @@
8
9
  # separate copyright notices and license terms. Your use of these
9
10
  # subcomponents is subject to the terms and conditions of the
10
11
  # subcomponent's license, as noted in the LICENSE file.
11
- #
12
+ #++
12
13
 
13
14
  require "rspec/core/rake_task"
14
15
  require "bundler/gem_tasks" # only available in bundler >= 1.0.15
@@ -1,5 +1,18 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
+ #--
4
+ # Cloud Foundry
5
+ # Copyright (c) [2009-2014] Pivotal Software, Inc. All Rights Reserved.
6
+ #
7
+ # This product is licensed to you under the Apache License, Version 2.0 (the "License").
8
+ # You may not use this product except in compliance with the License.
9
+ #
10
+ # This product includes a number of subcomponents with
11
+ # separate copyright notices and license terms. Your use of these
12
+ # subcomponents is subject to the terms and conditions of the
13
+ # subcomponent's license, as noted in the LICENSE file.
14
+ #++
15
+
3
16
  # given the indents, find sub-commands of a given command
4
17
  def find_sub_commands (lines, indents, i)
5
18
  result = Array.new
data/bin/uaac CHANGED
@@ -1,5 +1,18 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
+ #--
4
+ # Cloud Foundry
5
+ # Copyright (c) [2009-2014] Pivotal Software, Inc. All Rights Reserved.
6
+ #
7
+ # This product is licensed to you under the Apache License, Version 2.0 (the "License").
8
+ # You may not use this product except in compliance with the License.
9
+ #
10
+ # This product includes a number of subcomponents with
11
+ # separate copyright notices and license terms. Your use of these
12
+ # subcomponents is subject to the terms and conditions of the
13
+ # subcomponent's license, as noted in the LICENSE file.
14
+ #++
15
+
3
16
  $:.unshift File.expand_path File.join __FILE__, '..', '..', 'lib'
4
- require 'cli'
17
+ require 'uaac_cli'
5
18
  exit CF::UAA::Cli.configure("#{ENV['HOME']}/.uaac.yml").run ? 0 : 1
@@ -1,4 +1,18 @@
1
1
  #! /bin/bash
2
+
3
+ #--
4
+ # Cloud Foundry
5
+ # Copyright (c) [2009-2014] Pivotal Software, Inc. All Rights Reserved.
6
+ #
7
+ # This product is licensed to you under the Apache License, Version 2.0 (the "License").
8
+ # You may not use this product except in compliance with the License.
9
+ #
10
+ # This product includes a number of subcomponents with
11
+ # separate copyright notices and license terms. Your use of these
12
+ # subcomponents is subject to the terms and conditions of the
13
+ # subcomponent's license, as noted in the LICENSE file.
14
+ #++
15
+
2
16
  GLOBAL_OPTS="--help --no-help -h --version --no-version -v --debug --no-debug -d --trace --no-trace -t --config"
3
17
 
4
18
  _debug() {
data/bin/uaas CHANGED
@@ -1,5 +1,18 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
+ #--
4
+ # Cloud Foundry
5
+ # Copyright (c) [2009-2014] Pivotal Software, Inc. All Rights Reserved.
6
+ #
7
+ # This product is licensed to you under the Apache License, Version 2.0 (the "License").
8
+ # You may not use this product except in compliance with the License.
9
+ #
10
+ # This product includes a number of subcomponents with
11
+ # separate copyright notices and license terms. Your use of these
12
+ # subcomponents is subject to the terms and conditions of the
13
+ # subcomponent's license, as noted in the LICENSE file.
14
+ #++
15
+
3
16
  $:.unshift File.expand_path File.join __FILE__, '..', '..', 'lib'
4
17
  require 'stub/uaa'
5
18
  require 'cli/base'
data/cf-uaac.gemspec CHANGED
@@ -1,7 +1,7 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
  #
3
- # Cloud Foundry 2012.02.03 Beta
4
- # Copyright (c) [2009-2012] VMware, Inc. All Rights Reserved.
3
+ # Cloud Foundry
4
+ # Copyright (c) [2009-2014] Pivotal Software, Inc. All Rights Reserved.
5
5
  #
6
6
  # This product is licensed to you under the Apache License, Version 2.0 (the "License").
7
7
  # You may not use this product except in compliance with the License.
@@ -10,7 +10,7 @@
10
10
  # separate copyright notices and license terms. Your use of these
11
11
  # subcomponents is subject to the terms and conditions of the
12
12
  # subcomponent's license, as noted in the LICENSE file.
13
- #
13
+ #++
14
14
 
15
15
  $:.push File.expand_path("../lib", __FILE__)
16
16
  require "cli/version"
@@ -39,7 +39,7 @@ Gem::Specification.new do |s|
39
39
  s.add_development_dependency "simplecov", "~> 0.8.2"
40
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", "~> 3.0.0"
42
+ s.add_runtime_dependency "cf-uaa-lib", "~> 3.1.0"
43
43
  s.add_runtime_dependency "highline", "~> 1.6.21"
44
44
  s.add_runtime_dependency "eventmachine", "~> 1.0.3"
45
45
  s.add_runtime_dependency "launchy", "~> 2.4.2"
data/lib/cli/base.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  #--
2
- # Cloud Foundry 2012.02.03 Beta
3
- # Copyright (c) [2009-2012] VMware, Inc. All Rights Reserved.
2
+ # Cloud Foundry
3
+ # Copyright (c) [2009-2014] Pivotal Software, Inc. All Rights Reserved.
4
4
  #
5
5
  # This product is licensed to you under the Apache License, Version 2.0 (the "License").
6
6
  # You may not use this product except in compliance with the License.
@@ -1,6 +1,6 @@
1
1
  #--
2
- # Cloud Foundry 2012.02.03 Beta
3
- # Copyright (c) [2009-2012] VMware, Inc. All Rights Reserved.
2
+ # Cloud Foundry
3
+ # Copyright (c) [2009-2014] Pivotal Software, Inc. All Rights Reserved.
4
4
  #
5
5
  # This product is licensed to you under the Apache License, Version 2.0 (the "License").
6
6
  # You may not use this product except in compliance with the License.
data/lib/cli/common.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  #--
2
- # Cloud Foundry 2012.02.03 Beta
3
- # Copyright (c) [2009-2012] VMware, Inc. All Rights Reserved.
2
+ # Cloud Foundry
3
+ # Copyright (c) [2009-2014] Pivotal Software, Inc. All Rights Reserved.
4
4
  #
5
5
  # This product is licensed to you under the Apache License, Version 2.0 (the "License").
6
6
  # You may not use this product except in compliance with the License.
@@ -83,9 +83,15 @@ class CommonCli < Topic
83
83
  def scim_common_list(type, filter)
84
84
  pp scim_request { |sr|
85
85
  query = { attributes: opts[:attrs], filter: filter }
86
- info = opts[:start] || opts[:count] ?
87
- sr.query(type, query.merge!(startIndex: opts[:start], count: opts[:count])):
88
- sr.all_pages(type, query)
86
+ info = nil
87
+ if type == :user
88
+ info = sr.query(type, query.merge!(startIndex: opts[:start], count: opts[:count]))
89
+ else
90
+ info = opts[:start] || opts[:count] ?
91
+ sr.query(type, query.merge!(startIndex: opts[:start], count: opts[:count])):
92
+ sr.all_pages(type, query)
93
+ end
94
+
89
95
  nattr = sr.name_attr(type).downcase
90
96
  info.is_a?(Array) && info.length > 0 && info[0][nattr] ?
91
97
  info.each_with_object({}) { |v, h| h[v.delete(nattr)] = v } : info
data/lib/cli/config.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  #--
2
- # Cloud Foundry 2012.02.03 Beta
3
- # Copyright (c) [2009-2012] VMware, Inc. All Rights Reserved.
2
+ # Cloud Foundry
3
+ # Copyright (c) [2009-2014] Pivotal Software, Inc. All Rights Reserved.
4
4
  #
5
5
  # This product is licensed to you under the Apache License, Version 2.0 (the "License").
6
6
  # You may not use this product except in compliance with the License.
data/lib/cli/curl.rb CHANGED
@@ -1,3 +1,16 @@
1
+ #--
2
+ # Cloud Foundry
3
+ # Copyright (c) [2009-2014] Pivotal Software, 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
+
1
14
  require 'cli/common'
2
15
  require 'rack'
3
16
  require 'net/http'
data/lib/cli/group.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  #--
2
- # Cloud Foundry 2012.02.03 Beta
3
- # Copyright (c) [2009-2012] VMware, Inc. All Rights Reserved.
2
+ # Cloud Foundry
3
+ # Copyright (c) [2009-2014] Pivotal Software, Inc. All Rights Reserved.
4
4
  #
5
5
  # This product is licensed to you under the Apache License, Version 2.0 (the "License").
6
6
  # You may not use this product except in compliance with the License.
@@ -42,6 +42,57 @@ class GroupCli < CommonCli
42
42
  }
43
43
  end
44
44
 
45
+ define_option :start, "--start <start>", "show results starting at this index"
46
+ define_option :count, "--count <count>", "number of results to show"
47
+ desc "group mappings", "List all the mappings between uaa scopes and external groups", :start, :count do
48
+ start, count = opts[:start], opts[:count]
49
+ return gripe "Please enter a valid start index" if start unless is_integer?(start)
50
+ return gripe "Please enter a valid count" if count unless is_natural_number?(count)
51
+
52
+ response = scim_request { |scim| scim.list_group_mappings(start, count) }
53
+
54
+ if response
55
+ grouped_group_mappings = []
56
+ response["resources"].each do |resource|
57
+ grouped_group_mappings << {resource['displayname'] => resource['externalgroup']}
58
+ end
59
+ response["resources"] = grouped_group_mappings
60
+ pp response
61
+ end
62
+ end
63
+
64
+ define_option :id, "--id <id>", "map uaa group using group id"
65
+ define_option :name, "--name <name>", "map uaa scope using group name"
66
+ desc "group map [external_group]", "Map uaa groups to external groups", :id, :name do |external_group|
67
+ return gripe "Please provide a group name or id" unless opts[:id] || opts[:name]
68
+ return gripe "Please provide an external group" unless external_group
69
+
70
+ group = opts[:id] ? opts[:id] : opts[:name]
71
+ is_id = opts[:id] ? true : false
72
+ pp scim_request { |ua|
73
+ response = ua.map_group(group, is_id, external_group)
74
+ raise BadResponse, "no group id found in response of external group mapping" unless response["groupid"]
75
+ "Successfully mapped #{response["displayname"]} to #{external_group}"
76
+ }
77
+ end
78
+
79
+ desc "group unmap [group_name] [external_group]", "Unmaps an external group from a uaa group" do |group_name, external_group|
80
+ return gripe "Please provide a group name and external group" unless group_name && external_group
81
+
82
+ group_id = nil
83
+ response = Cli.run("group get #{group_name}")
84
+ if response
85
+ group_id = response['id']
86
+ else
87
+ return gripe "Group #{group_name} not found"
88
+ end
89
+
90
+ pp scim_request { |ua|
91
+ ua.unmap_group(group_id, external_group)
92
+ "Successfully unmapped #{external_group} from #{group_name}"
93
+ }
94
+ end
95
+
45
96
  def id_set(objs)
46
97
  objs.each_with_object(Set.new) {|o, s|
47
98
  id = o.is_a?(String)? o: (o["id"] || o["value"] || o["memberid"])
@@ -92,6 +143,16 @@ class GroupCli < CommonCli
92
143
  pp scim_request { |scim| update_members(scim, name, "writers", users, false) }
93
144
  end
94
145
 
146
+ private
147
+
148
+ def is_natural_number?(input)
149
+ is_integer?(input) && input.to_i > -1
150
+ end
151
+
152
+ def is_integer?(input)
153
+ input && (input.to_i.to_s == input)
154
+ end
95
155
  end
96
156
 
97
157
  end
158
+
data/lib/cli/info.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  #--
2
- # Cloud Foundry 2012.02.03 Beta
3
- # Copyright (c) [2009-2012] VMware, Inc. All Rights Reserved.
2
+ # Cloud Foundry
3
+ # Copyright (c) [2009-2014] Pivotal Software, Inc. All Rights Reserved.
4
4
  #
5
5
  # This product is licensed to you under the Apache License, Version 2.0 (the "License").
6
6
  # You may not use this product except in compliance with the License.
data/lib/cli/runner.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  #--
2
- # Cloud Foundry 2012.02.03 Beta
3
- # Copyright (c) [2009-2012] VMware, Inc. All Rights Reserved.
2
+ # Cloud Foundry
3
+ # Copyright (c) [2009-2014] Pivotal Software, Inc. All Rights Reserved.
4
4
  #
5
5
  # This product is licensed to you under the Apache License, Version 2.0 (the "License").
6
6
  # You may not use this product except in compliance with the License.
data/lib/cli/token.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  #--
2
- # Cloud Foundry 2012.02.03 Beta
3
- # Copyright (c) [2009-2012] VMware, Inc. All Rights Reserved.
2
+ # Cloud Foundry
3
+ # Copyright (c) [2009-2014] Pivotal Software, Inc. All Rights Reserved.
4
4
  #
5
5
  # This product is licensed to you under the Apache License, Version 2.0 (the "License").
6
6
  # You may not use this product except in compliance with the License.
data/lib/cli/user.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  #--
2
- # Cloud Foundry 2012.02.03 Beta
3
- # Copyright (c) [2009-2012] VMware, Inc. All Rights Reserved.
2
+ # Cloud Foundry
3
+ # Copyright (c) [2009-2014] Pivotal Software, Inc. All Rights Reserved.
4
4
  #
5
5
  # This product is licensed to you under the Apache License, Version 2.0 (the "License").
6
6
  # You may not use this product except in compliance with the License.
data/lib/cli/version.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  #--
2
- # Cloud Foundry 2012.02.03 Beta
3
- # Copyright (c) [2009-2012] VMware, Inc. All Rights Reserved.
2
+ # Cloud Foundry
3
+ # Copyright (c) [2009-2014] Pivotal Software, Inc. All Rights Reserved.
4
4
  #
5
5
  # This product is licensed to you under the Apache License, Version 2.0 (the "License").
6
6
  # You may not use this product except in compliance with the License.
@@ -14,6 +14,6 @@
14
14
  # Cloud Foundry namespace
15
15
  module CF
16
16
  module UAA
17
- CLI_VERSION = "3.0.0"
17
+ CLI_VERSION = "3.1.0"
18
18
  end
19
19
  end
data/lib/stub/scim.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  #--
2
- # Cloud Foundry 2012.02.03 Beta
3
- # Copyright (c) [2009-2012] VMware, Inc. All Rights Reserved.
2
+ # Cloud Foundry
3
+ # Copyright (c) [2009-2014] Pivotal Software, Inc. All Rights Reserved.
4
4
  #
5
5
  # This product is licensed to you under the Apache License, Version 2.0 (the "License").
6
6
  # You may not use this product except in compliance with the License.
@@ -61,7 +61,7 @@ class StubScim
61
61
  :authorized_grant_types, :scope, :autoapprove,
62
62
  :access_token_validity, :refresh_token_validity, :redirect_uri,
63
63
  :'signup_redirect_url'].to_set,
64
- group: [*COMMON_ATTRS, :displayname, :members, :writers, :readers].to_set }
64
+ group: [*COMMON_ATTRS, :displayname, :members, :writers, :readers, :external_groups].to_set }
65
65
  VISIBLE_ATTRS = {user: Set.new(LEGAL_ATTRS[:user] - HIDDEN_ATTRS),
66
66
  client: Set.new(LEGAL_ATTRS[:client] - HIDDEN_ATTRS),
67
67
  group: Set.new(LEGAL_ATTRS[:group] - HIDDEN_ATTRS)}
@@ -279,6 +279,30 @@ class StubScim
279
279
  [objs, total]
280
280
  end
281
281
 
282
+ def add_group_mapping(external_group, group_id, group_name)
283
+ group = group_id ? ref_by_id(group_id, :group) : ref_by_name(group_name, :group)
284
+ return unless group
285
+ (group[:external_groups] ||= Set.new) << external_group
286
+ group
287
+ end
288
+
289
+ def delete_group_mapping(group_id, external_group)
290
+ raise NotFound unless group = ref_by_id(group_id, :group)
291
+ raise NotFound unless group[:external_groups] && group[:external_groups].include?(external_group)
292
+ group[:external_groups].delete(external_group)
293
+ end
294
+
295
+ def get_group_mappings
296
+ group_mappings = []
297
+ @things_by_id.each do |id, thing|
298
+ if thing[:rtype] == :group
299
+ thing[:external_groups].each do |external_group|
300
+ group_mappings << { groupid: thing[:id], displayname: thing[:displayname], externalgroup: external_group }
301
+ end if thing[:external_groups]
302
+ end
303
+ end unless @things_by_id.empty?
304
+ group_mappings
305
+ end
282
306
  end
283
307
 
284
308
  class ScimFilter
data/lib/stub/server.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  #--
2
- # Cloud Foundry 2012.02.03 Beta
3
- # Copyright (c) [2009-2012] VMware, Inc. All Rights Reserved.
2
+ # Cloud Foundry
3
+ # Copyright (c) [2009-2014] Pivotal Software, Inc. All Rights Reserved.
4
4
  #
5
5
  # This product is licensed to you under the Apache License, Version 2.0 (the "License").
6
6
  # You may not use this product except in compliance with the License.
data/lib/stub/uaa.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  #--
2
- # Cloud Foundry 2012.02.03 Beta
3
- # Copyright (c) [2009-2012] VMware, Inc. All Rights Reserved.
2
+ # Cloud Foundry
3
+ # Copyright (c) [2009-2014] Pivotal Software, Inc. All Rights Reserved.
4
4
  #
5
5
  # This product is licensed to you under the Apache License, Version 2.0 (the "License").
6
6
  # You may not use this product except in compliance with the License.
@@ -424,6 +424,44 @@ class StubUAAConn < Stub::Base
424
424
  end
425
425
  end
426
426
 
427
+ route :post, %r{^/Groups/External$}, "content-type" => %r{application/json} do
428
+ json = Util.json_parse(request.body, :down)
429
+ external_group = json["externalgroup"]
430
+ group_name = json["displayname"]
431
+ group_id = json["groupid"]
432
+ group = server.scim.add_group_mapping(external_group, group_id, group_name)
433
+ reply_in_kind(displayName: group[:displayname], externalGroup: external_group, groupId: group[:id])
434
+ end
435
+
436
+ route :get, %r{^/Groups/External/list(\?|$)(.*)} do
437
+ return unless valid_token("scim.read")
438
+
439
+ query_params = CGI::parse(match[2])
440
+
441
+ start_index_param = query_params["startIndex"].first
442
+ start_index = start_index_param.empty? ? 1 : start_index_param.to_i
443
+
444
+ count_param = query_params["count"].first
445
+ count = count_param.empty? ? 100 : count_param.to_i
446
+
447
+ group_mappings = server.scim.get_group_mappings
448
+ paginated_group_mappings = group_mappings.slice([start_index,1].max - 1, count)
449
+
450
+ reply_in_kind(resources: paginated_group_mappings, itemsPerPage: count, startIndex: start_index, totalResults: group_mappings.length)
451
+ end
452
+
453
+ route :delete, %r{^/Groups/External/id/([^/]+)/([^/]+)$} do
454
+ return unless valid_token("scim.write")
455
+
456
+ group_id = match[1]
457
+ external_group = match[2]
458
+ begin
459
+ server.scim.delete_group_mapping(group_id, external_group)
460
+ rescue NotFound
461
+ not_found("Mapping for group ID #{match[1]} and external group #{match[2]}")
462
+ end
463
+ end
464
+
427
465
  def sanitize_int(arg, default, min, max = nil)
428
466
  return default if arg.nil?
429
467
  return unless arg.to_i.to_s == arg && (i = arg.to_i) >= min
@@ -1,6 +1,6 @@
1
1
  #--
2
- # Cloud Foundry 2012.02.03 Beta
3
- # Copyright (c) [2009-2012] VMware, Inc. All Rights Reserved.
2
+ # Cloud Foundry
3
+ # Copyright (c) [2009-2014] Pivotal Software, Inc. All Rights Reserved.
4
4
  #
5
5
  # This product is licensed to you under the Apache License, Version 2.0 (the "License").
6
6
  # You may not use this product except in compliance with the License.
@@ -1,6 +1,6 @@
1
1
  #--
2
- # Cloud Foundry 2012.02.03 Beta
3
- # Copyright (c) [2009-2012] VMware, Inc. All Rights Reserved.
2
+ # Cloud Foundry
3
+ # Copyright (c) [2009-2014] Pivotal Software, Inc. All Rights Reserved.
4
4
  #
5
5
  # This product is licensed to you under the Apache License, Version 2.0 (the "License").
6
6
  # You may not use this product except in compliance with the License.
@@ -12,7 +12,7 @@
12
12
  #++
13
13
 
14
14
  require 'spec_helper'
15
- require 'cli'
15
+ require 'uaac_cli'
16
16
 
17
17
  module CF::UAA
18
18
 
data/spec/common_spec.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  #--
2
- # Cloud Foundry 2012.02.03 Beta
3
- # Copyright (c) [2009-2012] VMware, Inc. All Rights Reserved.
2
+ # Cloud Foundry
3
+ # Copyright (c) [2009-2014] Pivotal Software, Inc. All Rights Reserved.
4
4
  #
5
5
  # This product is licensed to you under the Apache License, Version 2.0 (the "License").
6
6
  # You may not use this product except in compliance with the License.
@@ -13,7 +13,7 @@
13
13
 
14
14
  require 'spec_helper'
15
15
  require 'stringio'
16
- require 'cli'
16
+ require 'uaac_cli'
17
17
 
18
18
  module CF::UAA
19
19
 
data/spec/curl_spec.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  #--
2
- # Cloud Foundry 2012.02.03 Beta
3
- # Copyright (c) [2009-2012] VMware, Inc. All Rights Reserved.
2
+ # Cloud Foundry
3
+ # Copyright (c) [2009-2014] Pivotal Software, Inc. All Rights Reserved.
4
4
  #
5
5
  # This product is licensed to you under the Apache License, Version 2.0 (the "License").
6
6
  # You may not use this product except in compliance with the License.
@@ -12,7 +12,7 @@
12
12
  #++
13
13
 
14
14
  require 'spec_helper'
15
- require 'cli'
15
+ require 'uaac_cli'
16
16
 
17
17
  module CF::UAA
18
18
  describe CurlCli do
data/spec/group_spec.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  #--
2
- # Cloud Foundry 2012.02.03 Beta
3
- # Copyright (c) [2009-2012] VMware, Inc. All Rights Reserved.
2
+ # Cloud Foundry
3
+ # Copyright (c) [2009-2014] Pivotal Software, Inc. All Rights Reserved.
4
4
  #
5
5
  # This product is licensed to you under the Apache License, Version 2.0 (the "License").
6
6
  # You may not use this product except in compliance with the License.
@@ -12,7 +12,7 @@
12
12
  #++
13
13
 
14
14
  require 'spec_helper'
15
- require 'cli'
15
+ require 'uaac_cli'
16
16
 
17
17
  module CF::UAA
18
18
 
@@ -114,7 +114,6 @@ describe GroupCli do
114
114
  it "gets readers and writers in the group" do
115
115
  Cli.run("group get #{@test_group}").should be
116
116
  Cli.output.string.should be
117
- #puts Cli.output.string
118
117
  end
119
118
 
120
119
  it "reads members as a reader" do
@@ -163,6 +162,105 @@ describe GroupCli do
163
162
  Cli.output.string.should_not match /members/i # they should really be gone
164
163
  end
165
164
 
165
+ it "does not blow up if scope is invalid" do
166
+ Cli.run("token owner get #{@test_client} -s #{@test_secret} #{@test_user}m -p #{@test_pwd}").should be
167
+ Cli.run "group map ldap-id --name #{@test_group}"
168
+ Cli.run "group mappings"
169
+ Cli.output.string.should_not include "NoMethodError"
170
+ end
171
+
172
+ it "lists all the mappings between uaa scopes and external groups" do
173
+ Cli.run "context #{@test_client}"
174
+ Cli.run "group map ldap-id --name #{@test_group}"
175
+ Cli.output.string.should include "Successfully mapped #{@test_group} to ldap-id"
176
+
177
+ Cli.run "group mappings"
178
+ Cli.output.string.should include("#{@test_group}: ldap-id")
179
+ end
180
+
181
+ it "lists mappings between uaa scopes and external groups with pagination" do
182
+ Cli.run "context #{@test_client}"
183
+ Cli.run("group add new-group")
184
+
185
+ Cli.run "group map ldap-id --name #{@test_group}"
186
+ Cli.run "group map ldap-id-2 --name #{@test_group}"
187
+ Cli.run "group map ldap-id --name new-group"
188
+ Cli.run "group map ldap-id-3 --name #{@test_group}"
189
+ Cli.run "group map ldap-id-3 --name new-group"
190
+ Cli.run "group map ldap-id-4 --name #{@test_group}"
191
+
192
+ Cli.output.string.should include "Successfully mapped #{@test_group} to ldap-id"
193
+
194
+ Cli.run "group mappings"
195
+ Cli.output.string.should include("#{@test_group}: ldap-id", "#{@test_group}: ldap-id-2", "#{@test_group}: ldap-id-3", "#{@test_group}: ldap-id-4")
196
+
197
+ Cli.run "group mappings --start 1 --count 3"
198
+ Cli.output.string.should include("#{@test_group}: ldap-id", "#{@test_group}: ldap-id-2", "#{@test_group}: ldap-id-3")
199
+ Cli.output.string.should_not include("ldap-id-4")
200
+
201
+ Cli.run "group mappings --start 1 --count -3"
202
+ Cli.output.string.should_not include("ldap-id", "ldap-id-2", "ldap-id-3")
203
+ Cli.output.string.should include("Please enter a valid count")
204
+
205
+ Cli.run "group mappings --start 1 --count a"
206
+ Cli.output.string.should_not include("ldap-id", "ldap-id-2", "ldap-id-3")
207
+ Cli.output.string.should include("Please enter a valid count")
208
+
209
+ Cli.run "group mappings --start -1 --count 5"
210
+ Cli.output.string.should include("#{@test_group}: ldap-id", "#{@test_group}: ldap-id-2", "#{@test_group}: ldap-id-3")
211
+
212
+ Cli.run "group mappings --start a --count 1"
213
+ Cli.output.string.should_not include("ldap-id", "ldap-id-2", "ldap-id-3")
214
+ Cli.output.string.should include("Please enter a valid start index")
215
+
216
+ Cli.run "group mappings --start 2"
217
+ Cli.output.string.should include("#{@test_group}: ldap-id-2", "#{@test_group}: ldap-id-3", "#{@test_group}: ldap-id-4")
218
+
219
+ Cli.run "group mappings --count 2"
220
+ Cli.output.string.should include("#{@test_group}: ldap-id", "#{@test_group}: ldap-id-2")
221
+ end
222
+
223
+ it "maps a uaa scope to an external group" do
224
+ Cli.run "context #{@test_client}"
225
+
226
+ Cli.run "group map ldap-id"
227
+ Cli.output.string.should include "Please provide a group name or id"
228
+
229
+ Cli.run "group map --name #{@test_group}"
230
+ Cli.output.string.should include "Please provide an external group"
231
+
232
+ Cli.run "group map ldap-id --name #{@test_group}"
233
+ Cli.output.string.should include "Successfully mapped #{@test_group} to ldap-id"
234
+
235
+ Cli.run("group get #{@test_group}")
236
+ test_group_id = Cli.output.string.match(/id: ([\S]+)/)[1]
237
+ Cli.run "group map ldap-id --id #{test_group_id}"
238
+ Cli.output.string.should include "Successfully mapped #{@test_group} to ldap-id"
239
+ end
240
+
241
+ it "unmaps a uaa scope from an external group" do
242
+ Cli.run "context #{@test_client}"
243
+
244
+ Cli.run "group map ldap-id --name #{@test_group}"
245
+ Cli.output.string.should include "Successfully mapped #{@test_group} to ldap-id"
246
+
247
+ Cli.run("group get #{@test_group}")
248
+
249
+ Cli.run "group unmap"
250
+ Cli.output.string.should include "Please provide a group name and external group"
251
+
252
+ Cli.run "group unmap #{@test_group}"
253
+ Cli.output.string.should include "Please provide a group name and external group"
254
+
255
+ Cli.run "group unmap #{@test_group} ldap-id"
256
+ Cli.output.string.should include "Successfully unmapped ldap-id from #{@test_group}"
257
+
258
+ Cli.run "group unmap nonexistent_group unmapped_ldap-id"
259
+ Cli.output.string.should include "Group nonexistent_group not found"
260
+
261
+ Cli.run "group unmap #{@test_group} unmapped_ldap-id"
262
+ Cli.output.string.should include "NotFound"
263
+ end
166
264
  end
167
265
 
168
266
  end
data/spec/http_spec.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  #--
2
- # Cloud Foundry 2012.02.03 Beta
3
- # Copyright (c) [2009-2012] VMware, Inc. All Rights Reserved.
2
+ # Cloud Foundry
3
+ # Copyright (c) [2009-2014] Pivotal Software, Inc. All Rights Reserved.
4
4
  #
5
5
  # This product is licensed to you under the Apache License, Version 2.0 (the "License").
6
6
  # You may not use this product except in compliance with the License.
data/spec/info_spec.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  #--
2
- # Cloud Foundry 2012.02.03 Beta
3
- # Copyright (c) [2009-2012] VMware, Inc. All Rights Reserved.
2
+ # Cloud Foundry
3
+ # Copyright (c) [2009-2014] Pivotal Software, Inc. All Rights Reserved.
4
4
  #
5
5
  # This product is licensed to you under the Apache License, Version 2.0 (the "License").
6
6
  # You may not use this product except in compliance with the License.
@@ -12,7 +12,7 @@
12
12
  #++
13
13
 
14
14
  require 'spec_helper'
15
- require 'cli'
15
+ require 'uaac_cli'
16
16
  require 'stub/uaa'
17
17
 
18
18
  module CF::UAA
data/spec/setup_helper.rb CHANGED
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
3
  #--
4
- # Cloud Foundry 2012.02.03 Beta
5
- # Copyright (c) [2009-2012] VMware, Inc. All Rights Reserved.
4
+ # Cloud Foundry
5
+ # Copyright (c) [2009-2014] Pivotal Software, Inc. All Rights Reserved.
6
6
  #
7
7
  # This product is licensed to you under the Apache License, Version 2.0 (the "License").
8
8
  # You may not use this product except in compliance with the License.
@@ -14,7 +14,7 @@
14
14
  #++
15
15
 
16
16
  $:.unshift File.expand_path File.join __FILE__, '..', '..', 'lib'
17
- require 'cli'
17
+ require 'uaac_cli'
18
18
 
19
19
  client = ENV["UAA_CLIENT_ID"] || "admin"
20
20
  secret = ENV["UAA_CLIENT_SECRET"] || "adminsecret"
data/spec/spec_helper.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  #--
2
- # Cloud Foundry 2012.02.03 Beta
3
- # Copyright (c) [2009-2012] VMware, Inc. All Rights Reserved.
2
+ # Cloud Foundry
3
+ # Copyright (c) [2009-2014] Pivotal Software, Inc. All Rights Reserved.
4
4
  #
5
5
  # This product is licensed to you under the Apache License, Version 2.0 (the "License").
6
6
  # You may not use this product except in compliance with the License.
@@ -1,3 +1,4 @@
1
+ #--
1
2
  # Cloud Foundry
2
3
  # Copyright (c) [2009-2014] Pivotal Software, Inc. All Rights Reserved.
3
4
  #
@@ -8,11 +9,12 @@
8
9
  # separate copyright notices and license terms. Your use of these
9
10
  # subcomponents is subject to the terms and conditions of the
10
11
  # subcomponent's license, as noted in the LICENSE file.
12
+ #++
11
13
 
12
14
  require 'spec_helper'
13
15
  require 'fiber'
14
16
  require 'em-http'
15
- require 'cli'
17
+ require 'uaac_cli'
16
18
  require 'stub/server'
17
19
 
18
20
  module CF::UAA
data/spec/token_spec.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  #--
2
- # Cloud Foundry 2012.02.03 Beta
3
- # Copyright (c) [2009-2012] VMware, Inc. All Rights Reserved.
2
+ # Cloud Foundry
3
+ # Copyright (c) [2009-2014] Pivotal Software, Inc. All Rights Reserved.
4
4
  #
5
5
  # This product is licensed to you under the Apache License, Version 2.0 (the "License").
6
6
  # You may not use this product except in compliance with the License.
@@ -12,7 +12,7 @@
12
12
  #++
13
13
 
14
14
  require 'spec_helper'
15
- require 'cli'
15
+ require 'uaac_cli'
16
16
 
17
17
  module CF::UAA
18
18
 
data/spec/user_spec.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  #--
2
- # Cloud Foundry 2012.02.03 Beta
3
- # Copyright (c) [2009-2012] VMware, Inc. All Rights Reserved.
2
+ # Cloud Foundry
3
+ # Copyright (c) [2009-2014] Pivotal Software, Inc. All Rights Reserved.
4
4
  #
5
5
  # This product is licensed to you under the Apache License, Version 2.0 (the "License").
6
6
  # You may not use this product except in compliance with the License.
@@ -12,7 +12,7 @@
12
12
  #++
13
13
 
14
14
  require 'spec_helper'
15
- require 'cli'
15
+ require 'uaac_cli'
16
16
 
17
17
  module CF::UAA
18
18
 
@@ -61,6 +61,44 @@ describe UserCli do
61
61
  Cli.output.string.should =~ /#{@test_user}/
62
62
  end
63
63
 
64
+ describe "get list of users" do
65
+ before :all do
66
+ i = 1
67
+ count = 15
68
+ while i < count do
69
+ Cli.run("user add user-#{i} -p password-#{i} " +
70
+ "--emails user-#{i}@example.com --given_name user#{i} " +
71
+ "--phones 801-555-243#{i} --family_name jonES")
72
+ i +=1
73
+ end
74
+ end
75
+
76
+ after :all do
77
+ i = 1
78
+ count = 15
79
+ while i < count do
80
+ Cli.run("user delete user-#{i}")
81
+ i +=1
82
+ end
83
+ end
84
+
85
+ it "gets users with default pagination" do
86
+ Cli.run("users")
87
+ Cli.output.string.should include "user-1"
88
+ Cli.output.string.should include "user-2"
89
+ Cli.output.string.should include "user-14"
90
+ # Default page size for stub uaa is 15
91
+ Cli.output.string.should_not include "user-15"
92
+ end
93
+
94
+ it "gets count users with pagination" do
95
+ Cli.run("users --start 1 --count 3")
96
+ Cli.output.string.should include "user-1"
97
+ Cli.output.string.should include "user-2"
98
+ Cli.output.string.should_not include "user-3"
99
+ end
100
+ end
101
+
64
102
  end
65
103
 
66
104
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cf-uaac
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.0
4
+ version: 3.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dave Syer
@@ -12,7 +12,7 @@ authors:
12
12
  autorequire:
13
13
  bindir: bin
14
14
  cert_chain: []
15
- date: 2014-08-08 00:00:00.000000000 Z
15
+ date: 2014-08-26 00:00:00.000000000 Z
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
18
18
  name: bundler
@@ -104,14 +104,14 @@ dependencies:
104
104
  requirements:
105
105
  - - "~>"
106
106
  - !ruby/object:Gem::Version
107
- version: 3.0.0
107
+ version: 3.1.0
108
108
  type: :runtime
109
109
  prerelease: false
110
110
  version_requirements: !ruby/object:Gem::Requirement
111
111
  requirements:
112
112
  - - "~>"
113
113
  - !ruby/object:Gem::Version
114
- version: 3.0.0
114
+ version: 3.1.0
115
115
  - !ruby/object:Gem::Dependency
116
116
  name: highline
117
117
  requirement: !ruby/object:Gem::Requirement
@@ -229,7 +229,6 @@ files:
229
229
  - bin/uaac-completion.sh
230
230
  - bin/uaas
231
231
  - cf-uaac.gemspec
232
- - lib/cli.rb
233
232
  - lib/cli/base.rb
234
233
  - lib/cli/client_reg.rb
235
234
  - lib/cli/common.rb
@@ -245,6 +244,7 @@ files:
245
244
  - lib/stub/scim.rb
246
245
  - lib/stub/server.rb
247
246
  - lib/stub/uaa.rb
247
+ - lib/uaac_cli.rb
248
248
  - spec/client_reg_spec.rb
249
249
  - spec/common_spec.rb
250
250
  - spec/curl_spec.rb