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.
Files changed (61) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/foreman_openscap/locale/de/foreman_openscap.js +5 -5
  3. data/app/assets/javascripts/foreman_openscap/locale/en/foreman_openscap.js +1 -1
  4. data/app/assets/javascripts/foreman_openscap/locale/en_GB/foreman_openscap.js +1 -1
  5. data/app/assets/javascripts/foreman_openscap/locale/es/foreman_openscap.js +1 -1
  6. data/app/assets/javascripts/foreman_openscap/locale/fr/foreman_openscap.js +26 -24
  7. data/app/assets/javascripts/foreman_openscap/locale/gl/foreman_openscap.js +1 -1
  8. data/app/assets/javascripts/foreman_openscap/locale/it/foreman_openscap.js +1 -1
  9. data/app/assets/javascripts/foreman_openscap/locale/ja/foreman_openscap.js +26 -28
  10. data/app/assets/javascripts/foreman_openscap/locale/ka/foreman_openscap.js +5 -5
  11. data/app/assets/javascripts/foreman_openscap/locale/ko/foreman_openscap.js +26 -28
  12. data/app/assets/javascripts/foreman_openscap/locale/pt_BR/foreman_openscap.js +1 -1
  13. data/app/assets/javascripts/foreman_openscap/locale/ru/foreman_openscap.js +1 -1
  14. data/app/assets/javascripts/foreman_openscap/locale/sv_SE/foreman_openscap.js +1 -1
  15. data/app/assets/javascripts/foreman_openscap/locale/zh_CN/foreman_openscap.js +22 -24
  16. data/app/assets/javascripts/foreman_openscap/locale/zh_TW/foreman_openscap.js +1 -1
  17. data/app/models/concerns/foreman_openscap/host_extensions.rb +10 -4
  18. data/app/models/concerns/foreman_openscap/hostgroup_extensions.rb +7 -0
  19. data/app/models/foreman_openscap/asset.rb +21 -1
  20. data/app/models/foreman_openscap/compliance_status.rb +19 -7
  21. data/app/models/foreman_openscap/policy.rb +43 -3
  22. data/app/services/foreman_openscap/compliance_status_resetter.rb +26 -0
  23. data/lib/foreman_openscap/version.rb +1 -1
  24. data/locale/de/LC_MESSAGES/foreman_openscap.mo +0 -0
  25. data/locale/de/foreman_openscap.po +5 -5
  26. data/locale/en/LC_MESSAGES/foreman_openscap.mo +0 -0
  27. data/locale/en/foreman_openscap.po +1 -1
  28. data/locale/en_GB/LC_MESSAGES/foreman_openscap.mo +0 -0
  29. data/locale/en_GB/foreman_openscap.po +1 -1
  30. data/locale/es/LC_MESSAGES/foreman_openscap.mo +0 -0
  31. data/locale/es/foreman_openscap.po +1 -1
  32. data/locale/foreman_openscap.pot +2 -2
  33. data/locale/fr/LC_MESSAGES/foreman_openscap.mo +0 -0
  34. data/locale/fr/foreman_openscap.po +26 -24
  35. data/locale/gl/LC_MESSAGES/foreman_openscap.mo +0 -0
  36. data/locale/gl/foreman_openscap.po +1 -1
  37. data/locale/it/LC_MESSAGES/foreman_openscap.mo +0 -0
  38. data/locale/it/foreman_openscap.po +1 -1
  39. data/locale/ja/LC_MESSAGES/foreman_openscap.mo +0 -0
  40. data/locale/ja/foreman_openscap.po +26 -28
  41. data/locale/ka/LC_MESSAGES/foreman_openscap.mo +0 -0
  42. data/locale/ka/foreman_openscap.po +5 -5
  43. data/locale/ko/LC_MESSAGES/foreman_openscap.mo +0 -0
  44. data/locale/ko/foreman_openscap.po +26 -28
  45. data/locale/pt_BR/LC_MESSAGES/foreman_openscap.mo +0 -0
  46. data/locale/pt_BR/foreman_openscap.po +1 -1
  47. data/locale/ru/LC_MESSAGES/foreman_openscap.mo +0 -0
  48. data/locale/ru/foreman_openscap.po +1 -1
  49. data/locale/sv_SE/LC_MESSAGES/foreman_openscap.mo +0 -0
  50. data/locale/sv_SE/foreman_openscap.po +1 -1
  51. data/locale/zh_CN/LC_MESSAGES/foreman_openscap.mo +0 -0
  52. data/locale/zh_CN/foreman_openscap.po +22 -24
  53. data/locale/zh_TW/LC_MESSAGES/foreman_openscap.mo +0 -0
  54. data/locale/zh_TW/foreman_openscap.po +1 -1
  55. data/test/test_plugin_helper.rb +7 -0
  56. data/test/unit/compliance_status_resetter_test.rb +48 -0
  57. data/test/unit/compliance_status_test.rb +53 -4
  58. data/test/unit/concerns/host_extensions_test.rb +55 -0
  59. data/test/unit/concerns/hostgroup_extensions_test.rb +64 -0
  60. data/test/unit/policy_test.rb +90 -0
  61. 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
@@ -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.2
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