Annotate

spec/util_xtemplate_spec.lua @ 13524:cfc42ed3892c

mod_pubsub: Check new role framework for node creation privileges This enables granting regular users permission to create nodes via the new roles framework. Previously this required either making everyone an admin or writing a custom mod_pubsub variant with different permission details. Previous default behavior of only allowing creation by admin is kept as to not give out unexpected permissions on upgrade, but could be reevaluated at a later time. Fixes #1324
author Kim Alvefur <zash@zash.se>
date Sun, 13 Oct 2024 13:03:08 +0200
parent 13499:1f93e4f78c53
child 13568:3615590fd9ed
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
13395
1675d4b6363a util.xtemplate: Add some initial tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
1 local st = require "prosody.util.stanza";
1675d4b6363a util.xtemplate: Add some initial tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
2 local xtemplate = require "prosody.util.xtemplate";
1675d4b6363a util.xtemplate: Add some initial tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
3
1675d4b6363a util.xtemplate: Add some initial tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
4 describe("util.xtemplate", function ()
1675d4b6363a util.xtemplate: Add some initial tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
5 describe("render()", function ()
1675d4b6363a util.xtemplate: Add some initial tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
6 it("works", function ()
1675d4b6363a util.xtemplate: Add some initial tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
7 assert.same("Hello", xtemplate.render("{greeting}", st.stanza("root"):text_tag("greeting", "Hello")), "regular text content")
1675d4b6363a util.xtemplate: Add some initial tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
8 assert.same("Hello", xtemplate.render("{#}", st.stanza("root"):text("Hello")), "top tag text content")
1675d4b6363a util.xtemplate: Add some initial tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
9 assert.same("Hello", xtemplate.render("{greeting/@en}", st.stanza("root"):tag("greeting", { en = "Hello" })), "attribute")
1675d4b6363a util.xtemplate: Add some initial tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
10 end)
1675d4b6363a util.xtemplate: Add some initial tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
11 it("supports conditionals", function ()
1675d4b6363a util.xtemplate: Add some initial tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
12 local atom_tmpl = "{@pubsub:title|and{*{@pubsub:title}*\n\n}}{summary|or{{author/name|and{{author/name} posted }}{title}}}";
1675d4b6363a util.xtemplate: Add some initial tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
13 local atom_data = st.stanza("entry", { xmlns = "http://www.w3.org/2005/Atom" });
1675d4b6363a util.xtemplate: Add some initial tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
14 assert.same("", xtemplate.render(atom_tmpl, atom_data));
1675d4b6363a util.xtemplate: Add some initial tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
15
1675d4b6363a util.xtemplate: Add some initial tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
16 atom_data:text_tag("title", "an Entry")
1675d4b6363a util.xtemplate: Add some initial tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
17 assert.same("an Entry", xtemplate.render(atom_tmpl, atom_data));
1675d4b6363a util.xtemplate: Add some initial tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
18
1675d4b6363a util.xtemplate: Add some initial tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
19 atom_data:tag("author"):text_tag("name","Juliet"):up();
1675d4b6363a util.xtemplate: Add some initial tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
20 assert.same("Juliet posted an Entry", xtemplate.render(atom_tmpl, atom_data));
1675d4b6363a util.xtemplate: Add some initial tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
21
1675d4b6363a util.xtemplate: Add some initial tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
22 atom_data:text_tag("summary", "Juliet just posted a new entry");
1675d4b6363a util.xtemplate: Add some initial tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
23 assert.same("Juliet just posted a new entry", xtemplate.render(atom_tmpl, atom_data));
1675d4b6363a util.xtemplate: Add some initial tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
24
1675d4b6363a util.xtemplate: Add some initial tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
25 atom_data.attr["xmlns:pubsub"] = "http://jabber.org/protocol/pubsub";
1675d4b6363a util.xtemplate: Add some initial tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
26 atom_data.attr["pubsub:title"] = "Juliets musings";
1675d4b6363a util.xtemplate: Add some initial tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
27 assert.same("*Juliets musings*\n\nJuliet just posted a new entry", xtemplate.render(atom_tmpl, atom_data));
1675d4b6363a util.xtemplate: Add some initial tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
28 end)
1675d4b6363a util.xtemplate: Add some initial tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
29 it("can strip surrounding whitespace", function ()
1675d4b6363a util.xtemplate: Add some initial tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
30 assert.same("Hello ", xtemplate.render(" {-greeting} ", st.stanza("root"):text_tag("greeting", "Hello")))
1675d4b6363a util.xtemplate: Add some initial tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
31 assert.same(" Hello", xtemplate.render(" {greeting-} ", st.stanza("root"):text_tag("greeting", "Hello")))
1675d4b6363a util.xtemplate: Add some initial tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
32 assert.same("Hello", xtemplate.render(" {-greeting-} ", st.stanza("root"):text_tag("greeting", "Hello")))
1675d4b6363a util.xtemplate: Add some initial tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
33 end)
13404
034c7af177f0 util.xtemplate: Test the each template function
Kim Alvefur <zash@zash.se>
parents: 13395
diff changeset
34 describe("each", function ()
034c7af177f0 util.xtemplate: Test the each template function
Kim Alvefur <zash@zash.se>
parents: 13395
diff changeset
35 it("makes sense", function ()
034c7af177f0 util.xtemplate: Test the each template function
Kim Alvefur <zash@zash.se>
parents: 13395
diff changeset
36 local x = st.stanza("root"):tag("foo"):tag("bar")
034c7af177f0 util.xtemplate: Test the each template function
Kim Alvefur <zash@zash.se>
parents: 13395
diff changeset
37 for i = 1, 5 do x:text_tag("i", tostring(i)); end
034c7af177f0 util.xtemplate: Test the each template function
Kim Alvefur <zash@zash.se>
parents: 13395
diff changeset
38 x:reset();
034c7af177f0 util.xtemplate: Test the each template function
Kim Alvefur <zash@zash.se>
parents: 13395
diff changeset
39 assert.same("12345", xtemplate.render("{foo/bar|each(i){{#}}}", x));
034c7af177f0 util.xtemplate: Test the each template function
Kim Alvefur <zash@zash.se>
parents: 13395
diff changeset
40 end)
13499
1f93e4f78c53 util.xtemplate: Fix error on applying each() to zero stanzas
Kim Alvefur <zash@zash.se>
parents: 13404
diff changeset
41 it("handles missing inputs", function ()
1f93e4f78c53 util.xtemplate: Fix error on applying each() to zero stanzas
Kim Alvefur <zash@zash.se>
parents: 13404
diff changeset
42 local x = st.stanza("root");
1f93e4f78c53 util.xtemplate: Fix error on applying each() to zero stanzas
Kim Alvefur <zash@zash.se>
parents: 13404
diff changeset
43 assert.same("", xtemplate.render("{foo/bar|each(i){{#}}}", x));
1f93e4f78c53 util.xtemplate: Fix error on applying each() to zero stanzas
Kim Alvefur <zash@zash.se>
parents: 13404
diff changeset
44 end)
13404
034c7af177f0 util.xtemplate: Test the each template function
Kim Alvefur <zash@zash.se>
parents: 13395
diff changeset
45 end)
13395
1675d4b6363a util.xtemplate: Add some initial tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
46 end)
1675d4b6363a util.xtemplate: Add some initial tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
47 end)