foreman_openscap 0.8.3 → 0.8.4
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/controllers/api/v2/compliance/arf_reports_controller.rb +15 -6
- data/app/controllers/api/v2/compliance/policies_controller.rb +4 -2
- data/app/controllers/api/v2/compliance/scap_contents_controller.rb +3 -2
- data/app/controllers/api/v2/compliance/tailoring_files_controller.rb +3 -2
- data/app/controllers/arf_reports_controller.rb +4 -4
- data/app/controllers/policies_controller.rb +6 -5
- data/app/controllers/scap_contents_controller.rb +3 -3
- data/app/helpers/arf_report_dashboard_helper.rb +1 -1
- data/app/helpers/arf_reports_helper.rb +8 -8
- data/app/helpers/compliance_dashboard_helper.rb +0 -2
- data/app/helpers/compliance_hosts_helper.rb +7 -8
- data/app/helpers/policies_helper.rb +18 -18
- data/app/helpers/policy_dashboard_helper.rb +3 -3
- data/app/lib/proxy_api/available_proxy.rb +2 -2
- data/app/lib/proxy_api/openscap.rb +1 -1
- data/app/mailers/foreman_openscap/policy_mailer.rb +0 -2
- data/app/models/concerns/foreman_openscap/compliance_status_scoped_search.rb +7 -7
- data/app/models/concerns/foreman_openscap/data_stream_content.rb +1 -1
- data/app/models/concerns/foreman_openscap/host_extensions.rb +16 -6
- data/app/models/concerns/foreman_openscap/openscap_proxy_extensions.rb +1 -1
- data/app/models/foreman_openscap/arf_report.rb +5 -5
- data/app/models/foreman_openscap/policy.rb +6 -6
- data/app/models/foreman_openscap/scap_content.rb +2 -2
- data/app/models/foreman_openscap/tailoring_file.rb +1 -1
- data/app/services/foreman_openscap/arf_report_status_calculator.rb +0 -1
- data/app/services/foreman_openscap/host_report_dashboard/data.rb +2 -3
- data/app/services/foreman_openscap/openscap_proxy_version_check.rb +0 -1
- data/app/services/foreman_openscap/policy_dashboard/data.rb +7 -6
- data/app/services/foreman_openscap/report_dashboard/data.rb +1 -0
- data/app/views/api/v2/compliance/common/_loc.json.rabl +1 -1
- data/app/views/api/v2/compliance/common/_org.json.rabl +1 -1
- data/app/views/api/v2/compliance/policies/base.json.rabl +1 -1
- data/app/views/arf_reports/_list.html.erb +1 -1
- data/app/views/arf_reports/delete_multiple.html.erb +1 -1
- data/app/views/arf_reports/welcome.html.erb +12 -0
- data/app/views/compliance_hosts/show.html.erb +3 -1
- data/app/views/policy_dashboard/_policy_reports.html.erb +1 -1
- data/app/views/scap_contents/_list.html.erb +1 -1
- data/app/views/smart_proxies/_openscap_spool.html.erb +1 -1
- data/app/views/tailoring_files/_list.html.erb +1 -1
- data/config/routes.rb +9 -11
- data/db/migrate/20141015115511_add_arf_report_unique_constraint.rb +1 -1
- data/db/migrate/20141113221054_create_scaptimony_scap_content_profiles.rb +2 -3
- data/db/migrate/20141206211151_create_scaptimony_assets_policies.rb +1 -1
- data/db/migrate/20150115155947_add_scaptimony_scap_content_digest.rb +1 -1
- data/db/migrate/20150821100137_migrate_from_scaptimony.rb +1 -1
- data/db/migrate/20150929152345_move_arf_reports_to_reports_table.rb +0 -1
- data/db/migrate/20161223153249_add_permissions_to_arf_report.rb +2 -2
- data/db/migrate/20171016125613_add_content_title_unique_constraint.foreman_openscap.rb +6 -0
- data/lib/foreman_openscap/bulk_upload.rb +1 -1
- data/lib/foreman_openscap/engine.rb +54 -56
- data/lib/foreman_openscap/version.rb +1 -1
- data/lib/tasks/foreman_openscap_tasks.rake +11 -2
- data/locale/de/foreman_openscap.po +52 -13
- data/locale/en_GB/foreman_openscap.po +52 -13
- data/locale/es/foreman_openscap.po +52 -13
- data/locale/foreman_openscap.pot +140 -90
- data/locale/fr/foreman_openscap.po +52 -13
- data/locale/gl/foreman_openscap.po +52 -13
- data/locale/it/foreman_openscap.po +52 -13
- data/locale/ja/foreman_openscap.po +52 -13
- data/locale/ko/foreman_openscap.po +52 -13
- data/locale/pt_BR/foreman_openscap.po +52 -13
- data/locale/ru/foreman_openscap.po +52 -13
- data/locale/sv_SE/foreman_openscap.po +52 -13
- data/locale/zh_CN/foreman_openscap.po +52 -13
- data/locale/zh_TW/foreman_openscap.po +52 -13
- data/test/factories/arf_report_factory.rb +1 -1
- data/test/factories/asset_factory.rb +2 -2
- data/test/factories/compliance_host_factory.rb +2 -2
- data/test/factories/compliance_log_factory.rb +1 -1
- data/test/factories/policy_arf_report_factory.rb +1 -1
- data/test/factories/policy_factory.rb +3 -3
- data/test/factories/scap_content_related.rb +2 -2
- data/test/functional/api/v2/compliance/arf_reports_controller_test.rb +28 -9
- data/test/functional/api/v2/compliance/policies_controller_test.rb +16 -16
- data/test/functional/api/v2/compliance/scap_contents_controller_test.rb +8 -9
- data/test/functional/api/v2/compliance/tailoring_files_controller_test.rb +10 -11
- data/test/functional/arf_reports_controller_test.rb +4 -4
- data/test/functional/openscap_proxies_controller_test.rb +5 -3
- data/test/functional/tailoring_files_controller_test.rb +1 -1
- data/test/test_plugin_helper.rb +7 -7
- data/test/unit/arf_report_status_calculator_test.rb +0 -1
- data/test/unit/arf_report_test.rb +50 -50
- data/test/unit/compliance_status_test.rb +13 -13
- data/test/unit/concerns/host_extensions_test.rb +38 -22
- data/test/unit/concerns/openscap_proxy_extenstions_test.rb +5 -6
- data/test/unit/message_cleaner_test.rb +7 -7
- data/test/unit/openscap_host_test.rb +13 -13
- data/test/unit/policy_mailer_test.rb +12 -12
- data/test/unit/policy_test.rb +30 -30
- data/test/unit/scap_content_test.rb +4 -4
- data/test/unit/services/report_dashboard/data_test.rb +6 -6
- data/test/unit/services/tailoring_files_proxy_check_test.rb +1 -1
- metadata +4 -2
|
@@ -17,10 +17,13 @@ msgstr ""
|
|
|
17
17
|
"Plural-Forms: nplurals=1; plural=0;\n"
|
|
18
18
|
"\n"
|
|
19
19
|
|
|
20
|
-
msgid "
|
|
20
|
+
msgid " for policy %s"
|
|
21
21
|
msgstr ""
|
|
22
22
|
|
|
23
|
-
msgid "%s
|
|
23
|
+
msgid " through %s"
|
|
24
|
+
msgstr ""
|
|
25
|
+
|
|
26
|
+
msgid "%s - The following compliance reports are about to be changed"
|
|
24
27
|
msgstr ""
|
|
25
28
|
|
|
26
29
|
msgid "%s compliance report by policy"
|
|
@@ -49,6 +52,9 @@ msgstr ""
|
|
|
49
52
|
msgid "Apply policy to host groups"
|
|
50
53
|
msgstr ""
|
|
51
54
|
|
|
55
|
+
msgid "Apply policy to hosts"
|
|
56
|
+
msgstr ""
|
|
57
|
+
|
|
52
58
|
msgid "Assign Compliance Policy"
|
|
53
59
|
msgstr ""
|
|
54
60
|
|
|
@@ -58,7 +64,10 @@ msgstr ""
|
|
|
58
64
|
msgid "Cancel"
|
|
59
65
|
msgstr ""
|
|
60
66
|
|
|
61
|
-
msgid "Cannot generate HTML guide
|
|
67
|
+
msgid "Cannot generate HTML guide, no valid OpenSCAP proxy server found."
|
|
68
|
+
msgstr ""
|
|
69
|
+
|
|
70
|
+
msgid "Cannot generate HTML guide, scap content is missing."
|
|
62
71
|
msgstr ""
|
|
63
72
|
|
|
64
73
|
msgid "Changed"
|
|
@@ -100,6 +109,9 @@ msgstr ""
|
|
|
100
109
|
msgid "Compliance Status"
|
|
101
110
|
msgstr ""
|
|
102
111
|
|
|
112
|
+
msgid "Compliance policy summary"
|
|
113
|
+
msgstr ""
|
|
114
|
+
|
|
103
115
|
msgid "Compliance policy: %s"
|
|
104
116
|
msgstr ""
|
|
105
117
|
|
|
@@ -151,6 +163,9 @@ msgstr ""
|
|
|
151
163
|
msgid "Delete an ARF Report"
|
|
152
164
|
msgstr ""
|
|
153
165
|
|
|
166
|
+
msgid "Delete compliance policy %s with all of its reports?"
|
|
167
|
+
msgstr ""
|
|
168
|
+
|
|
154
169
|
msgid "Delete compliance policy %s with all the reports?"
|
|
155
170
|
msgstr ""
|
|
156
171
|
|
|
@@ -163,6 +178,9 @@ msgstr ""
|
|
|
163
178
|
msgid "Delete tailoring file %s?"
|
|
164
179
|
msgstr ""
|
|
165
180
|
|
|
181
|
+
msgid "Deleted policy"
|
|
182
|
+
msgstr ""
|
|
183
|
+
|
|
166
184
|
msgid "Deletes a Tailoring file"
|
|
167
185
|
msgstr ""
|
|
168
186
|
|
|
@@ -172,6 +190,9 @@ msgstr ""
|
|
|
172
190
|
msgid "Description"
|
|
173
191
|
msgstr ""
|
|
174
192
|
|
|
193
|
+
msgid "Documentation"
|
|
194
|
+
msgstr ""
|
|
195
|
+
|
|
175
196
|
msgid "Download"
|
|
176
197
|
msgstr ""
|
|
177
198
|
|
|
@@ -226,6 +247,9 @@ msgstr ""
|
|
|
226
247
|
msgid "Failed to downloaded ARF report in HTML: %s"
|
|
227
248
|
msgstr ""
|
|
228
249
|
|
|
250
|
+
msgid "Failed to upload Arf Report, no OpenSCAP proxy set for host %s"
|
|
251
|
+
msgstr ""
|
|
252
|
+
|
|
229
253
|
#. TRANSLATORS: initial character of Failed
|
|
230
254
|
msgid "Failed|F"
|
|
231
255
|
msgstr ""
|
|
@@ -275,6 +299,9 @@ msgstr ""
|
|
|
275
299
|
msgid "Hosts Breakdown"
|
|
276
300
|
msgstr ""
|
|
277
301
|
|
|
302
|
+
msgid "ID of OpenSCAP Proxy"
|
|
303
|
+
msgstr ""
|
|
304
|
+
|
|
278
305
|
msgid "In Foreman, a compliance policy checklist is defined via %s."
|
|
279
306
|
msgstr ""
|
|
280
307
|
|
|
@@ -363,7 +390,10 @@ msgstr ""
|
|
|
363
390
|
msgid "No ARF reports for this policy"
|
|
364
391
|
msgstr ""
|
|
365
392
|
|
|
366
|
-
msgid "No OpenSCAP proxy found for %{class} with %{id}"
|
|
393
|
+
msgid "No OpenSCAP proxy found for %{class} with id %{id}"
|
|
394
|
+
msgstr ""
|
|
395
|
+
|
|
396
|
+
msgid "No Tailoring file assigned for policy with id %s"
|
|
367
397
|
msgstr ""
|
|
368
398
|
|
|
369
399
|
msgid "No available proxy to validate. Returned with error: %s"
|
|
@@ -384,6 +414,9 @@ msgstr ""
|
|
|
384
414
|
msgid "No hosts were found."
|
|
385
415
|
msgstr ""
|
|
386
416
|
|
|
417
|
+
msgid "No proxy found!"
|
|
418
|
+
msgstr ""
|
|
419
|
+
|
|
387
420
|
msgid "No proxy with OpenSCAP feature is running."
|
|
388
421
|
msgstr ""
|
|
389
422
|
|
|
@@ -396,9 +429,6 @@ msgstr ""
|
|
|
396
429
|
msgid "No reports available"
|
|
397
430
|
msgstr ""
|
|
398
431
|
|
|
399
|
-
msgid "No valid OpenSCAP proxy server found."
|
|
400
|
-
msgstr ""
|
|
401
|
-
|
|
402
432
|
msgid "No valid policy ID provided"
|
|
403
433
|
msgstr ""
|
|
404
434
|
|
|
@@ -429,10 +459,13 @@ msgstr ""
|
|
|
429
459
|
msgid "Once SCAP content is present, you can create a policy, assign select host groups and schedule to run."
|
|
430
460
|
msgstr ""
|
|
431
461
|
|
|
432
|
-
msgid "
|
|
462
|
+
msgid "OpenSCAP Proxy"
|
|
433
463
|
msgstr ""
|
|
434
464
|
|
|
435
|
-
msgid "
|
|
465
|
+
msgid "OpenSCAP Proxy to use for fetching SCAP content and uploading ARF reports"
|
|
466
|
+
msgstr ""
|
|
467
|
+
|
|
468
|
+
msgid "Openscap Proxy"
|
|
436
469
|
msgstr ""
|
|
437
470
|
|
|
438
471
|
msgid "Organizations"
|
|
@@ -467,6 +500,9 @@ msgstr ""
|
|
|
467
500
|
msgid "Policies with hosts:"
|
|
468
501
|
msgstr ""
|
|
469
502
|
|
|
503
|
+
msgid "Policy"
|
|
504
|
+
msgstr ""
|
|
505
|
+
|
|
470
506
|
msgid "Policy %s"
|
|
471
507
|
msgstr ""
|
|
472
508
|
|
|
@@ -690,9 +726,6 @@ msgstr ""
|
|
|
690
726
|
msgid "Unknown Compliance status"
|
|
691
727
|
msgstr ""
|
|
692
728
|
|
|
693
|
-
msgid "Unsupported report status format"
|
|
694
|
-
msgstr ""
|
|
695
|
-
|
|
696
729
|
msgid "Update a Policy"
|
|
697
730
|
msgstr ""
|
|
698
731
|
|
|
@@ -753,12 +786,18 @@ msgstr ""
|
|
|
753
786
|
msgid "You can specify custom cron line, e.g. \"0 3 * * *\", separate each of 5 values by space"
|
|
754
787
|
msgstr ""
|
|
755
788
|
|
|
789
|
+
msgid "You don't seem to have any ARF report. ARF report is a summary of a single scan occurrence on a particular host for a given Compliance Policy."
|
|
790
|
+
msgstr ""
|
|
791
|
+
|
|
756
792
|
msgid "does not come from selected tailoring file"
|
|
757
793
|
msgstr ""
|
|
758
794
|
|
|
759
795
|
msgid "does not consist of 5 parts separated by space"
|
|
760
796
|
msgstr ""
|
|
761
797
|
|
|
798
|
+
msgid "does not have the selected SCAP content profile"
|
|
799
|
+
msgstr ""
|
|
800
|
+
|
|
762
801
|
msgid "invalid type %s"
|
|
763
802
|
msgstr ""
|
|
764
803
|
|
|
@@ -783,5 +822,5 @@ msgstr ""
|
|
|
783
822
|
msgid "must have Openscap feature"
|
|
784
823
|
msgstr ""
|
|
785
824
|
|
|
786
|
-
msgid "these
|
|
825
|
+
msgid "these Compliance reports"
|
|
787
826
|
msgstr ""
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
FactoryBot.define do
|
|
2
2
|
factory :openscap_feature, :class => Feature do
|
|
3
3
|
name 'Openscap'
|
|
4
4
|
end
|
|
@@ -13,7 +13,7 @@ FactoryGirl.define do
|
|
|
13
13
|
sequence(:name) { |n| "host#{n}" }
|
|
14
14
|
sequence(:hostname) { |n| "hostname#{n}" }
|
|
15
15
|
root_pass 'xybxa6JUkz63w'
|
|
16
|
-
openscap_proxy { SmartProxy.unscoped.with_features('Openscap').first ||
|
|
16
|
+
openscap_proxy { SmartProxy.unscoped.with_features('Openscap').first || FactoryBot.create(:openscap_proxy) }
|
|
17
17
|
policies []
|
|
18
18
|
end
|
|
19
19
|
end
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
|
|
1
|
+
FactoryBot.define do
|
|
2
2
|
factory :policy, :class => ::ForemanOpenscap::Policy do
|
|
3
3
|
sequence(:name) { |n| "policy#{n}" }
|
|
4
4
|
period 'weekly'
|
|
5
5
|
weekday 'monday'
|
|
6
|
-
scap_content {
|
|
7
|
-
scap_content_profile {
|
|
6
|
+
scap_content { FactoryBot.create(:scap_content) }
|
|
7
|
+
scap_content_profile { FactoryBot.create(:scap_content_profile, :scap_content => scap_content) }
|
|
8
8
|
tailoring_file nil
|
|
9
9
|
tailoring_file_profile nil
|
|
10
10
|
day_of_month nil
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
include ActionDispatch::TestProcess
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
FactoryBot.define do
|
|
4
4
|
factory :scap_content, :class => ::ForemanOpenscap::ScapContent do |f|
|
|
5
|
-
f.title
|
|
5
|
+
f.sequence(:title) { |n| "scap_content_title_#{n}" }
|
|
6
6
|
f.original_filename 'fedora ds'
|
|
7
7
|
f.scap_file { File.new("#{ForemanOpenscap::Engine.root}/test/files/scap_contents/ssg-fedora-ds.xml", 'rb').read }
|
|
8
8
|
end
|
|
@@ -8,18 +8,16 @@ class Api::V2::Compliance::ArfReportsControllerTest < ActionController::TestCase
|
|
|
8
8
|
Message.delete_all
|
|
9
9
|
# override validation of policy (puppetclass, lookup_key overrides)
|
|
10
10
|
ForemanOpenscap::Policy.any_instance.stubs(:valid?).returns(true)
|
|
11
|
-
@host =
|
|
12
|
-
@
|
|
13
|
-
|
|
14
|
-
:openscap_proxy => FactoryGirl.create(:smart_proxy, :url => "http://smart-proxy.org:8000"))
|
|
15
|
-
@policy = FactoryGirl.create(:policy)
|
|
16
|
-
@asset = FactoryGirl.create(:asset)
|
|
11
|
+
@host = FactoryBot.create(:compliance_host)
|
|
12
|
+
@policy = FactoryBot.create(:policy)
|
|
13
|
+
@asset = FactoryBot.create(:asset, :assetable_id => @host.id)
|
|
17
14
|
|
|
18
15
|
@from_json = arf_from_json "#{ForemanOpenscap::Engine.root}/test/files/arf_report/arf_report.json"
|
|
19
16
|
@cname = '9521a5c5-8f44-495f-b087-20e86b30bf67'
|
|
20
17
|
end
|
|
21
18
|
|
|
22
19
|
test "should get index" do
|
|
20
|
+
create_arf_report
|
|
23
21
|
get :index, {}, set_session_user
|
|
24
22
|
response = ActiveSupport::JSON.decode(@response.body)
|
|
25
23
|
assert_not response['results'].empty?
|
|
@@ -27,7 +25,8 @@ class Api::V2::Compliance::ArfReportsControllerTest < ActionController::TestCase
|
|
|
27
25
|
end
|
|
28
26
|
|
|
29
27
|
test "should get show" do
|
|
30
|
-
|
|
28
|
+
report = create_arf_report
|
|
29
|
+
get :show, { :id => report.to_param }, set_session_user
|
|
31
30
|
response = ActiveSupport::JSON.decode(@response.body)
|
|
32
31
|
refute response['passed'].blank?
|
|
33
32
|
refute response['failed'].blank?
|
|
@@ -36,9 +35,10 @@ class Api::V2::Compliance::ArfReportsControllerTest < ActionController::TestCase
|
|
|
36
35
|
end
|
|
37
36
|
|
|
38
37
|
test "should download report" do
|
|
38
|
+
report = create_arf_report
|
|
39
39
|
bzipped_report = File.read "#{ForemanOpenscap::Engine.root}/test/files/arf_report/arf_report.bz2"
|
|
40
40
|
ForemanOpenscap::ArfReport.any_instance.stubs(:to_bzip).returns(bzipped_report)
|
|
41
|
-
get :download, { :id =>
|
|
41
|
+
get :download, { :id => report.to_param }, set_session_user
|
|
42
42
|
t = Tempfile.new('tmp_report')
|
|
43
43
|
t.write @response.body
|
|
44
44
|
t.close
|
|
@@ -63,6 +63,20 @@ class Api::V2::Compliance::ArfReportsControllerTest < ActionController::TestCase
|
|
|
63
63
|
assert_equal msg_count, src_count
|
|
64
64
|
end
|
|
65
65
|
|
|
66
|
+
test "should not create report for host without proxy" do
|
|
67
|
+
asset = FactoryBot.create(:asset)
|
|
68
|
+
date = Time.new(1944, 6, 6)
|
|
69
|
+
ForemanOpenscap::Helper.stubs(:get_asset).returns(asset)
|
|
70
|
+
post :create,
|
|
71
|
+
@from_json.merge(:cname => @cname,
|
|
72
|
+
:policy_id => @policy.id,
|
|
73
|
+
:date => date.to_i),
|
|
74
|
+
set_session_user
|
|
75
|
+
assert_response :unprocessable_entity
|
|
76
|
+
res = JSON.parse(@response.body)
|
|
77
|
+
assert_equal "Failed to upload Arf Report, no OpenSCAP proxy set for host #{asset.host.name}", res["result"]
|
|
78
|
+
end
|
|
79
|
+
|
|
66
80
|
test "should not duplicate messages" do
|
|
67
81
|
dates = [Time.new(1984, 9, 15), Time.new(1932, 3, 27)]
|
|
68
82
|
params = @from_json.with_indifferent_access.merge(:cname => @cname,
|
|
@@ -70,7 +84,6 @@ class Api::V2::Compliance::ArfReportsControllerTest < ActionController::TestCase
|
|
|
70
84
|
:date => dates[0].to_i)
|
|
71
85
|
assert ForemanOpenscap::ArfReport.create_arf(@asset, params)
|
|
72
86
|
|
|
73
|
-
|
|
74
87
|
ForemanOpenscap::Helper.stubs(:get_asset).returns(@asset)
|
|
75
88
|
post :create,
|
|
76
89
|
@from_json.merge(:cname => @cname,
|
|
@@ -147,4 +160,10 @@ class Api::V2::Compliance::ArfReportsControllerTest < ActionController::TestCase
|
|
|
147
160
|
file_content = File.read path
|
|
148
161
|
JSON.parse file_content
|
|
149
162
|
end
|
|
163
|
+
|
|
164
|
+
def create_arf_report
|
|
165
|
+
FactoryBot.create(:arf_report,
|
|
166
|
+
:host_id => @host.id,
|
|
167
|
+
:openscap_proxy => FactoryBot.create(:smart_proxy, :url => "http://smart-proxy.org:8000"))
|
|
168
|
+
end
|
|
150
169
|
end
|
|
@@ -3,16 +3,16 @@ require 'test_plugin_helper'
|
|
|
3
3
|
class Api::V2::Compliance::PoliciesControllerTest < ActionController::TestCase
|
|
4
4
|
setup do
|
|
5
5
|
::ForemanOpenscap::Policy.any_instance.stubs(:ensure_needed_puppetclasses).returns(true)
|
|
6
|
-
@scap_content_profile =
|
|
6
|
+
@scap_content_profile = FactoryBot.create(:scap_content_profile)
|
|
7
7
|
@attributes = { :policy => { :name => 'my_policy',
|
|
8
8
|
:scap_content_profile_id => @scap_content_profile.id,
|
|
9
9
|
:scap_content_id => @scap_content_profile.scap_content_id,
|
|
10
10
|
:period => 'weekly',
|
|
11
|
-
:weekday => 'friday' }}
|
|
11
|
+
:weekday => 'friday' } }
|
|
12
12
|
end
|
|
13
13
|
|
|
14
14
|
test "should get index" do
|
|
15
|
-
|
|
15
|
+
FactoryBot.create(:policy)
|
|
16
16
|
get :index, {}, set_session_user
|
|
17
17
|
response = ActiveSupport::JSON.decode(@response.body)
|
|
18
18
|
assert !response['results'].empty?
|
|
@@ -20,7 +20,7 @@ class Api::V2::Compliance::PoliciesControllerTest < ActionController::TestCase
|
|
|
20
20
|
end
|
|
21
21
|
|
|
22
22
|
test "should show a policy" do
|
|
23
|
-
policy =
|
|
23
|
+
policy = FactoryBot.create(:policy)
|
|
24
24
|
get :show, { :id => policy.to_param }, set_session_user
|
|
25
25
|
response = ActiveSupport::JSON.decode(@response.body)
|
|
26
26
|
assert response['name'], policy.name
|
|
@@ -28,16 +28,16 @@ class Api::V2::Compliance::PoliciesControllerTest < ActionController::TestCase
|
|
|
28
28
|
end
|
|
29
29
|
|
|
30
30
|
test "should update a policy" do
|
|
31
|
-
policy =
|
|
32
|
-
put :update, { :id => policy.id, :policy => { :period => 'monthly', :day_of_month => 15 }}
|
|
31
|
+
policy = FactoryBot.create(:policy)
|
|
32
|
+
put :update, { :id => policy.id, :policy => { :period => 'monthly', :day_of_month => 15 } }
|
|
33
33
|
updated_policy = ActiveSupport::JSON.decode(@response.body)
|
|
34
34
|
assert(updated_policy['period'], 'monthly')
|
|
35
35
|
assert_response :ok
|
|
36
36
|
end
|
|
37
37
|
|
|
38
38
|
test "should not update invalid" do
|
|
39
|
-
policy =
|
|
40
|
-
put :update, {:id => policy.id, :policy => {:name => ''}}
|
|
39
|
+
policy = FactoryBot.create(:policy)
|
|
40
|
+
put :update, { :id => policy.id, :policy => { :name => '' } }
|
|
41
41
|
assert_response :unprocessable_entity
|
|
42
42
|
end
|
|
43
43
|
|
|
@@ -49,7 +49,7 @@ class Api::V2::Compliance::PoliciesControllerTest < ActionController::TestCase
|
|
|
49
49
|
end
|
|
50
50
|
|
|
51
51
|
test "should not create a policy with tailoring file profile and without the actual file" do
|
|
52
|
-
tailoring_profile =
|
|
52
|
+
tailoring_profile = FactoryBot.create(:scap_content_profile, :profile_id => 'xccdf_org.test.tailoring_profile')
|
|
53
53
|
@attributes[:policy][:tailoring_file_profile_id] = tailoring_profile.id
|
|
54
54
|
post :create, @attributes, set_session_user
|
|
55
55
|
response = ActiveSupport::JSON.decode(@response.body)
|
|
@@ -58,7 +58,7 @@ class Api::V2::Compliance::PoliciesControllerTest < ActionController::TestCase
|
|
|
58
58
|
end
|
|
59
59
|
|
|
60
60
|
test "should not create a policy with tailoring file and without tailoring profile" do
|
|
61
|
-
tailoring_file =
|
|
61
|
+
tailoring_file = FactoryBot.create(:tailoring_file)
|
|
62
62
|
@attributes[:policy][:tailoring_file_id] = tailoring_file.id
|
|
63
63
|
post :create, @attributes, set_session_user
|
|
64
64
|
response = ActiveSupport::JSON.decode(@response.body)
|
|
@@ -72,30 +72,30 @@ class Api::V2::Compliance::PoliciesControllerTest < ActionController::TestCase
|
|
|
72
72
|
end
|
|
73
73
|
|
|
74
74
|
test "should destroy" do
|
|
75
|
-
policy =
|
|
75
|
+
policy = FactoryBot.create(:policy)
|
|
76
76
|
delete :destroy, { :id => policy.id }, set_session_user
|
|
77
77
|
assert_response :ok
|
|
78
78
|
refute ForemanOpenscap::Policy.exists?(policy.id)
|
|
79
79
|
end
|
|
80
80
|
|
|
81
81
|
test "should return xml of scap content" do
|
|
82
|
-
policy =
|
|
82
|
+
policy = FactoryBot.create(:policy)
|
|
83
83
|
get :content, { :id => policy.id }, set_session_user
|
|
84
84
|
assert(@response.header['Content-Type'], 'application/xml')
|
|
85
85
|
assert_response :success
|
|
86
86
|
end
|
|
87
87
|
|
|
88
88
|
test "should return xml of a tailoring file" do
|
|
89
|
-
tailoring_profile =
|
|
90
|
-
policy =
|
|
91
|
-
|
|
89
|
+
tailoring_profile = FactoryBot.create(:scap_content_profile)
|
|
90
|
+
policy = FactoryBot.create(:policy, :tailoring_file => FactoryBot.create(:tailoring_file, :scap_content_profiles => [tailoring_profile]),
|
|
91
|
+
:tailoring_file_profile => tailoring_profile)
|
|
92
92
|
get :tailoring, { :id => policy.id }, set_session_user
|
|
93
93
|
assert(@response.header['Content-Type'], 'application/xml')
|
|
94
94
|
assert_response :success
|
|
95
95
|
end
|
|
96
96
|
|
|
97
97
|
test "should return meaningufull error when no tailioring file assigned" do
|
|
98
|
-
policy =
|
|
98
|
+
policy = FactoryBot.create(:policy)
|
|
99
99
|
get :tailoring, { :id => policy.id }, set_session_user
|
|
100
100
|
assert_response :not_found
|
|
101
101
|
response = ActiveSupport::JSON.decode(@response.body)
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
require 'test_plugin_helper'
|
|
2
2
|
|
|
3
3
|
class Api::V2::Compliance::ScapContentsControllerTest < ActionController::TestCase
|
|
4
|
-
|
|
5
4
|
test "should get index" do
|
|
6
|
-
|
|
5
|
+
FactoryBot.create(:scap_content)
|
|
7
6
|
get :index, {}, set_session_user
|
|
8
7
|
response = ActiveSupport::JSON.decode(@response.body)
|
|
9
8
|
assert response['results'].any?
|
|
@@ -11,7 +10,7 @@ class Api::V2::Compliance::ScapContentsControllerTest < ActionController::TestCa
|
|
|
11
10
|
end
|
|
12
11
|
|
|
13
12
|
test "should return xml of scap content" do
|
|
14
|
-
scap_content =
|
|
13
|
+
scap_content = FactoryBot.create(:scap_content)
|
|
15
14
|
get :show, { :id => scap_content.id }, set_session_user
|
|
16
15
|
assert(@response.header['Content-Type'], 'application/xml')
|
|
17
16
|
assert_response :success
|
|
@@ -27,22 +26,22 @@ class Api::V2::Compliance::ScapContentsControllerTest < ActionController::TestCa
|
|
|
27
26
|
end
|
|
28
27
|
|
|
29
28
|
test "should update scap content" do
|
|
30
|
-
scap_content =
|
|
31
|
-
put :update, { :id => scap_content.id, :scap_content => {:title => 'RHEL7 SCAP'}}, set_session_user
|
|
29
|
+
scap_content = FactoryBot.create(:scap_content)
|
|
30
|
+
put :update, { :id => scap_content.id, :scap_content => { :title => 'RHEL7 SCAP' } }, set_session_user
|
|
32
31
|
assert_response :success
|
|
33
32
|
assert scap_content.title, 'RHEL7 SCAP'
|
|
34
33
|
end
|
|
35
34
|
|
|
36
35
|
test "should not update invalid scap content" do
|
|
37
36
|
skip("Solve 'ActiveRecord::RecordInvalid' error")
|
|
38
|
-
ProxyAPI::Openscap.any_instance.stubs(:validate_scap_content).returns({'errors' => ['Invalid file']})
|
|
39
|
-
scap_content =
|
|
40
|
-
put :update, { :id => scap_content.id, :scap_content => {:scap_file => '<xml>blah</xml>'}}, set_session_user
|
|
37
|
+
ProxyAPI::Openscap.any_instance.stubs(:validate_scap_content).returns({ 'errors' => ['Invalid file'] })
|
|
38
|
+
scap_content = FactoryBot.create(:scap_content)
|
|
39
|
+
put :update, { :id => scap_content.id, :scap_content => { :scap_file => '<xml>blah</xml>' } }, set_session_user
|
|
41
40
|
assert_response :unprocessable_entity
|
|
42
41
|
end
|
|
43
42
|
|
|
44
43
|
test "should destory scap content" do
|
|
45
|
-
scap_content =
|
|
44
|
+
scap_content = FactoryBot.create(:scap_content)
|
|
46
45
|
delete :destroy, { :id => scap_content.id }, set_session_user
|
|
47
46
|
assert_response :ok
|
|
48
47
|
refute ForemanOpenscap::ScapContent.exists?(scap_content.id)
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
require 'test_plugin_helper'
|
|
2
2
|
|
|
3
3
|
class Api::V2::Compliance::TailoringFilesControllerTest < ActionController::TestCase
|
|
4
|
-
|
|
5
4
|
test "should get index" do
|
|
6
|
-
|
|
5
|
+
FactoryBot.create(:tailoring_file)
|
|
7
6
|
get :index, {}, set_session_user
|
|
8
7
|
response = ActiveSupport::JSON.decode(@response.body)
|
|
9
8
|
assert response['results'].any?
|
|
@@ -11,7 +10,7 @@ class Api::V2::Compliance::TailoringFilesControllerTest < ActionController::Test
|
|
|
11
10
|
end
|
|
12
11
|
|
|
13
12
|
test "should return xml of tailoring_file" do
|
|
14
|
-
tailoring_file =
|
|
13
|
+
tailoring_file = FactoryBot.create(:tailoring_file)
|
|
15
14
|
get :show, { :id => tailoring_file.id }, set_session_user
|
|
16
15
|
assert(@response.header['Content-Type'], 'application/xml')
|
|
17
16
|
assert_response :success
|
|
@@ -23,7 +22,7 @@ class Api::V2::Compliance::TailoringFilesControllerTest < ActionController::Test
|
|
|
23
22
|
end
|
|
24
23
|
|
|
25
24
|
test "should create tailoring_file" do
|
|
26
|
-
tf =
|
|
25
|
+
tf = FactoryBot.build(:tailoring_file)
|
|
27
26
|
tf_params = { :name => tf.name, :original_filename => tf.original_filename, :scap_file => tf.scap_file }
|
|
28
27
|
ForemanOpenscap::OpenscapProxyVersionCheck.any_instance.stubs(:openscap_proxy_versions)
|
|
29
28
|
.returns({})
|
|
@@ -32,28 +31,28 @@ class Api::V2::Compliance::TailoringFilesControllerTest < ActionController::Test
|
|
|
32
31
|
end
|
|
33
32
|
|
|
34
33
|
test "should update tailoring_file" do
|
|
35
|
-
tailoring_file =
|
|
36
|
-
put :update, { :id => tailoring_file.id, :tailoring_file => { :name => 'RHEL7 SCAP' }}, set_session_user
|
|
34
|
+
tailoring_file = FactoryBot.create(:tailoring_file)
|
|
35
|
+
put :update, { :id => tailoring_file.id, :tailoring_file => { :name => 'RHEL7 SCAP' } }, set_session_user
|
|
37
36
|
assert_response :success
|
|
38
37
|
assert tailoring_file.name, 'RHEL7 SCAP'
|
|
39
38
|
end
|
|
40
39
|
|
|
41
40
|
test "should not update invalid tailoring_file" do
|
|
42
|
-
tailoring_file =
|
|
43
|
-
ProxyAPI::Openscap.any_instance.stubs(:validate_scap_file).returns({'errors' => ['Invalid file']})
|
|
44
|
-
put :update, { :id => tailoring_file.id, :tailoring_file => { :scap_file => '<xml>blah</xml>' }}, set_session_user
|
|
41
|
+
tailoring_file = FactoryBot.create(:tailoring_file)
|
|
42
|
+
ProxyAPI::Openscap.any_instance.stubs(:validate_scap_file).returns({ 'errors' => ['Invalid file'] })
|
|
43
|
+
put :update, { :id => tailoring_file.id, :tailoring_file => { :scap_file => '<xml>blah</xml>' } }, set_session_user
|
|
45
44
|
assert_response :unprocessable_entity
|
|
46
45
|
end
|
|
47
46
|
|
|
48
47
|
test "should destory tailoring_file" do
|
|
49
|
-
tailoring_file =
|
|
48
|
+
tailoring_file = FactoryBot.create(:tailoring_file)
|
|
50
49
|
delete :destroy, { :id => tailoring_file.id }, set_session_user
|
|
51
50
|
assert_response :ok
|
|
52
51
|
refute ForemanOpenscap::ScapContent.exists?(tailoring_file.id)
|
|
53
52
|
end
|
|
54
53
|
|
|
55
54
|
test "should not create tailoring file when there is outdated proxy version" do
|
|
56
|
-
tf =
|
|
55
|
+
tf = FactoryBot.build(:tailoring_file)
|
|
57
56
|
tf_params = { :name => tf.name, :original_filename => tf.original_filename, :scap_file => tf.scap_file }
|
|
58
57
|
ForemanOpenscap::OpenscapProxyVersionCheck.any_instance.stubs(:openscap_proxy_versions)
|
|
59
58
|
.returns('test-proxy' => '0.5.4')
|
|
@@ -4,12 +4,12 @@ class ArfReportsControllerTest < ActionController::TestCase
|
|
|
4
4
|
setup do
|
|
5
5
|
ForemanOpenscap::Helper.stubs(:find_name_or_uuid_by_host)
|
|
6
6
|
::ProxyAPI::Openscap.any_instance.stubs(:destroy_report).returns(true)
|
|
7
|
-
@host =
|
|
7
|
+
@host = FactoryBot.create(:compliance_host)
|
|
8
8
|
end
|
|
9
9
|
|
|
10
10
|
test "should delete arf report" do
|
|
11
11
|
ForemanOpenscap::ArfReport.any_instance.stubs(:openscap_proxy).returns(@host.openscap_proxy)
|
|
12
|
-
arf_report =
|
|
12
|
+
arf_report = FactoryBot.create(:arf_report, :host_id => @host.id)
|
|
13
13
|
assert_difference("ForemanOpenscap::ArfReport.count", -1) do
|
|
14
14
|
delete :destroy, { :id => arf_report.id }, set_session_user
|
|
15
15
|
end
|
|
@@ -20,7 +20,7 @@ class ArfReportsControllerTest < ActionController::TestCase
|
|
|
20
20
|
ForemanOpenscap::ArfReport.any_instance.stubs(:openscap_proxy).returns(@host.openscap_proxy)
|
|
21
21
|
arf_reports = []
|
|
22
22
|
3.times do
|
|
23
|
-
arf_reports <<
|
|
23
|
+
arf_reports << FactoryBot.create(:arf_report, :host_id => @host.id)
|
|
24
24
|
end
|
|
25
25
|
last_arf = arf_reports[-1]
|
|
26
26
|
assert_difference("ForemanOpenscap::ArfReport.unscoped.count", -2) do
|
|
@@ -31,7 +31,7 @@ class ArfReportsControllerTest < ActionController::TestCase
|
|
|
31
31
|
end
|
|
32
32
|
|
|
33
33
|
test "should download arf report as html" do
|
|
34
|
-
arf_report =
|
|
34
|
+
arf_report = FactoryBot.create(:arf_report, :host_id => @host.id)
|
|
35
35
|
report_html = File.read("#{ForemanOpenscap::Engine.root}/test/files/arf_report/arf_report.html")
|
|
36
36
|
ForemanOpenscap::ArfReport.any_instance.stubs(:to_html).returns(report_html)
|
|
37
37
|
get :download_html, { :id => arf_report.id }, set_session_user
|
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
require 'test_plugin_helper'
|
|
2
|
+
require 'application_helper'
|
|
2
3
|
|
|
3
4
|
class OpenscapProxiesControllerTest < ActionController::TestCase
|
|
4
5
|
include ActionView::Helpers::DateHelper
|
|
6
|
+
include ApplicationHelper
|
|
5
7
|
|
|
6
8
|
test "should render spool error" do
|
|
7
|
-
spool_error = { "timestamp" => 1_487_144_633.951_368, "level" => "ERROR", "message"=> "Failed to parse Arf Report in test" }
|
|
9
|
+
spool_error = { "timestamp" => 1_487_144_633.951_368, "level" => "ERROR", "message" => "Failed to parse Arf Report in test" }
|
|
8
10
|
OpenscapProxiesController.any_instance.stubs(:find_spool_error).returns(spool_error)
|
|
9
|
-
proxy =
|
|
11
|
+
proxy = FactoryBot.create(:openscap_proxy)
|
|
10
12
|
get :openscap_spool, { :id => proxy.id }, set_session_user
|
|
11
13
|
assert_template :partial => 'smart_proxies/_openscap_spool'
|
|
12
|
-
assert @response.body.match(
|
|
14
|
+
assert @response.body.match(date_time_relative_value(Time.at(spool_error["timestamp"])))
|
|
13
15
|
end
|
|
14
16
|
end
|
|
@@ -2,7 +2,7 @@ require 'test_plugin_helper'
|
|
|
2
2
|
|
|
3
3
|
class TailoringFilesControllerTest < ActionController::TestCase
|
|
4
4
|
setup do
|
|
5
|
-
@tailoring_file =
|
|
5
|
+
@tailoring_file = FactoryBot.create(:tailoring_file)
|
|
6
6
|
@scap_file = File.new("#{ForemanOpenscap::Engine.root}/test/files/tailoring_files/ssg-firefox-ds-tailoring.xml", 'rb')
|
|
7
7
|
end
|
|
8
8
|
|
data/test/test_plugin_helper.rb
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# This calls the main test_helper in Foreman-core
|
|
2
2
|
require 'test_helper'
|
|
3
3
|
|
|
4
|
-
# Add plugin to
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
# Add plugin to FactoryBot's paths
|
|
5
|
+
FactoryBot.definition_file_paths << File.join(File.dirname(__FILE__), 'factories')
|
|
6
|
+
FactoryBot.reload
|
|
7
7
|
|
|
8
8
|
module ScapClientPuppetclass
|
|
9
9
|
def skip_scap_callback
|
|
@@ -17,15 +17,15 @@ module ScapTestProxy
|
|
|
17
17
|
private
|
|
18
18
|
|
|
19
19
|
def add_smart_proxy
|
|
20
|
-
|
|
20
|
+
FactoryBot.create(:smart_proxy, :url => 'http://localhost:8443', :features => [FactoryBot.create(:feature, :name => 'Openscap')])
|
|
21
21
|
ProxyAPI::Features.any_instance.stubs(:features).returns(%w[puppet openscap])
|
|
22
22
|
versions = { "version" => "1.11.0", "modules" => { "openscap" => "0.5.3" } }
|
|
23
23
|
ProxyAPI::Version.any_instance.stubs(:proxy_versions).returns(versions)
|
|
24
|
-
ProxyAPI::Openscap.any_instance.stubs(:validate_scap_file).returns({'errors' => []})
|
|
24
|
+
ProxyAPI::Openscap.any_instance.stubs(:validate_scap_file).returns({ 'errors' => [] })
|
|
25
25
|
ProxyAPI::Openscap.any_instance.stubs(:fetch_policies_for_scap_content)
|
|
26
|
-
.returns({'xccdf_org.ssgproject.content_profile_common' => 'Common Profile for General-Purpose Fedora Systems'})
|
|
26
|
+
.returns({ 'xccdf_org.ssgproject.content_profile_common' => 'Common Profile for General-Purpose Fedora Systems' })
|
|
27
27
|
ProxyAPI::Openscap.any_instance.stubs(:fetch_profiles_for_tailoring_file)
|
|
28
|
-
.returns({'xccdf_org.ssgproject.test_profile_common' => 'Stubbed test profile'})
|
|
28
|
+
.returns({ 'xccdf_org.ssgproject.test_profile_common' => 'Stubbed test profile' })
|
|
29
29
|
end
|
|
30
30
|
end
|
|
31
31
|
|