view spec/muc_util_spec.lua @ 12473:bb85be686a01

mod_s2s: Distinguish DANE TLSA errors from generic cert chain errors Otherwise it would just report "is not trusted" unless you inspect the logs. This message is sent to to the remote server, and will hopefully show up in their logs, allowing the admin to fix their DANE setup.
author Kim Alvefur <zash@zash.se>
date Mon, 25 Apr 2022 14:41:54 +0200
parents ad86b93093a3
children
line wrap: on
line source

local muc_util;

local st = require "util.stanza";

do
	-- XXX Hack for lack of a mock moduleapi
	local env = setmetatable({
		module = {
			_shared = {};
			-- Close enough to the real module:shared() for our purposes here
			shared = function (self, name)
				local t = self._shared[name];
				if t == nil then
					t = {};
					self._shared[name] = t;
				end
				return t;
			end;
		}
	}, { __index = _ENV or _G });
	muc_util = require "util.envload".envloadfile("plugins/muc/util.lib.lua", env)();
	end

describe("muc/util", function ()
	describe("filter_muc_x()", function ()
		it("correctly filters muc#user", function ()
			local stanza = st.message({ to = "to", from = "from", id = "foo" })
				:tag("x", { xmlns = "http://jabber.org/protocol/muc#user" })
					:tag("invite", { to = "user@example.com" });

			assert.equal(1, #stanza.tags);
			assert.equal(stanza, muc_util.filter_muc_x(stanza));
			assert.equal(0, #stanza.tags);
		end);

		it("correctly filters muc#user on a cloned stanza", function ()
			local stanza = st.message({ to = "to", from = "from", id = "foo" })
				:tag("x", { xmlns = "http://jabber.org/protocol/muc#user" })
					:tag("invite", { to = "user@example.com" });

			assert.equal(1, #stanza.tags);
			local filtered = muc_util.filter_muc_x(st.clone(stanza));
			assert.equal(1, #stanza.tags);
			assert.equal(0, #filtered.tags);
		end);
	end);
end);