From 304a0002b74c40b23d3bb2b8415d3b2f9dc78b81 Mon Sep 17 00:00:00 2001 From: kmalyjur <78563507+kmalyjur@users.noreply.github.com> Date: Mon, 29 Dec 2025 12:15:01 -0500 Subject: [PATCH] Fixes - Add 'permissions' command for viewing current user permissions --- lib/hammer_cli_foreman.rb | 4 +++ lib/hammer_cli_foreman/permissions.rb | 31 +++++++++++++++++++ test/unit/permissions_test.rb | 43 +++++++++++++++++++++++++++ 3 files changed, 78 insertions(+) create mode 100644 lib/hammer_cli_foreman/permissions.rb create mode 100644 test/unit/permissions_test.rb diff --git a/lib/hammer_cli_foreman.rb b/lib/hammer_cli_foreman.rb index ef28fe132..05c337407 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 000000000..0f87a8a97 --- /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 000000000..9f2d6559b --- /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