Annotate

spec/muc_util_spec.lua @ 13587:fdb2e0568cf8

mod_authz_internal: Make 'prosody:guest' default role for all unknown JIDs This fixes an issue where e.g. remote users or even other users on the server were unable to list MUC rooms. We want to define a permission to list MUC rooms, but we want it to be available to everyone by default (the traditional behaviour). prosody:guest is the lowest role we have. I ran a quick check and it isn't really used for anything right now that would be concerning. It was originally designed for anonymous logins. I think it's safe to treat remote JIDs as equivalent, since we have no trust relationship with anonymous users either.
author Matthew Wild <mwild1@gmail.com>
date Tue, 07 Jan 2025 14:41:32 +0000
parent 10715:ad86b93093a3
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
9213
172f93f752b8 tests: Add muc/util tests for filtering MUC elements
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
1 local muc_util;
172f93f752b8 tests: Add muc/util tests for filtering MUC elements
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
2
172f93f752b8 tests: Add muc/util tests for filtering MUC elements
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3 local st = require "util.stanza";
172f93f752b8 tests: Add muc/util tests for filtering MUC elements
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4
172f93f752b8 tests: Add muc/util tests for filtering MUC elements
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5 do
10715
ad86b93093a3 spec: Include a hacky moduleapi stub to allow test to proceed
Kim Alvefur <zash@zash.se>
parents: 9213
diff changeset
6 -- XXX Hack for lack of a mock moduleapi
ad86b93093a3 spec: Include a hacky moduleapi stub to allow test to proceed
Kim Alvefur <zash@zash.se>
parents: 9213
diff changeset
7 local env = setmetatable({
ad86b93093a3 spec: Include a hacky moduleapi stub to allow test to proceed
Kim Alvefur <zash@zash.se>
parents: 9213
diff changeset
8 module = {
ad86b93093a3 spec: Include a hacky moduleapi stub to allow test to proceed
Kim Alvefur <zash@zash.se>
parents: 9213
diff changeset
9 _shared = {};
ad86b93093a3 spec: Include a hacky moduleapi stub to allow test to proceed
Kim Alvefur <zash@zash.se>
parents: 9213
diff changeset
10 -- Close enough to the real module:shared() for our purposes here
ad86b93093a3 spec: Include a hacky moduleapi stub to allow test to proceed
Kim Alvefur <zash@zash.se>
parents: 9213
diff changeset
11 shared = function (self, name)
ad86b93093a3 spec: Include a hacky moduleapi stub to allow test to proceed
Kim Alvefur <zash@zash.se>
parents: 9213
diff changeset
12 local t = self._shared[name];
ad86b93093a3 spec: Include a hacky moduleapi stub to allow test to proceed
Kim Alvefur <zash@zash.se>
parents: 9213
diff changeset
13 if t == nil then
ad86b93093a3 spec: Include a hacky moduleapi stub to allow test to proceed
Kim Alvefur <zash@zash.se>
parents: 9213
diff changeset
14 t = {};
ad86b93093a3 spec: Include a hacky moduleapi stub to allow test to proceed
Kim Alvefur <zash@zash.se>
parents: 9213
diff changeset
15 self._shared[name] = t;
ad86b93093a3 spec: Include a hacky moduleapi stub to allow test to proceed
Kim Alvefur <zash@zash.se>
parents: 9213
diff changeset
16 end
ad86b93093a3 spec: Include a hacky moduleapi stub to allow test to proceed
Kim Alvefur <zash@zash.se>
parents: 9213
diff changeset
17 return t;
ad86b93093a3 spec: Include a hacky moduleapi stub to allow test to proceed
Kim Alvefur <zash@zash.se>
parents: 9213
diff changeset
18 end;
ad86b93093a3 spec: Include a hacky moduleapi stub to allow test to proceed
Kim Alvefur <zash@zash.se>
parents: 9213
diff changeset
19 }
ad86b93093a3 spec: Include a hacky moduleapi stub to allow test to proceed
Kim Alvefur <zash@zash.se>
parents: 9213
diff changeset
20 }, { __index = _ENV or _G });
ad86b93093a3 spec: Include a hacky moduleapi stub to allow test to proceed
Kim Alvefur <zash@zash.se>
parents: 9213
diff changeset
21 muc_util = require "util.envload".envloadfile("plugins/muc/util.lib.lua", env)();
ad86b93093a3 spec: Include a hacky moduleapi stub to allow test to proceed
Kim Alvefur <zash@zash.se>
parents: 9213
diff changeset
22 end
9213
172f93f752b8 tests: Add muc/util tests for filtering MUC elements
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
23
172f93f752b8 tests: Add muc/util tests for filtering MUC elements
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
24 describe("muc/util", function ()
172f93f752b8 tests: Add muc/util tests for filtering MUC elements
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
25 describe("filter_muc_x()", function ()
172f93f752b8 tests: Add muc/util tests for filtering MUC elements
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
26 it("correctly filters muc#user", function ()
172f93f752b8 tests: Add muc/util tests for filtering MUC elements
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
27 local stanza = st.message({ to = "to", from = "from", id = "foo" })
172f93f752b8 tests: Add muc/util tests for filtering MUC elements
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
28 :tag("x", { xmlns = "http://jabber.org/protocol/muc#user" })
172f93f752b8 tests: Add muc/util tests for filtering MUC elements
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
29 :tag("invite", { to = "user@example.com" });
172f93f752b8 tests: Add muc/util tests for filtering MUC elements
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
30
172f93f752b8 tests: Add muc/util tests for filtering MUC elements
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
31 assert.equal(1, #stanza.tags);
172f93f752b8 tests: Add muc/util tests for filtering MUC elements
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
32 assert.equal(stanza, muc_util.filter_muc_x(stanza));
172f93f752b8 tests: Add muc/util tests for filtering MUC elements
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
33 assert.equal(0, #stanza.tags);
172f93f752b8 tests: Add muc/util tests for filtering MUC elements
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
34 end);
172f93f752b8 tests: Add muc/util tests for filtering MUC elements
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
35
172f93f752b8 tests: Add muc/util tests for filtering MUC elements
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
36 it("correctly filters muc#user on a cloned stanza", function ()
172f93f752b8 tests: Add muc/util tests for filtering MUC elements
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
37 local stanza = st.message({ to = "to", from = "from", id = "foo" })
172f93f752b8 tests: Add muc/util tests for filtering MUC elements
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
38 :tag("x", { xmlns = "http://jabber.org/protocol/muc#user" })
172f93f752b8 tests: Add muc/util tests for filtering MUC elements
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
39 :tag("invite", { to = "user@example.com" });
172f93f752b8 tests: Add muc/util tests for filtering MUC elements
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
40
172f93f752b8 tests: Add muc/util tests for filtering MUC elements
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
41 assert.equal(1, #stanza.tags);
172f93f752b8 tests: Add muc/util tests for filtering MUC elements
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
42 local filtered = muc_util.filter_muc_x(st.clone(stanza));
172f93f752b8 tests: Add muc/util tests for filtering MUC elements
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
43 assert.equal(1, #stanza.tags);
172f93f752b8 tests: Add muc/util tests for filtering MUC elements
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
44 assert.equal(0, #filtered.tags);
172f93f752b8 tests: Add muc/util tests for filtering MUC elements
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
45 end);
172f93f752b8 tests: Add muc/util tests for filtering MUC elements
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
46 end);
172f93f752b8 tests: Add muc/util tests for filtering MUC elements
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
47 end);