From 361ab7df7c01907d9785da87903e42d4383a4c34 Mon Sep 17 00:00:00 2001 From: Andrew Kofink Date: Mon, 24 Jun 2019 14:15:42 -0400 Subject: [PATCH 1/2] Reorganize tests to match source, add pry to devel --- openscap_parser.gemspec | 1 + test/{concerns/xccdf_report => openscap_parser}/profiles_test.rb | 0 .../xccdf_report => openscap_parser}/xml_report_test.rb | 0 3 files changed, 1 insertion(+) rename test/{concerns/xccdf_report => openscap_parser}/profiles_test.rb (100%) rename test/{concerns/xccdf_report => openscap_parser}/xml_report_test.rb (100%) diff --git a/openscap_parser.gemspec b/openscap_parser.gemspec index f6b3c2e..c9173b4 100644 --- a/openscap_parser.gemspec +++ b/openscap_parser.gemspec @@ -41,4 +41,5 @@ Gem::Specification.new do |spec| spec.add_development_dependency "rake", "~> 10.0" spec.add_development_dependency "minitest", "~> 5.0" spec.add_development_dependency "shoulda-context" + spec.add_development_dependency "pry" end diff --git a/test/concerns/xccdf_report/profiles_test.rb b/test/openscap_parser/profiles_test.rb similarity index 100% rename from test/concerns/xccdf_report/profiles_test.rb rename to test/openscap_parser/profiles_test.rb diff --git a/test/concerns/xccdf_report/xml_report_test.rb b/test/openscap_parser/xml_report_test.rb similarity index 100% rename from test/concerns/xccdf_report/xml_report_test.rb rename to test/openscap_parser/xml_report_test.rb From 6006616ef21073ff8e2a8d9d223b5815c05fb9b5 Mon Sep 17 00:00:00 2001 From: Andrew Kofink Date: Mon, 24 Jun 2019 14:16:05 -0400 Subject: [PATCH 2/2] Raise syntax errors on malformed XML --- lib/openscap_parser/xml_file.rb | 3 ++- test/fixtures/files/invalid_report.xml | 5 +++++ test/openscap_parser/xml_file_test.rb | 22 ++++++++++++++++++++++ test/openscap_parser/xml_report_test.rb | 4 ---- 4 files changed, 29 insertions(+), 5 deletions(-) create mode 100644 test/fixtures/files/invalid_report.xml create mode 100644 test/openscap_parser/xml_file_test.rb diff --git a/lib/openscap_parser/xml_file.rb b/lib/openscap_parser/xml_file.rb index 04a8534..f53c383 100644 --- a/lib/openscap_parser/xml_file.rb +++ b/lib/openscap_parser/xml_file.rb @@ -4,7 +4,8 @@ module OpenscapParser module XmlFile def report_xml(report_contents = '') - @report_xml ||= ::Nokogiri::XML.parse(report_contents) + @report_xml ||= ::Nokogiri::XML.parse( + report_contents, nil, nil, Nokogiri::XML::ParseOptions.new.norecover) @report_xml.remove_namespaces! end end diff --git a/test/fixtures/files/invalid_report.xml b/test/fixtures/files/invalid_report.xml new file mode 100644 index 0000000..0edb6f3 --- /dev/null +++ b/test/fixtures/files/invalid_report.xml @@ -0,0 +1,5 @@ +Consectetuer blandit, per eu ligula auctor, proin in primis. Curae class netus volutpat erat at orci et. Ad, hendrerit velit ad sollicitudin elit laoreet. Vivamus. Rhoncus mollis duis. Risus rhoncus leo, aliquam. Dictumst metus luctus sollicitudin. Fusce vestibulum pede vulputate varius class scelerisque dis, erat nec. Nostra parturient. Dolor id tortor metus condimentum sociosqu, laoreet. Eu nisi curae eu elit. Cum nibh at suscipit varius, sapien per. + +Amet fames, vulputate. Elit in sagittis aliquet. Rhoncus at hymenaeos quam, amet mi lorem. Massa leo. Feugiat, platea erat leo magna imperdiet ad, netus tristique. Auctor ante rutrum vestibulum dictumst gravida cursus tellus praesent dis metus justo, neque. Tempor nisi. At mattis dolor in purus primis imperdiet leo, purus, ultricies dictumst. Amet massa aptent sodales conubia. Lacus pede congue, mus litora, nonummy arcu lorem tempor. Erat, integer. + +Sagittis dis. Quam class at montes. Ve nam eros malesuada turpis sociis, felis, parturient viverra. Mi ve orci aliquam id. Massa lectus accumsan. Tellus vel vestibulum fusce cubilia nascetur erat habitant. Arcu velit primis arcu. Porta diam nulla, donec senectus amet. Sem ridiculus pede, rhoncus eu interdum lacinia, ipsum. diff --git a/test/openscap_parser/xml_file_test.rb b/test/openscap_parser/xml_file_test.rb new file mode 100644 index 0000000..3f1c63c --- /dev/null +++ b/test/openscap_parser/xml_file_test.rb @@ -0,0 +1,22 @@ +# frozen_string_literal: true + +require 'test_helper' + +class XmlFileTest < Minitest::Test + include OpenscapParser::XmlFile + + def setup + @invalid_report = file_fixture('invalid_report.xml').read + @valid_report = file_fixture('xccdf_report.xml').read + end + + test 'report_xml parses a valid XML report' do + assert_equal report_xml(@valid_report).class, Nokogiri::XML::Document + end + + test 'report_xml handles an invalid XML report' do + assert_raises Nokogiri::XML::SyntaxError do + report_xml(@invalid_report) + end + end +end diff --git a/test/openscap_parser/xml_report_test.rb b/test/openscap_parser/xml_report_test.rb index ffc7818..c57f165 100644 --- a/test/openscap_parser/xml_report_test.rb +++ b/test/openscap_parser/xml_report_test.rb @@ -9,10 +9,6 @@ def setup report_xml(file_fixture('xccdf_report.xml').read) end - test 'report_xml parses the XML report' do - assert_equal @report_xml.class, Nokogiri::XML::Document - end - test 'report_description' do assert_match(/^This guide presents/, description) end