Skip to content

Commit

Permalink
Fixes #38006 - Allow extension of list of packages (#585)
Browse files Browse the repository at this point in the history
* Fixes #38006 - Allow extension of list of packages

with scap contents

* Refs #38006 - Make it rails7-compatible
  • Loading branch information
adamruzicka authored Dec 3, 2024
1 parent 507d29a commit 9bccb66
Show file tree
Hide file tree
Showing 4 changed files with 17 additions and 14 deletions.
2 changes: 0 additions & 2 deletions app/controllers/api/v2/compliance/scap_contents_controller.rb
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
require 'foreman_openscap/bulk_upload'

module Api::V2
module Compliance
class ScapContentsController < ::Api::V2::BaseController
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,21 +7,28 @@ def initialize
@result = OpenStruct.new(:errors => [], :results => [])
end

def files_from_guide
`rpm -ql scap-security-guide | grep ds.xml`.split
def security_guide_packages
%w(scap-security-guide)
end

def scap_guide_installed?
`rpm -qa | grep scap-security-guide`.present?
def files_from_guide(package)
`rpm -ql #{package} | grep ds.xml`.split
end

def package_installed?(package)
`rpm -qa | grep #{package}`.present?
end

def upload_from_scap_guide
unless scap_guide_installed?
@result.errors.push(_("Can't find scap-security-guide RPM, are you sure it is installed on your server?"))
package = security_guide_packages.find { |p| package_installed? p }
unless package
joined_packages = security_guide_packages.join(', ')
msg = _("Can't find %{packages} RPM(s), are you sure it is installed on your server?")
@result.errors.push(msg % {packages: joined_packages})
return @result
end

upload_from_files(files_from_guide, true)
upload_from_files(files_from_guide(package), true)
end

def upload_from_files(files_array, from_scap_guide = false)
Expand Down
1 change: 0 additions & 1 deletion lib/tasks/foreman_openscap_tasks.rake
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
# Tasks
namespace :foreman_openscap do
require 'foreman_openscap/bulk_upload'
require 'foreman_openscap/message_cleaner'

namespace :bulk_upload do
Expand Down
7 changes: 3 additions & 4 deletions test/lib/foreman_openscap/bulk_upload_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

class BulkUploadTest < ActiveSupport::TestCase
setup do
require 'foreman_openscap/bulk_upload'
ForemanOpenscap::ScapContent.all.map(&:destroy)
end

Expand Down Expand Up @@ -48,14 +47,14 @@ class BulkUploadTest < ActiveSupport::TestCase

test 'should handle case when scap security guide is not installed' do
upload = ForemanOpenscap::BulkUpload.new
upload.stubs(:scap_guide_installed?).returns(false)
upload.stubs(:package_installed?).returns(false)
res = upload.upload_from_scap_guide
assert_equal "Can't find scap-security-guide RPM, are you sure it is installed on your server?", res.errors.first
assert_equal "Can't find scap-security-guide RPM(s), are you sure it is installed on your server?", res.errors.first
end

test 'should upload files from guide' do
upload = ForemanOpenscap::BulkUpload.new
upload.stubs(:scap_guide_installed?).returns(true)
upload.stubs(:package_installed?).returns(true)
upload.stubs(:files_from_guide).returns(["#{ForemanOpenscap::Engine.root}/test/files/scap_contents/ssg-fedora-ds.xml"])
assert_difference('ForemanOpenscap::ScapContent.count', 1) do
upload.upload_from_scap_guide
Expand Down

0 comments on commit 9bccb66

Please sign in to comment.