diff --git a/lib/hammer_cli_foreman.rb b/lib/hammer_cli_foreman.rb index ef28fe13..05c33740 100644 --- a/lib/hammer_cli_foreman.rb +++ b/lib/hammer_cli_foreman.rb @@ -104,6 +104,10 @@ def self.exception_handler_class 'HammerCLIForeman::PartitionTable', 'hammer_cli_foreman/partition_table' ) + HammerCLI::MainCommand.lazy_subcommand('permissions', _("List permissions"), + 'HammerCLIForeman::Permissions', 'hammer_cli_foreman/permissions' + ) + HammerCLI::MainCommand.lazy_subcommand('report', _("Browse and read reports"), 'HammerCLIForeman::ConfigReport', 'hammer_cli_foreman/config_report', :warning => _('%{report} command is deprecated and will be removed in one of the future versions. Please use %{config_report} command instead.') % {:report => 'report', :config_report => 'config-report'} diff --git a/lib/hammer_cli_foreman/permissions.rb b/lib/hammer_cli_foreman/permissions.rb new file mode 100644 index 00000000..0f87a8a9 --- /dev/null +++ b/lib/hammer_cli_foreman/permissions.rb @@ -0,0 +1,31 @@ +require 'hammer_cli_foreman/commands' + +module HammerCLIForeman + class Permissions < HammerCLIForeman::Command + resource :permissions + + class ListCommand < HammerCLIForeman::ListCommand + output do + field :id, _("Id") + field :name, _("Name") + field :resource_type, _("Resource Type") + end + build_options + end + + class CurrentPermissions < HammerCLIForeman::ListCommand + command_name "current-permissions" + action :current_permissions + + output do + field :id, _("Id") + field :name, _("Name") + field :resource_type, _("Resource Type") + end + + build_options + end + + autoload_subcommands + end +end diff --git a/test/unit/permissions_test.rb b/test/unit/permissions_test.rb new file mode 100644 index 00000000..9f2d6559 --- /dev/null +++ b/test/unit/permissions_test.rb @@ -0,0 +1,43 @@ + +require File.join(File.dirname(__FILE__), 'test_helper') +require 'hammer_cli_foreman/permissions' + +describe HammerCLIForeman::Permissions do + include CommandTestHelper + + let(:cmd) { HammerCLIForeman::Permissions } + + describe 'current-permissions' do + it "is a registered subcommand" do + _(cmd.find_subcommand('current-permissions')).wont_be_nil + end + + describe "configuration" do + let(:subcommand_def) { cmd.find_subcommand('current-permissions') } + let(:subcommand_class) { subcommand_def.subcommand_class } + let(:subcommand_instance) { subcommand_class.new(nil, {}) } + + it "has the correct action" do + _(subcommand_instance.action).must_equal :current_permissions + end + + it "defines an 'Id' column" do + fields = subcommand_instance.output_definition.fields + field = fields.find { |f| f.label == "Id" } + _(field).wont_be_nil + end + + it "defines a 'Name' column" do + fields = subcommand_instance.output_definition.fields + field = fields.find { |f| f.label == "Name" } + _(field).wont_be_nil + end + + it "defines a 'Resource Type' column" do + fields = subcommand_instance.output_definition.fields + field = fields.find { |f| f.label == "Resource Type" } + _(field).wont_be_nil + end + end + end +end