aboutsummaryrefslogtreecommitdiffstats
path: root/spec/util_pubsub_spec.lua
diff options
context:
space:
mode:
authorMatthew Wild <mwild1@gmail.com>2018-10-18 18:00:54 +0100
committerMatthew Wild <mwild1@gmail.com>2018-10-18 18:00:54 +0100
commit44b3954d56045498adc788ca9517c33b4e56cb54 (patch)
tree722220336b9d73b1ab178b657a0cad807bdf1aca /spec/util_pubsub_spec.lua
parentdd2f749996583ed2aba09906d83541718f4c8ecf (diff)
downloadprosody-44b3954d56045498adc788ca9517c33b4e56cb54.tar.gz
prosody-44b3954d56045498adc788ca9517c33b4e56cb54.zip
util.pubsub: Allow publishing with a config that should be used as defaults only
Diffstat (limited to 'spec/util_pubsub_spec.lua')
-rw-r--r--spec/util_pubsub_spec.lua28
1 files changed, 28 insertions, 0 deletions
diff --git a/spec/util_pubsub_spec.lua b/spec/util_pubsub_spec.lua
index ec6cecf8..c44832f7 100644
--- a/spec/util_pubsub_spec.lua
+++ b/spec/util_pubsub_spec.lua
@@ -87,6 +87,34 @@ describe("util.pubsub", function ()
end);
end);
+ describe("publish with config", function ()
+ randomize(false); -- These tests are ordered
+
+ local broadcaster = spy.new(function (notif_type, node_name, subscribers, item) -- luacheck: ignore 212
+ end);
+ local service = pubsub.new({
+ broadcaster = broadcaster;
+ autocreate_on_publish = true;
+ });
+
+ it("automatically creates node with requested config", function ()
+ assert(service:publish("node", true, "1", "item 1", { myoption = true }));
+
+ local ok, config = assert(service:get_node_config("node", true));
+ assert.equals(true, config.myoption);
+ end);
+
+ it("fails to publish to a node with differing config", function ()
+ local ok, err = service:publish("node", true, "1", "item 2", { myoption = false });
+ assert.falsy(ok);
+ assert.equals("precondition-not-met", err);
+ end);
+
+ it("allows to publish to a node with differing config when only defaults are suggested", function ()
+ assert(service:publish("node", true, "1", "item 2", { _defaults_only = true, myoption = false }));
+ end);
+ end);
+
describe("#issue1082", function ()
randomize(false); -- These tests are ordered