diff options
-rw-r--r-- | knife/lib/chef/knife/user_list.rb | 13 | ||||
-rw-r--r-- | knife/spec/unit/knife/user_list_spec.rb | 27 |
2 files changed, 30 insertions, 10 deletions
diff --git a/knife/lib/chef/knife/user_list.rb b/knife/lib/chef/knife/user_list.rb index cb3b577541..b66376e8d9 100644 --- a/knife/lib/chef/knife/user_list.rb +++ b/knife/lib/chef/knife/user_list.rb @@ -34,8 +34,19 @@ class Chef long: "--with-uri", description: "Show corresponding URIs." + option :global, + short: "-g", + long: "--global", + description: "List all global users." + def run - output(format_list_for_display(Chef::UserV1.list)) + if config[:global] + results = format_list_for_display(root_rest.get("users")) + else + user_arr = rest.get("users") + results = user_arr.map { |user| user["user"]["username"] } + end + output(results) end end diff --git a/knife/spec/unit/knife/user_list_spec.rb b/knife/spec/unit/knife/user_list_spec.rb index 01013de352..24f40dc99d 100644 --- a/knife/spec/unit/knife/user_list_spec.rb +++ b/knife/spec/unit/knife/user_list_spec.rb @@ -30,15 +30,21 @@ describe Chef::Knife::UserList do } end + let(:users1) do + [{ "user" => { "username" => "user3" } }, + { "user" => { "username" => "user4" } }, + { "user" => { "username" => "user5" } }] + end + before :each do @rest = double("Chef::ServerAPI") allow(Chef::ServerAPI).to receive(:new).and_return(@rest) - allow(@rest).to receive(:get).with("users").and_return(users) end describe "with no arguments" do it "lists all non users" do - expect(knife.ui).to receive(:output).with(%w{user1 user2}) + allow(@rest).to receive(:get).with("users").and_return(users1) + expect(knife.ui).to receive(:output).with(%w{user3 user4 user5}) knife.run end @@ -47,27 +53,30 @@ describe Chef::Knife::UserList do describe "with all_users argument" do before do knife.config[:all_users] = true + allow(@rest).to receive(:get).with("users").and_return(users1) end it "lists all users including hidden users" do - expect(knife.ui).to receive(:output).with(%w{user1 user2}) + expect(knife.ui).to receive(:output).with(%w{user3 user4 user5}) knife.run end end - it "lists the users" do - expect(knife).to receive(:format_list_for_display) - knife.run - end - - describe "with options with_uri argument" do + describe "with options with_uri argument and global" do before do knife.config[:with_uri] = true + knife.config[:global] = true + allow(@rest).to receive(:get).with("users").and_return(users) end it "lists all users including hidden users" do expect(knife.ui).to receive(:output).with(users) knife.run end + + it "lists the users" do + expect(knife).to receive(:format_list_for_display) + knife.run + end end end |