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/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/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/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/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/concerns/xccdf_report/xml_report_test.rb b/test/openscap_parser/xml_report_test.rb similarity index 77% rename from test/concerns/xccdf_report/xml_report_test.rb rename to test/openscap_parser/xml_report_test.rb index ffc7818..c57f165 100644 --- a/test/concerns/xccdf_report/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