foreman_openscap 13.1.2 → 13.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/app/assets/javascripts/foreman_openscap/locale/de/foreman_openscap.js +5 -5
- data/app/assets/javascripts/foreman_openscap/locale/en/foreman_openscap.js +1 -1
- data/app/assets/javascripts/foreman_openscap/locale/en_GB/foreman_openscap.js +1 -1
- data/app/assets/javascripts/foreman_openscap/locale/es/foreman_openscap.js +1 -1
- data/app/assets/javascripts/foreman_openscap/locale/fr/foreman_openscap.js +26 -24
- data/app/assets/javascripts/foreman_openscap/locale/gl/foreman_openscap.js +1 -1
- data/app/assets/javascripts/foreman_openscap/locale/it/foreman_openscap.js +1 -1
- data/app/assets/javascripts/foreman_openscap/locale/ja/foreman_openscap.js +26 -28
- data/app/assets/javascripts/foreman_openscap/locale/ka/foreman_openscap.js +5 -5
- data/app/assets/javascripts/foreman_openscap/locale/ko/foreman_openscap.js +26 -28
- data/app/assets/javascripts/foreman_openscap/locale/pt_BR/foreman_openscap.js +1 -1
- data/app/assets/javascripts/foreman_openscap/locale/ru/foreman_openscap.js +1 -1
- data/app/assets/javascripts/foreman_openscap/locale/sv_SE/foreman_openscap.js +1 -1
- data/app/assets/javascripts/foreman_openscap/locale/zh_CN/foreman_openscap.js +22 -24
- data/app/assets/javascripts/foreman_openscap/locale/zh_TW/foreman_openscap.js +1 -1
- data/app/models/concerns/foreman_openscap/host_extensions.rb +10 -4
- data/app/models/concerns/foreman_openscap/hostgroup_extensions.rb +7 -0
- data/app/models/foreman_openscap/asset.rb +21 -1
- data/app/models/foreman_openscap/compliance_status.rb +19 -7
- data/app/models/foreman_openscap/policy.rb +43 -3
- data/app/services/foreman_openscap/compliance_status_resetter.rb +26 -0
- data/lib/foreman_openscap/version.rb +1 -1
- data/locale/de/LC_MESSAGES/foreman_openscap.mo +0 -0
- data/locale/de/foreman_openscap.po +5 -5
- data/locale/en/LC_MESSAGES/foreman_openscap.mo +0 -0
- data/locale/en/foreman_openscap.po +1 -1
- data/locale/en_GB/LC_MESSAGES/foreman_openscap.mo +0 -0
- data/locale/en_GB/foreman_openscap.po +1 -1
- data/locale/es/LC_MESSAGES/foreman_openscap.mo +0 -0
- data/locale/es/foreman_openscap.po +1 -1
- data/locale/foreman_openscap.pot +2 -2
- data/locale/fr/LC_MESSAGES/foreman_openscap.mo +0 -0
- data/locale/fr/foreman_openscap.po +26 -24
- data/locale/gl/LC_MESSAGES/foreman_openscap.mo +0 -0
- data/locale/gl/foreman_openscap.po +1 -1
- data/locale/it/LC_MESSAGES/foreman_openscap.mo +0 -0
- data/locale/it/foreman_openscap.po +1 -1
- data/locale/ja/LC_MESSAGES/foreman_openscap.mo +0 -0
- data/locale/ja/foreman_openscap.po +26 -28
- data/locale/ka/LC_MESSAGES/foreman_openscap.mo +0 -0
- data/locale/ka/foreman_openscap.po +5 -5
- data/locale/ko/LC_MESSAGES/foreman_openscap.mo +0 -0
- data/locale/ko/foreman_openscap.po +26 -28
- data/locale/pt_BR/LC_MESSAGES/foreman_openscap.mo +0 -0
- data/locale/pt_BR/foreman_openscap.po +1 -1
- data/locale/ru/LC_MESSAGES/foreman_openscap.mo +0 -0
- data/locale/ru/foreman_openscap.po +1 -1
- data/locale/sv_SE/LC_MESSAGES/foreman_openscap.mo +0 -0
- data/locale/sv_SE/foreman_openscap.po +1 -1
- data/locale/zh_CN/LC_MESSAGES/foreman_openscap.mo +0 -0
- data/locale/zh_CN/foreman_openscap.po +22 -24
- data/locale/zh_TW/LC_MESSAGES/foreman_openscap.mo +0 -0
- data/locale/zh_TW/foreman_openscap.po +1 -1
- data/test/test_plugin_helper.rb +7 -0
- data/test/unit/compliance_status_resetter_test.rb +48 -0
- data/test/unit/compliance_status_test.rb +53 -4
- data/test/unit/concerns/host_extensions_test.rb +55 -0
- data/test/unit/concerns/hostgroup_extensions_test.rb +64 -0
- data/test/unit/policy_test.rb +90 -0
- metadata +4 -1
|
@@ -7,4 +7,68 @@ class HostgroupExtensionsTest < ActiveSupport::TestCase
|
|
|
7
7
|
asset_scope = ::ForemanOpenscap::Asset.where(:assetable_id => hostgroup.id, :assetable_type => 'Hostgroup')
|
|
8
8
|
assert_difference("asset_scope.count", -3) { hostgroup.destroy }
|
|
9
9
|
end
|
|
10
|
+
|
|
11
|
+
test "should reset compliance status for subtree when assigning policy through hostgroup asset policies" do
|
|
12
|
+
parent = FactoryBot.create(:hostgroup)
|
|
13
|
+
child = FactoryBot.create(:hostgroup, :ancestry => parent.id.to_s)
|
|
14
|
+
parent_host = FactoryBot.create(:compliance_host, :hostgroup_id => parent.id)
|
|
15
|
+
child_host = FactoryBot.create(:compliance_host, :hostgroup_id => child.id)
|
|
16
|
+
policy = FactoryBot.create(:policy)
|
|
17
|
+
asset = FactoryBot.create(:asset, :assetable_id => parent.id, :assetable_type => 'Hostgroup')
|
|
18
|
+
|
|
19
|
+
set_compliance_status(parent_host, ForemanOpenscap::ComplianceStatus::COMPLIANT)
|
|
20
|
+
set_compliance_status(child_host, ForemanOpenscap::ComplianceStatus::COMPLIANT)
|
|
21
|
+
|
|
22
|
+
asset.policies = [policy]
|
|
23
|
+
|
|
24
|
+
assert_equal ForemanOpenscap::ComplianceStatus::INCONCLUSIVE, parent_host.reload.compliance_status
|
|
25
|
+
assert_equal ForemanOpenscap::ComplianceStatus::INCONCLUSIVE, child_host.reload.compliance_status
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
test "should reset compliance status for subtree when removing policy through hostgroup asset policies" do
|
|
29
|
+
parent = FactoryBot.create(:hostgroup)
|
|
30
|
+
child = FactoryBot.create(:hostgroup, :ancestry => parent.id.to_s)
|
|
31
|
+
parent_host = FactoryBot.create(:compliance_host, :hostgroup_id => parent.id)
|
|
32
|
+
child_host = FactoryBot.create(:compliance_host, :hostgroup_id => child.id)
|
|
33
|
+
policy = FactoryBot.create(:policy)
|
|
34
|
+
asset = FactoryBot.create(:asset, :assetable_id => parent.id, :assetable_type => 'Hostgroup')
|
|
35
|
+
asset.policies = [policy]
|
|
36
|
+
|
|
37
|
+
set_compliance_status(parent_host, ForemanOpenscap::ComplianceStatus::COMPLIANT)
|
|
38
|
+
set_compliance_status(child_host, ForemanOpenscap::ComplianceStatus::COMPLIANT)
|
|
39
|
+
|
|
40
|
+
asset.policies = []
|
|
41
|
+
|
|
42
|
+
assert_equal ForemanOpenscap::ComplianceStatus::INCONCLUSIVE, parent_host.reload.compliance_status
|
|
43
|
+
assert_equal ForemanOpenscap::ComplianceStatus::INCONCLUSIVE, child_host.reload.compliance_status
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
test "should reset compliance status for subtree when hostgroup is reparented" do
|
|
47
|
+
old_parent = FactoryBot.create(:hostgroup)
|
|
48
|
+
new_parent = FactoryBot.create(:hostgroup)
|
|
49
|
+
moved = FactoryBot.create(:hostgroup, :ancestry => old_parent.id.to_s)
|
|
50
|
+
child = FactoryBot.create(:hostgroup, :ancestry => "#{old_parent.id}/#{moved.id}")
|
|
51
|
+
moved_host = FactoryBot.create(:compliance_host, :hostgroup_id => moved.id)
|
|
52
|
+
child_host = FactoryBot.create(:compliance_host, :hostgroup_id => child.id)
|
|
53
|
+
unrelated_host = FactoryBot.create(:compliance_host, :hostgroup_id => old_parent.id)
|
|
54
|
+
[moved_host, child_host, unrelated_host].each do |host|
|
|
55
|
+
set_compliance_status(host, ForemanOpenscap::ComplianceStatus::COMPLIANT)
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
moved.update!(:parent_id => new_parent.id)
|
|
59
|
+
|
|
60
|
+
assert_equal ForemanOpenscap::ComplianceStatus::INCONCLUSIVE, moved_host.reload.compliance_status
|
|
61
|
+
assert_equal ForemanOpenscap::ComplianceStatus::INCONCLUSIVE, child_host.reload.compliance_status
|
|
62
|
+
assert_equal ForemanOpenscap::ComplianceStatus::COMPLIANT, unrelated_host.reload.compliance_status
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
test "should not reset compliance status for hostgroup save without ancestry change" do
|
|
66
|
+
hostgroup = FactoryBot.create(:hostgroup)
|
|
67
|
+
host = FactoryBot.create(:compliance_host, :hostgroup_id => hostgroup.id)
|
|
68
|
+
set_compliance_status(host, ForemanOpenscap::ComplianceStatus::COMPLIANT)
|
|
69
|
+
|
|
70
|
+
hostgroup.update!(:name => 'renamed')
|
|
71
|
+
|
|
72
|
+
assert_equal ForemanOpenscap::ComplianceStatus::COMPLIANT, host.reload.compliance_status
|
|
73
|
+
end
|
|
10
74
|
end
|
data/test/unit/policy_test.rb
CHANGED
|
@@ -46,6 +46,90 @@ class PolicyTest < ActiveSupport::TestCase
|
|
|
46
46
|
assert_equal 1, policy.hosts.count
|
|
47
47
|
end
|
|
48
48
|
|
|
49
|
+
test "should reset compliance status when assigning policy to host" do
|
|
50
|
+
host = FactoryBot.create(:compliance_host)
|
|
51
|
+
unrelated_host = FactoryBot.create(:compliance_host)
|
|
52
|
+
set_compliance_status(host, ForemanOpenscap::ComplianceStatus::COMPLIANT)
|
|
53
|
+
set_compliance_status(unrelated_host, ForemanOpenscap::ComplianceStatus::COMPLIANT)
|
|
54
|
+
policy = FactoryBot.create(:policy, :scap_content => @scap_content, :scap_content_profile => @scap_profile)
|
|
55
|
+
|
|
56
|
+
policy.host_ids = [host.id]
|
|
57
|
+
policy.save!
|
|
58
|
+
|
|
59
|
+
assert_equal ForemanOpenscap::ComplianceStatus::INCONCLUSIVE, compliance_status_for(host)
|
|
60
|
+
assert_equal ForemanOpenscap::ComplianceStatus::COMPLIANT, compliance_status_for(unrelated_host)
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
test "should create inconclusive compliance status when assigning policy to host without status" do
|
|
64
|
+
host = FactoryBot.create(:compliance_host)
|
|
65
|
+
policy = FactoryBot.create(:policy, :scap_content => @scap_content, :scap_content_profile => @scap_profile)
|
|
66
|
+
|
|
67
|
+
policy.host_ids = [host.id]
|
|
68
|
+
policy.save!
|
|
69
|
+
|
|
70
|
+
assert_equal ForemanOpenscap::ComplianceStatus::INCONCLUSIVE, compliance_status_for(host)
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
test "should reset compliance status when removing policy from host assignment" do
|
|
74
|
+
host = FactoryBot.create(:compliance_host)
|
|
75
|
+
asset = FactoryBot.create(:asset, :assetable_id => host.id, :assetable_type => 'Host::Base')
|
|
76
|
+
policy = FactoryBot.create(:policy, :assets => [asset], :scap_content => @scap_content, :scap_content_profile => @scap_profile)
|
|
77
|
+
set_compliance_status(host, ForemanOpenscap::ComplianceStatus::COMPLIANT)
|
|
78
|
+
|
|
79
|
+
policy.host_ids = []
|
|
80
|
+
policy.save!
|
|
81
|
+
|
|
82
|
+
assert_equal ForemanOpenscap::ComplianceStatus::INCONCLUSIVE, compliance_status_for(host)
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
test "should reset compliance status when unassigning host from policy" do
|
|
86
|
+
host = FactoryBot.create(:compliance_host)
|
|
87
|
+
asset = FactoryBot.create(:asset, :assetable_id => host.id, :assetable_type => 'Host::Base')
|
|
88
|
+
policy = FactoryBot.create(:policy, :assets => [asset], :scap_content => @scap_content, :scap_content_profile => @scap_profile)
|
|
89
|
+
set_compliance_status(host, ForemanOpenscap::ComplianceStatus::COMPLIANT)
|
|
90
|
+
|
|
91
|
+
policy.unassign_hosts([host])
|
|
92
|
+
|
|
93
|
+
assert_equal ForemanOpenscap::ComplianceStatus::INCONCLUSIVE, compliance_status_for(host)
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
test "should reset compliance status for hostgroup subtree when assigning policy to hostgroup" do
|
|
97
|
+
parent = FactoryBot.create(:hostgroup)
|
|
98
|
+
child = FactoryBot.create(:hostgroup, :ancestry => parent.id.to_s)
|
|
99
|
+
parent_host = FactoryBot.create(:compliance_host, :hostgroup_id => parent.id)
|
|
100
|
+
child_host = FactoryBot.create(:compliance_host, :hostgroup_id => child.id)
|
|
101
|
+
unrelated_host = FactoryBot.create(:compliance_host)
|
|
102
|
+
[parent_host, child_host, unrelated_host].each do |host|
|
|
103
|
+
set_compliance_status(host, ForemanOpenscap::ComplianceStatus::COMPLIANT)
|
|
104
|
+
end
|
|
105
|
+
policy = FactoryBot.create(:policy, :scap_content => @scap_content, :scap_content_profile => @scap_profile)
|
|
106
|
+
|
|
107
|
+
policy.hostgroup_ids = [parent.id]
|
|
108
|
+
policy.save!
|
|
109
|
+
|
|
110
|
+
assert_equal ForemanOpenscap::ComplianceStatus::INCONCLUSIVE, compliance_status_for(parent_host)
|
|
111
|
+
assert_equal ForemanOpenscap::ComplianceStatus::INCONCLUSIVE, compliance_status_for(child_host)
|
|
112
|
+
assert_equal ForemanOpenscap::ComplianceStatus::COMPLIANT, compliance_status_for(unrelated_host)
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
test "should reset compliance status for hostgroup subtree when removing policy from hostgroup" do
|
|
116
|
+
parent = FactoryBot.create(:hostgroup)
|
|
117
|
+
child = FactoryBot.create(:hostgroup, :ancestry => parent.id.to_s)
|
|
118
|
+
parent_host = FactoryBot.create(:compliance_host, :hostgroup_id => parent.id)
|
|
119
|
+
child_host = FactoryBot.create(:compliance_host, :hostgroup_id => child.id)
|
|
120
|
+
asset = FactoryBot.create(:asset, :assetable_id => parent.id, :assetable_type => 'Hostgroup')
|
|
121
|
+
policy = FactoryBot.create(:policy, :assets => [asset], :scap_content => @scap_content, :scap_content_profile => @scap_profile)
|
|
122
|
+
[parent_host, child_host].each do |host|
|
|
123
|
+
set_compliance_status(host, ForemanOpenscap::ComplianceStatus::COMPLIANT)
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
policy.hostgroup_ids = []
|
|
127
|
+
policy.save!
|
|
128
|
+
|
|
129
|
+
assert_equal ForemanOpenscap::ComplianceStatus::INCONCLUSIVE, compliance_status_for(parent_host)
|
|
130
|
+
assert_equal ForemanOpenscap::ComplianceStatus::INCONCLUSIVE, compliance_status_for(child_host)
|
|
131
|
+
end
|
|
132
|
+
|
|
49
133
|
test "should delete assets when unassigning hosts" do
|
|
50
134
|
host1 = FactoryBot.create(:compliance_host)
|
|
51
135
|
host2 = FactoryBot.create(:compliance_host)
|
|
@@ -331,4 +415,10 @@ class PolicyTest < ActiveSupport::TestCase
|
|
|
331
415
|
assert_equal policy.deploy_by, 'manual'
|
|
332
416
|
assert_equal policy.name, name
|
|
333
417
|
end
|
|
418
|
+
|
|
419
|
+
private
|
|
420
|
+
|
|
421
|
+
def compliance_status_for(host)
|
|
422
|
+
ForemanOpenscap::ComplianceStatus.find_by(:host_id => host.id).try(:status)
|
|
423
|
+
end
|
|
334
424
|
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: foreman_openscap
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 13.1.
|
|
4
|
+
version: 13.1.3
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- slukasik@redhat.com
|
|
@@ -106,6 +106,7 @@ files:
|
|
|
106
106
|
- app/services/foreman_openscap/client_config/base.rb
|
|
107
107
|
- app/services/foreman_openscap/client_config/manual.rb
|
|
108
108
|
- app/services/foreman_openscap/client_config/puppet.rb
|
|
109
|
+
- app/services/foreman_openscap/compliance_status_resetter.rb
|
|
109
110
|
- app/services/foreman_openscap/config_name_service.rb
|
|
110
111
|
- app/services/foreman_openscap/host_report_dashboard/data.rb
|
|
111
112
|
- app/services/foreman_openscap/hostgroup_overrider.rb
|
|
@@ -349,6 +350,7 @@ files:
|
|
|
349
350
|
- test/test_plugin_helper.rb
|
|
350
351
|
- test/unit/arf_report_status_calculator_test.rb
|
|
351
352
|
- test/unit/arf_report_test.rb
|
|
353
|
+
- test/unit/compliance_status_resetter_test.rb
|
|
352
354
|
- test/unit/compliance_status_test.rb
|
|
353
355
|
- test/unit/concerns/bookmark_controller_validator_extensions_test.rb
|
|
354
356
|
- test/unit/concerns/host_extensions_test.rb
|
|
@@ -457,6 +459,7 @@ test_files:
|
|
|
457
459
|
- test/test_plugin_helper.rb
|
|
458
460
|
- test/unit/arf_report_status_calculator_test.rb
|
|
459
461
|
- test/unit/arf_report_test.rb
|
|
462
|
+
- test/unit/compliance_status_resetter_test.rb
|
|
460
463
|
- test/unit/compliance_status_test.rb
|
|
461
464
|
- test/unit/concerns/bookmark_controller_validator_extensions_test.rb
|
|
462
465
|
- test/unit/concerns/host_extensions_test.rb
|