diff options
Diffstat (limited to 'spec')
-rw-r--r-- | spec/util_xml_spec.lua | 34 |
1 files changed, 33 insertions, 1 deletions
diff --git a/spec/util_xml_spec.lua b/spec/util_xml_spec.lua index 11820894..28a1cea7 100644 --- a/spec/util_xml_spec.lua +++ b/spec/util_xml_spec.lua @@ -12,9 +12,41 @@ describe("util.xml", function() <a:z/> <!-- prefix 'a' is nil here, but should be 'b' --> </x> ]] - local stanza = xml.parse(x); + local stanza = xml.parse(x, {allow_comments = true}); assert.are.equal(stanza.tags[2].attr.xmlns, "b"); assert.are.equal(stanza.tags[2].namespaces["a"], "b"); end); + + it("should reject doctypes", function() + local x = "<!DOCTYPE foo []><foo/>"; + local ok = xml.parse(x); + assert.falsy(ok); + end); + + it("should reject comments by default", function() + local x = "<foo><!-- foo --></foo>"; + local ok = xml.parse(x); + assert.falsy(ok); + end); + + it("should allow comments if asked nicely", function() + local x = "<foo><!-- foo --></foo>"; + local stanza = xml.parse(x, {allow_comments = true}); + assert.are.equal(stanza.name, "foo"); + assert.are.equal(#stanza, 0); + end); + + it("should reject processing instructions", function() + local x = "<foo><?php die(); ?></foo>"; + local ok = xml.parse(x); + assert.falsy(ok); + end); + + it("should allow an xml declaration", function() + local x = "<?xml version='1.0'?><foo/>"; + local stanza = xml.parse(x); + assert.truthy(stanza); + assert.are.equal(stanza.name, "foo"); + end); end); end); |