Skip to content

Commit

Permalink
Fixes #38006 - Allow extension of list of packages
Browse files Browse the repository at this point in the history
with scap contents
  • Loading branch information
adamruzicka committed Dec 3, 2024
1 parent 507d29a commit 18aef07
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 10 deletions.
21 changes: 14 additions & 7 deletions lib/foreman_openscap/bulk_upload.rb
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
6 changes: 3 additions & 3 deletions test/lib/foreman_openscap/bulk_upload_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -48,14 +48,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 18aef07

Please sign in to comment.