Skip to content

Commit 40cfcfc

Browse files
akofinkdLobatog
authored andcommitted
Validate xml before parsing oscap values; reorganize tests to match source (#4)
* Reorganize tests to match source, add pry to devel * Raise syntax errors on malformed XML
1 parent fbc009f commit 40cfcfc

6 files changed

Lines changed: 30 additions & 5 deletions

File tree

lib/openscap_parser/xml_file.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@
44
module OpenscapParser
55
module XmlFile
66
def report_xml(report_contents = '')
7-
@report_xml ||= ::Nokogiri::XML.parse(report_contents)
7+
@report_xml ||= ::Nokogiri::XML.parse(
8+
report_contents, nil, nil, Nokogiri::XML::ParseOptions.new.norecover)
89
@report_xml.remove_namespaces!
910
end
1011
end

openscap_parser.gemspec

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,4 +41,5 @@ Gem::Specification.new do |spec|
4141
spec.add_development_dependency "rake", "~> 10.0"
4242
spec.add_development_dependency "minitest", "~> 5.0"
4343
spec.add_development_dependency "shoulda-context"
44+
spec.add_development_dependency "pry"
4445
end
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
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.
2+
3+
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.
4+
5+
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.
File renamed without changes.
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
# frozen_string_literal: true
2+
3+
require 'test_helper'
4+
5+
class XmlFileTest < Minitest::Test
6+
include OpenscapParser::XmlFile
7+
8+
def setup
9+
@invalid_report = file_fixture('invalid_report.xml').read
10+
@valid_report = file_fixture('xccdf_report.xml').read
11+
end
12+
13+
test 'report_xml parses a valid XML report' do
14+
assert_equal report_xml(@valid_report).class, Nokogiri::XML::Document
15+
end
16+
17+
test 'report_xml handles an invalid XML report' do
18+
assert_raises Nokogiri::XML::SyntaxError do
19+
report_xml(@invalid_report)
20+
end
21+
end
22+
end

test/concerns/xccdf_report/xml_report_test.rb renamed to test/openscap_parser/xml_report_test.rb

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,6 @@ def setup
99
report_xml(file_fixture('xccdf_report.xml').read)
1010
end
1111

12-
test 'report_xml parses the XML report' do
13-
assert_equal @report_xml.class, Nokogiri::XML::Document
14-
end
15-
1612
test 'report_description' do
1713
assert_match(/^This guide presents/, description)
1814
end

0 commit comments

Comments
 (0)