mirror of
https://github.com/bjc/prosody.git
synced 2025-04-01 20:27:39 +03:00
These should generally be safe to just ignore, which should be the default behavior of Expat and LuaExpat
59 lines
1.6 KiB
Lua
59 lines
1.6 KiB
Lua
|
|
local xml = require "util.xml";
|
|
|
|
describe("util.xml", function()
|
|
describe("#parse()", function()
|
|
it("should work", function()
|
|
local x =
|
|
[[<x xmlns:a="b">
|
|
<y xmlns:a="c"> <!-- this overwrites 'a' -->
|
|
<a:z/>
|
|
</y>
|
|
<a:z/> <!-- prefix 'a' is nil here, but should be 'b' -->
|
|
</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 processing instructions if asked nicely", function()
|
|
local x = "<?xml-stylesheet href='make-fancy.xsl'?><foo/>";
|
|
local stanza = xml.parse(x, {allow_processing_instructions = true});
|
|
assert.truthy(stanza);
|
|
assert.are.equal(stanza.name, "foo");
|
|
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);
|