Software /
code /
prosody
Annotate
spec/util_pubsub_spec.lua @ 11226:b3ae48362f78 0.11
mod_s2s: Prevent whitespace keepalives the stream has been opened
This will result in the stream timing out instead, which is probably
correct if the stream has not been opened yet.
This was already done for c2s in e69df8093387
Thanks Ge0rG
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Thu, 10 Dec 2020 11:53:10 +0100 |
parent | 9840:ec353524b739 |
child | 10356:0a2d7efca039 |
rev | line source |
---|---|
8564
fd41dc4a78e9
util_pubsub_spec: Move util.pubsub import into a setup block
Kim Alvefur <zash@zash.se>
parents:
8558
diff
changeset
|
1 local pubsub; |
fd41dc4a78e9
util_pubsub_spec: Move util.pubsub import into a setup block
Kim Alvefur <zash@zash.se>
parents:
8558
diff
changeset
|
2 setup(function () |
fd41dc4a78e9
util_pubsub_spec: Move util.pubsub import into a setup block
Kim Alvefur <zash@zash.se>
parents:
8558
diff
changeset
|
3 pubsub = require "util.pubsub"; |
fd41dc4a78e9
util_pubsub_spec: Move util.pubsub import into a setup block
Kim Alvefur <zash@zash.se>
parents:
8558
diff
changeset
|
4 end); |
fd41dc4a78e9
util_pubsub_spec: Move util.pubsub import into a setup block
Kim Alvefur <zash@zash.se>
parents:
8558
diff
changeset
|
5 |
9176
1068f9b82e2b
util.pubsub tests: Add TODO
Matthew Wild <mwild1@gmail.com>
parents:
9175
diff
changeset
|
6 --[[TODO: |
1068f9b82e2b
util.pubsub tests: Add TODO
Matthew Wild <mwild1@gmail.com>
parents:
9175
diff
changeset
|
7 Retract |
1068f9b82e2b
util.pubsub tests: Add TODO
Matthew Wild <mwild1@gmail.com>
parents:
9175
diff
changeset
|
8 Purge |
1068f9b82e2b
util.pubsub tests: Add TODO
Matthew Wild <mwild1@gmail.com>
parents:
9175
diff
changeset
|
9 auto-create/auto-subscribe |
1068f9b82e2b
util.pubsub tests: Add TODO
Matthew Wild <mwild1@gmail.com>
parents:
9175
diff
changeset
|
10 Item store/node store |
1068f9b82e2b
util.pubsub tests: Add TODO
Matthew Wild <mwild1@gmail.com>
parents:
9175
diff
changeset
|
11 resize on max_items change |
1068f9b82e2b
util.pubsub tests: Add TODO
Matthew Wild <mwild1@gmail.com>
parents:
9175
diff
changeset
|
12 service creation config provides alternative node_defaults |
1068f9b82e2b
util.pubsub tests: Add TODO
Matthew Wild <mwild1@gmail.com>
parents:
9175
diff
changeset
|
13 get subscriptions |
1068f9b82e2b
util.pubsub tests: Add TODO
Matthew Wild <mwild1@gmail.com>
parents:
9175
diff
changeset
|
14 ]] |
1068f9b82e2b
util.pubsub tests: Add TODO
Matthew Wild <mwild1@gmail.com>
parents:
9175
diff
changeset
|
15 |
8558
5de663cef508
util_pubsub_spec: Beginnings of tests for util.pubsub
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
16 describe("util.pubsub", function () |
5de663cef508
util_pubsub_spec: Beginnings of tests for util.pubsub
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
17 describe("simple node creation and deletion", function () |
9451
db82b096b842
util.pubsub tests: Ensure necessary tests run in the defined order
Matthew Wild <mwild1@gmail.com>
parents:
9209
diff
changeset
|
18 randomize(false); -- These tests are ordered |
db82b096b842
util.pubsub tests: Ensure necessary tests run in the defined order
Matthew Wild <mwild1@gmail.com>
parents:
9209
diff
changeset
|
19 |
8558
5de663cef508
util_pubsub_spec: Beginnings of tests for util.pubsub
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
20 -- Roughly a port of scansion/scripts/pubsub_createdelete.scs |
5de663cef508
util_pubsub_spec: Beginnings of tests for util.pubsub
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
21 local service = pubsub.new(); |
5de663cef508
util_pubsub_spec: Beginnings of tests for util.pubsub
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
22 |
5de663cef508
util_pubsub_spec: Beginnings of tests for util.pubsub
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
23 describe("#create", function () |
9451
db82b096b842
util.pubsub tests: Ensure necessary tests run in the defined order
Matthew Wild <mwild1@gmail.com>
parents:
9209
diff
changeset
|
24 randomize(false); -- These tests are ordered |
8558
5de663cef508
util_pubsub_spec: Beginnings of tests for util.pubsub
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
25 it("creates a new node", function () |
5de663cef508
util_pubsub_spec: Beginnings of tests for util.pubsub
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
26 assert.truthy(service:create("princely_musings", true)); |
5de663cef508
util_pubsub_spec: Beginnings of tests for util.pubsub
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
27 end); |
5de663cef508
util_pubsub_spec: Beginnings of tests for util.pubsub
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
28 |
5de663cef508
util_pubsub_spec: Beginnings of tests for util.pubsub
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
29 it("fails to create the same node again", function () |
5de663cef508
util_pubsub_spec: Beginnings of tests for util.pubsub
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
30 assert.falsy(service:create("princely_musings", true)); |
5de663cef508
util_pubsub_spec: Beginnings of tests for util.pubsub
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
31 end); |
5de663cef508
util_pubsub_spec: Beginnings of tests for util.pubsub
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
32 end); |
5de663cef508
util_pubsub_spec: Beginnings of tests for util.pubsub
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
33 |
5de663cef508
util_pubsub_spec: Beginnings of tests for util.pubsub
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
34 describe("#delete", function () |
9451
db82b096b842
util.pubsub tests: Ensure necessary tests run in the defined order
Matthew Wild <mwild1@gmail.com>
parents:
9209
diff
changeset
|
35 randomize(false); -- These tests are ordered |
8558
5de663cef508
util_pubsub_spec: Beginnings of tests for util.pubsub
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
36 it("deletes the node", function () |
5de663cef508
util_pubsub_spec: Beginnings of tests for util.pubsub
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
37 assert.truthy(service:delete("princely_musings", true)); |
5de663cef508
util_pubsub_spec: Beginnings of tests for util.pubsub
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
38 end); |
5de663cef508
util_pubsub_spec: Beginnings of tests for util.pubsub
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
39 |
5de663cef508
util_pubsub_spec: Beginnings of tests for util.pubsub
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
40 it("can't delete an already deleted node", function () |
5de663cef508
util_pubsub_spec: Beginnings of tests for util.pubsub
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
41 assert.falsy(service:delete("princely_musings", true)); |
5de663cef508
util_pubsub_spec: Beginnings of tests for util.pubsub
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
42 end); |
5de663cef508
util_pubsub_spec: Beginnings of tests for util.pubsub
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
43 end); |
5de663cef508
util_pubsub_spec: Beginnings of tests for util.pubsub
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
44 end); |
8647
638ff2ad98e6
util.pubsub: Add simple test covering publishing and retrieving an item
Kim Alvefur <zash@zash.se>
parents:
8564
diff
changeset
|
45 |
638ff2ad98e6
util.pubsub: Add simple test covering publishing and retrieving an item
Kim Alvefur <zash@zash.se>
parents:
8564
diff
changeset
|
46 describe("simple publishing", function () |
9451
db82b096b842
util.pubsub tests: Ensure necessary tests run in the defined order
Matthew Wild <mwild1@gmail.com>
parents:
9209
diff
changeset
|
47 randomize(false); -- These tests are ordered |
db82b096b842
util.pubsub tests: Ensure necessary tests run in the defined order
Matthew Wild <mwild1@gmail.com>
parents:
9209
diff
changeset
|
48 |
9173
c53663e13b51
util.pubsub tests: Extend publishing tests to check for correct notification behaviour on subscribe/unsubscribe
Matthew Wild <mwild1@gmail.com>
parents:
9171
diff
changeset
|
49 local notified; |
9178
f226b7b5486b
util.pubsub: Silence warnings in tests [luacheck]
Kim Alvefur <zash@zash.se>
parents:
9176
diff
changeset
|
50 local broadcaster = spy.new(function (notif_type, node_name, subscribers, item) -- luacheck: ignore 212 |
9173
c53663e13b51
util.pubsub tests: Extend publishing tests to check for correct notification behaviour on subscribe/unsubscribe
Matthew Wild <mwild1@gmail.com>
parents:
9171
diff
changeset
|
51 notified = subscribers; |
c53663e13b51
util.pubsub tests: Extend publishing tests to check for correct notification behaviour on subscribe/unsubscribe
Matthew Wild <mwild1@gmail.com>
parents:
9171
diff
changeset
|
52 end); |
8817
9a3066a580ad
spec/util_pubsub: Test whether someone can subscribe to a node
Kim Alvefur <zash@zash.se>
parents:
8647
diff
changeset
|
53 local service = pubsub.new({ |
9a3066a580ad
spec/util_pubsub: Test whether someone can subscribe to a node
Kim Alvefur <zash@zash.se>
parents:
8647
diff
changeset
|
54 broadcaster = broadcaster; |
9a3066a580ad
spec/util_pubsub: Test whether someone can subscribe to a node
Kim Alvefur <zash@zash.se>
parents:
8647
diff
changeset
|
55 }); |
8647
638ff2ad98e6
util.pubsub: Add simple test covering publishing and retrieving an item
Kim Alvefur <zash@zash.se>
parents:
8564
diff
changeset
|
56 |
638ff2ad98e6
util.pubsub: Add simple test covering publishing and retrieving an item
Kim Alvefur <zash@zash.se>
parents:
8564
diff
changeset
|
57 it("creates a node", function () |
638ff2ad98e6
util.pubsub: Add simple test covering publishing and retrieving an item
Kim Alvefur <zash@zash.se>
parents:
8564
diff
changeset
|
58 assert.truthy(service:create("node", true)); |
638ff2ad98e6
util.pubsub: Add simple test covering publishing and retrieving an item
Kim Alvefur <zash@zash.se>
parents:
8564
diff
changeset
|
59 end); |
638ff2ad98e6
util.pubsub: Add simple test covering publishing and retrieving an item
Kim Alvefur <zash@zash.se>
parents:
8564
diff
changeset
|
60 |
8817
9a3066a580ad
spec/util_pubsub: Test whether someone can subscribe to a node
Kim Alvefur <zash@zash.se>
parents:
8647
diff
changeset
|
61 it("lets someone subscribe", function () |
9a3066a580ad
spec/util_pubsub: Test whether someone can subscribe to a node
Kim Alvefur <zash@zash.se>
parents:
8647
diff
changeset
|
62 assert.truthy(service:add_subscription("node", true, "someone")); |
9a3066a580ad
spec/util_pubsub: Test whether someone can subscribe to a node
Kim Alvefur <zash@zash.se>
parents:
8647
diff
changeset
|
63 end); |
9a3066a580ad
spec/util_pubsub: Test whether someone can subscribe to a node
Kim Alvefur <zash@zash.se>
parents:
8647
diff
changeset
|
64 |
8647
638ff2ad98e6
util.pubsub: Add simple test covering publishing and retrieving an item
Kim Alvefur <zash@zash.se>
parents:
8564
diff
changeset
|
65 it("publishes an item", function () |
638ff2ad98e6
util.pubsub: Add simple test covering publishing and retrieving an item
Kim Alvefur <zash@zash.se>
parents:
8564
diff
changeset
|
66 assert.truthy(service:publish("node", true, "1", "item 1")); |
9173
c53663e13b51
util.pubsub tests: Extend publishing tests to check for correct notification behaviour on subscribe/unsubscribe
Matthew Wild <mwild1@gmail.com>
parents:
9171
diff
changeset
|
67 assert.truthy(notified["someone"]); |
8647
638ff2ad98e6
util.pubsub: Add simple test covering publishing and retrieving an item
Kim Alvefur <zash@zash.se>
parents:
8564
diff
changeset
|
68 end); |
638ff2ad98e6
util.pubsub: Add simple test covering publishing and retrieving an item
Kim Alvefur <zash@zash.se>
parents:
8564
diff
changeset
|
69 |
638ff2ad98e6
util.pubsub: Add simple test covering publishing and retrieving an item
Kim Alvefur <zash@zash.se>
parents:
8564
diff
changeset
|
70 it("called the broadcaster", function () |
638ff2ad98e6
util.pubsub: Add simple test covering publishing and retrieving an item
Kim Alvefur <zash@zash.se>
parents:
8564
diff
changeset
|
71 assert.spy(broadcaster).was_called(); |
638ff2ad98e6
util.pubsub: Add simple test covering publishing and retrieving an item
Kim Alvefur <zash@zash.se>
parents:
8564
diff
changeset
|
72 end); |
638ff2ad98e6
util.pubsub: Add simple test covering publishing and retrieving an item
Kim Alvefur <zash@zash.se>
parents:
8564
diff
changeset
|
73 |
638ff2ad98e6
util.pubsub: Add simple test covering publishing and retrieving an item
Kim Alvefur <zash@zash.se>
parents:
8564
diff
changeset
|
74 it("should return one item", function () |
638ff2ad98e6
util.pubsub: Add simple test covering publishing and retrieving an item
Kim Alvefur <zash@zash.se>
parents:
8564
diff
changeset
|
75 local ok, ret = service:get_items("node", true); |
638ff2ad98e6
util.pubsub: Add simple test covering publishing and retrieving an item
Kim Alvefur <zash@zash.se>
parents:
8564
diff
changeset
|
76 assert.truthy(ok); |
638ff2ad98e6
util.pubsub: Add simple test covering publishing and retrieving an item
Kim Alvefur <zash@zash.se>
parents:
8564
diff
changeset
|
77 assert.same({ "1", ["1"] = "item 1" }, ret); |
638ff2ad98e6
util.pubsub: Add simple test covering publishing and retrieving an item
Kim Alvefur <zash@zash.se>
parents:
8564
diff
changeset
|
78 end); |
638ff2ad98e6
util.pubsub: Add simple test covering publishing and retrieving an item
Kim Alvefur <zash@zash.se>
parents:
8564
diff
changeset
|
79 |
9173
c53663e13b51
util.pubsub tests: Extend publishing tests to check for correct notification behaviour on subscribe/unsubscribe
Matthew Wild <mwild1@gmail.com>
parents:
9171
diff
changeset
|
80 it("lets someone unsubscribe", function () |
c53663e13b51
util.pubsub tests: Extend publishing tests to check for correct notification behaviour on subscribe/unsubscribe
Matthew Wild <mwild1@gmail.com>
parents:
9171
diff
changeset
|
81 assert.truthy(service:remove_subscription("node", true, "someone")); |
c53663e13b51
util.pubsub tests: Extend publishing tests to check for correct notification behaviour on subscribe/unsubscribe
Matthew Wild <mwild1@gmail.com>
parents:
9171
diff
changeset
|
82 end); |
c53663e13b51
util.pubsub tests: Extend publishing tests to check for correct notification behaviour on subscribe/unsubscribe
Matthew Wild <mwild1@gmail.com>
parents:
9171
diff
changeset
|
83 |
c53663e13b51
util.pubsub tests: Extend publishing tests to check for correct notification behaviour on subscribe/unsubscribe
Matthew Wild <mwild1@gmail.com>
parents:
9171
diff
changeset
|
84 it("does not send notifications after subscription is removed", function () |
c53663e13b51
util.pubsub tests: Extend publishing tests to check for correct notification behaviour on subscribe/unsubscribe
Matthew Wild <mwild1@gmail.com>
parents:
9171
diff
changeset
|
85 assert.truthy(service:publish("node", true, "1", "item 1")); |
c53663e13b51
util.pubsub tests: Extend publishing tests to check for correct notification behaviour on subscribe/unsubscribe
Matthew Wild <mwild1@gmail.com>
parents:
9171
diff
changeset
|
86 assert.is_nil(notified["someone"]); |
c53663e13b51
util.pubsub tests: Extend publishing tests to check for correct notification behaviour on subscribe/unsubscribe
Matthew Wild <mwild1@gmail.com>
parents:
9171
diff
changeset
|
87 end); |
8647
638ff2ad98e6
util.pubsub: Add simple test covering publishing and retrieving an item
Kim Alvefur <zash@zash.se>
parents:
8564
diff
changeset
|
88 end); |
9004
50a0f405e6c9
util_pubsub_spec: Add test for #1082
Kim Alvefur <zash@zash.se>
parents:
8817
diff
changeset
|
89 |
9516
038446c50630
util.pubsub: Allow publishing with a config that should be used as defaults only
Matthew Wild <mwild1@gmail.com>
parents:
9451
diff
changeset
|
90 describe("publish with config", function () |
038446c50630
util.pubsub: Allow publishing with a config that should be used as defaults only
Matthew Wild <mwild1@gmail.com>
parents:
9451
diff
changeset
|
91 randomize(false); -- These tests are ordered |
038446c50630
util.pubsub: Allow publishing with a config that should be used as defaults only
Matthew Wild <mwild1@gmail.com>
parents:
9451
diff
changeset
|
92 |
038446c50630
util.pubsub: Allow publishing with a config that should be used as defaults only
Matthew Wild <mwild1@gmail.com>
parents:
9451
diff
changeset
|
93 local broadcaster = spy.new(function (notif_type, node_name, subscribers, item) -- luacheck: ignore 212 |
038446c50630
util.pubsub: Allow publishing with a config that should be used as defaults only
Matthew Wild <mwild1@gmail.com>
parents:
9451
diff
changeset
|
94 end); |
038446c50630
util.pubsub: Allow publishing with a config that should be used as defaults only
Matthew Wild <mwild1@gmail.com>
parents:
9451
diff
changeset
|
95 local service = pubsub.new({ |
038446c50630
util.pubsub: Allow publishing with a config that should be used as defaults only
Matthew Wild <mwild1@gmail.com>
parents:
9451
diff
changeset
|
96 broadcaster = broadcaster; |
038446c50630
util.pubsub: Allow publishing with a config that should be used as defaults only
Matthew Wild <mwild1@gmail.com>
parents:
9451
diff
changeset
|
97 autocreate_on_publish = true; |
038446c50630
util.pubsub: Allow publishing with a config that should be used as defaults only
Matthew Wild <mwild1@gmail.com>
parents:
9451
diff
changeset
|
98 }); |
038446c50630
util.pubsub: Allow publishing with a config that should be used as defaults only
Matthew Wild <mwild1@gmail.com>
parents:
9451
diff
changeset
|
99 |
038446c50630
util.pubsub: Allow publishing with a config that should be used as defaults only
Matthew Wild <mwild1@gmail.com>
parents:
9451
diff
changeset
|
100 it("automatically creates node with requested config", function () |
038446c50630
util.pubsub: Allow publishing with a config that should be used as defaults only
Matthew Wild <mwild1@gmail.com>
parents:
9451
diff
changeset
|
101 assert(service:publish("node", true, "1", "item 1", { myoption = true })); |
038446c50630
util.pubsub: Allow publishing with a config that should be used as defaults only
Matthew Wild <mwild1@gmail.com>
parents:
9451
diff
changeset
|
102 |
038446c50630
util.pubsub: Allow publishing with a config that should be used as defaults only
Matthew Wild <mwild1@gmail.com>
parents:
9451
diff
changeset
|
103 local ok, config = assert(service:get_node_config("node", true)); |
038446c50630
util.pubsub: Allow publishing with a config that should be used as defaults only
Matthew Wild <mwild1@gmail.com>
parents:
9451
diff
changeset
|
104 assert.equals(true, config.myoption); |
038446c50630
util.pubsub: Allow publishing with a config that should be used as defaults only
Matthew Wild <mwild1@gmail.com>
parents:
9451
diff
changeset
|
105 end); |
038446c50630
util.pubsub: Allow publishing with a config that should be used as defaults only
Matthew Wild <mwild1@gmail.com>
parents:
9451
diff
changeset
|
106 |
038446c50630
util.pubsub: Allow publishing with a config that should be used as defaults only
Matthew Wild <mwild1@gmail.com>
parents:
9451
diff
changeset
|
107 it("fails to publish to a node with differing config", function () |
038446c50630
util.pubsub: Allow publishing with a config that should be used as defaults only
Matthew Wild <mwild1@gmail.com>
parents:
9451
diff
changeset
|
108 local ok, err = service:publish("node", true, "1", "item 2", { myoption = false }); |
038446c50630
util.pubsub: Allow publishing with a config that should be used as defaults only
Matthew Wild <mwild1@gmail.com>
parents:
9451
diff
changeset
|
109 assert.falsy(ok); |
038446c50630
util.pubsub: Allow publishing with a config that should be used as defaults only
Matthew Wild <mwild1@gmail.com>
parents:
9451
diff
changeset
|
110 assert.equals("precondition-not-met", err); |
038446c50630
util.pubsub: Allow publishing with a config that should be used as defaults only
Matthew Wild <mwild1@gmail.com>
parents:
9451
diff
changeset
|
111 end); |
038446c50630
util.pubsub: Allow publishing with a config that should be used as defaults only
Matthew Wild <mwild1@gmail.com>
parents:
9451
diff
changeset
|
112 |
038446c50630
util.pubsub: Allow publishing with a config that should be used as defaults only
Matthew Wild <mwild1@gmail.com>
parents:
9451
diff
changeset
|
113 it("allows to publish to a node with differing config when only defaults are suggested", function () |
038446c50630
util.pubsub: Allow publishing with a config that should be used as defaults only
Matthew Wild <mwild1@gmail.com>
parents:
9451
diff
changeset
|
114 assert(service:publish("node", true, "1", "item 2", { _defaults_only = true, myoption = false })); |
038446c50630
util.pubsub: Allow publishing with a config that should be used as defaults only
Matthew Wild <mwild1@gmail.com>
parents:
9451
diff
changeset
|
115 end); |
038446c50630
util.pubsub: Allow publishing with a config that should be used as defaults only
Matthew Wild <mwild1@gmail.com>
parents:
9451
diff
changeset
|
116 end); |
038446c50630
util.pubsub: Allow publishing with a config that should be used as defaults only
Matthew Wild <mwild1@gmail.com>
parents:
9451
diff
changeset
|
117 |
9004
50a0f405e6c9
util_pubsub_spec: Add test for #1082
Kim Alvefur <zash@zash.se>
parents:
8817
diff
changeset
|
118 describe("#issue1082", function () |
9451
db82b096b842
util.pubsub tests: Ensure necessary tests run in the defined order
Matthew Wild <mwild1@gmail.com>
parents:
9209
diff
changeset
|
119 randomize(false); -- These tests are ordered |
db82b096b842
util.pubsub tests: Ensure necessary tests run in the defined order
Matthew Wild <mwild1@gmail.com>
parents:
9209
diff
changeset
|
120 |
9004
50a0f405e6c9
util_pubsub_spec: Add test for #1082
Kim Alvefur <zash@zash.se>
parents:
8817
diff
changeset
|
121 local service = pubsub.new(); |
50a0f405e6c9
util_pubsub_spec: Add test for #1082
Kim Alvefur <zash@zash.se>
parents:
8817
diff
changeset
|
122 |
50a0f405e6c9
util_pubsub_spec: Add test for #1082
Kim Alvefur <zash@zash.se>
parents:
8817
diff
changeset
|
123 it("creates a node with max_items = 1", function () |
50a0f405e6c9
util_pubsub_spec: Add test for #1082
Kim Alvefur <zash@zash.se>
parents:
8817
diff
changeset
|
124 assert.truthy(service:create("node", true, { max_items = 1 })); |
50a0f405e6c9
util_pubsub_spec: Add test for #1082
Kim Alvefur <zash@zash.se>
parents:
8817
diff
changeset
|
125 end); |
50a0f405e6c9
util_pubsub_spec: Add test for #1082
Kim Alvefur <zash@zash.se>
parents:
8817
diff
changeset
|
126 |
50a0f405e6c9
util_pubsub_spec: Add test for #1082
Kim Alvefur <zash@zash.se>
parents:
8817
diff
changeset
|
127 it("changes max_items to 2", function () |
50a0f405e6c9
util_pubsub_spec: Add test for #1082
Kim Alvefur <zash@zash.se>
parents:
8817
diff
changeset
|
128 assert.truthy(service:set_node_config("node", true, { max_items = 2 })); |
50a0f405e6c9
util_pubsub_spec: Add test for #1082
Kim Alvefur <zash@zash.se>
parents:
8817
diff
changeset
|
129 end); |
50a0f405e6c9
util_pubsub_spec: Add test for #1082
Kim Alvefur <zash@zash.se>
parents:
8817
diff
changeset
|
130 |
50a0f405e6c9
util_pubsub_spec: Add test for #1082
Kim Alvefur <zash@zash.se>
parents:
8817
diff
changeset
|
131 it("publishes one item", function () |
50a0f405e6c9
util_pubsub_spec: Add test for #1082
Kim Alvefur <zash@zash.se>
parents:
8817
diff
changeset
|
132 assert.truthy(service:publish("node", true, "1", "item 1")); |
50a0f405e6c9
util_pubsub_spec: Add test for #1082
Kim Alvefur <zash@zash.se>
parents:
8817
diff
changeset
|
133 end); |
50a0f405e6c9
util_pubsub_spec: Add test for #1082
Kim Alvefur <zash@zash.se>
parents:
8817
diff
changeset
|
134 |
50a0f405e6c9
util_pubsub_spec: Add test for #1082
Kim Alvefur <zash@zash.se>
parents:
8817
diff
changeset
|
135 it("should return one item", function () |
50a0f405e6c9
util_pubsub_spec: Add test for #1082
Kim Alvefur <zash@zash.se>
parents:
8817
diff
changeset
|
136 local ok, ret = service:get_items("node", true); |
50a0f405e6c9
util_pubsub_spec: Add test for #1082
Kim Alvefur <zash@zash.se>
parents:
8817
diff
changeset
|
137 assert.truthy(ok); |
50a0f405e6c9
util_pubsub_spec: Add test for #1082
Kim Alvefur <zash@zash.se>
parents:
8817
diff
changeset
|
138 assert.same({ "1", ["1"] = "item 1" }, ret); |
50a0f405e6c9
util_pubsub_spec: Add test for #1082
Kim Alvefur <zash@zash.se>
parents:
8817
diff
changeset
|
139 end); |
50a0f405e6c9
util_pubsub_spec: Add test for #1082
Kim Alvefur <zash@zash.se>
parents:
8817
diff
changeset
|
140 |
50a0f405e6c9
util_pubsub_spec: Add test for #1082
Kim Alvefur <zash@zash.se>
parents:
8817
diff
changeset
|
141 it("publishes another item", function () |
50a0f405e6c9
util_pubsub_spec: Add test for #1082
Kim Alvefur <zash@zash.se>
parents:
8817
diff
changeset
|
142 assert.truthy(service:publish("node", true, "2", "item 2")); |
50a0f405e6c9
util_pubsub_spec: Add test for #1082
Kim Alvefur <zash@zash.se>
parents:
8817
diff
changeset
|
143 end); |
50a0f405e6c9
util_pubsub_spec: Add test for #1082
Kim Alvefur <zash@zash.se>
parents:
8817
diff
changeset
|
144 |
50a0f405e6c9
util_pubsub_spec: Add test for #1082
Kim Alvefur <zash@zash.se>
parents:
8817
diff
changeset
|
145 it("should return two items", function () |
50a0f405e6c9
util_pubsub_spec: Add test for #1082
Kim Alvefur <zash@zash.se>
parents:
8817
diff
changeset
|
146 local ok, ret = service:get_items("node", true); |
50a0f405e6c9
util_pubsub_spec: Add test for #1082
Kim Alvefur <zash@zash.se>
parents:
8817
diff
changeset
|
147 assert.truthy(ok); |
50a0f405e6c9
util_pubsub_spec: Add test for #1082
Kim Alvefur <zash@zash.se>
parents:
8817
diff
changeset
|
148 assert.same({ |
50a0f405e6c9
util_pubsub_spec: Add test for #1082
Kim Alvefur <zash@zash.se>
parents:
8817
diff
changeset
|
149 "2", |
50a0f405e6c9
util_pubsub_spec: Add test for #1082
Kim Alvefur <zash@zash.se>
parents:
8817
diff
changeset
|
150 "1", |
50a0f405e6c9
util_pubsub_spec: Add test for #1082
Kim Alvefur <zash@zash.se>
parents:
8817
diff
changeset
|
151 ["1"] = "item 1", |
50a0f405e6c9
util_pubsub_spec: Add test for #1082
Kim Alvefur <zash@zash.se>
parents:
8817
diff
changeset
|
152 ["2"] = "item 2", |
50a0f405e6c9
util_pubsub_spec: Add test for #1082
Kim Alvefur <zash@zash.se>
parents:
8817
diff
changeset
|
153 }, ret); |
50a0f405e6c9
util_pubsub_spec: Add test for #1082
Kim Alvefur <zash@zash.se>
parents:
8817
diff
changeset
|
154 end); |
50a0f405e6c9
util_pubsub_spec: Add test for #1082
Kim Alvefur <zash@zash.se>
parents:
8817
diff
changeset
|
155 |
50a0f405e6c9
util_pubsub_spec: Add test for #1082
Kim Alvefur <zash@zash.se>
parents:
8817
diff
changeset
|
156 it("publishes yet another item", function () |
50a0f405e6c9
util_pubsub_spec: Add test for #1082
Kim Alvefur <zash@zash.se>
parents:
8817
diff
changeset
|
157 assert.truthy(service:publish("node", true, "3", "item 3")); |
50a0f405e6c9
util_pubsub_spec: Add test for #1082
Kim Alvefur <zash@zash.se>
parents:
8817
diff
changeset
|
158 end); |
50a0f405e6c9
util_pubsub_spec: Add test for #1082
Kim Alvefur <zash@zash.se>
parents:
8817
diff
changeset
|
159 |
50a0f405e6c9
util_pubsub_spec: Add test for #1082
Kim Alvefur <zash@zash.se>
parents:
8817
diff
changeset
|
160 it("should still return only two items", function () |
50a0f405e6c9
util_pubsub_spec: Add test for #1082
Kim Alvefur <zash@zash.se>
parents:
8817
diff
changeset
|
161 local ok, ret = service:get_items("node", true); |
50a0f405e6c9
util_pubsub_spec: Add test for #1082
Kim Alvefur <zash@zash.se>
parents:
8817
diff
changeset
|
162 assert.truthy(ok); |
50a0f405e6c9
util_pubsub_spec: Add test for #1082
Kim Alvefur <zash@zash.se>
parents:
8817
diff
changeset
|
163 assert.same({ |
50a0f405e6c9
util_pubsub_spec: Add test for #1082
Kim Alvefur <zash@zash.se>
parents:
8817
diff
changeset
|
164 "3", |
50a0f405e6c9
util_pubsub_spec: Add test for #1082
Kim Alvefur <zash@zash.se>
parents:
8817
diff
changeset
|
165 "2", |
50a0f405e6c9
util_pubsub_spec: Add test for #1082
Kim Alvefur <zash@zash.se>
parents:
8817
diff
changeset
|
166 ["2"] = "item 2", |
50a0f405e6c9
util_pubsub_spec: Add test for #1082
Kim Alvefur <zash@zash.se>
parents:
8817
diff
changeset
|
167 ["3"] = "item 3", |
50a0f405e6c9
util_pubsub_spec: Add test for #1082
Kim Alvefur <zash@zash.se>
parents:
8817
diff
changeset
|
168 }, ret); |
50a0f405e6c9
util_pubsub_spec: Add test for #1082
Kim Alvefur <zash@zash.se>
parents:
8817
diff
changeset
|
169 end); |
50a0f405e6c9
util_pubsub_spec: Add test for #1082
Kim Alvefur <zash@zash.se>
parents:
8817
diff
changeset
|
170 |
50a0f405e6c9
util_pubsub_spec: Add test for #1082
Kim Alvefur <zash@zash.se>
parents:
8817
diff
changeset
|
171 end); |
9169
3ec013185c15
util.pubsub tests: Add some initial access model tests (open and whitelist)
Matthew Wild <mwild1@gmail.com>
parents:
9159
diff
changeset
|
172 |
9816
7f84d7f77a00
util.pubsub: Add support for requesting multiple specific items (needed for #1305)
Kim Alvefur <zash@zash.se>
parents:
9742
diff
changeset
|
173 describe("the thing", function () |
7f84d7f77a00
util.pubsub: Add support for requesting multiple specific items (needed for #1305)
Kim Alvefur <zash@zash.se>
parents:
9742
diff
changeset
|
174 randomize(false); -- These tests are ordered |
7f84d7f77a00
util.pubsub: Add support for requesting multiple specific items (needed for #1305)
Kim Alvefur <zash@zash.se>
parents:
9742
diff
changeset
|
175 |
7f84d7f77a00
util.pubsub: Add support for requesting multiple specific items (needed for #1305)
Kim Alvefur <zash@zash.se>
parents:
9742
diff
changeset
|
176 local service = pubsub.new(); |
7f84d7f77a00
util.pubsub: Add support for requesting multiple specific items (needed for #1305)
Kim Alvefur <zash@zash.se>
parents:
9742
diff
changeset
|
177 |
7f84d7f77a00
util.pubsub: Add support for requesting multiple specific items (needed for #1305)
Kim Alvefur <zash@zash.se>
parents:
9742
diff
changeset
|
178 it("creates a node with some items", function () |
7f84d7f77a00
util.pubsub: Add support for requesting multiple specific items (needed for #1305)
Kim Alvefur <zash@zash.se>
parents:
9742
diff
changeset
|
179 assert.truthy(service:create("node", true, { max_items = 3 })); |
7f84d7f77a00
util.pubsub: Add support for requesting multiple specific items (needed for #1305)
Kim Alvefur <zash@zash.se>
parents:
9742
diff
changeset
|
180 assert.truthy(service:publish("node", true, "1", "item 1")); |
7f84d7f77a00
util.pubsub: Add support for requesting multiple specific items (needed for #1305)
Kim Alvefur <zash@zash.se>
parents:
9742
diff
changeset
|
181 assert.truthy(service:publish("node", true, "2", "item 2")); |
7f84d7f77a00
util.pubsub: Add support for requesting multiple specific items (needed for #1305)
Kim Alvefur <zash@zash.se>
parents:
9742
diff
changeset
|
182 assert.truthy(service:publish("node", true, "3", "item 3")); |
7f84d7f77a00
util.pubsub: Add support for requesting multiple specific items (needed for #1305)
Kim Alvefur <zash@zash.se>
parents:
9742
diff
changeset
|
183 end); |
7f84d7f77a00
util.pubsub: Add support for requesting multiple specific items (needed for #1305)
Kim Alvefur <zash@zash.se>
parents:
9742
diff
changeset
|
184 |
7f84d7f77a00
util.pubsub: Add support for requesting multiple specific items (needed for #1305)
Kim Alvefur <zash@zash.se>
parents:
9742
diff
changeset
|
185 it("should return the requested item", function () |
7f84d7f77a00
util.pubsub: Add support for requesting multiple specific items (needed for #1305)
Kim Alvefur <zash@zash.se>
parents:
9742
diff
changeset
|
186 local ok, ret = service:get_items("node", true, "1"); |
7f84d7f77a00
util.pubsub: Add support for requesting multiple specific items (needed for #1305)
Kim Alvefur <zash@zash.se>
parents:
9742
diff
changeset
|
187 assert.truthy(ok); |
7f84d7f77a00
util.pubsub: Add support for requesting multiple specific items (needed for #1305)
Kim Alvefur <zash@zash.se>
parents:
9742
diff
changeset
|
188 assert.same({ "1", ["1"] = "item 1" }, ret); |
7f84d7f77a00
util.pubsub: Add support for requesting multiple specific items (needed for #1305)
Kim Alvefur <zash@zash.se>
parents:
9742
diff
changeset
|
189 end); |
7f84d7f77a00
util.pubsub: Add support for requesting multiple specific items (needed for #1305)
Kim Alvefur <zash@zash.se>
parents:
9742
diff
changeset
|
190 |
7f84d7f77a00
util.pubsub: Add support for requesting multiple specific items (needed for #1305)
Kim Alvefur <zash@zash.se>
parents:
9742
diff
changeset
|
191 it("should return multiple requested items", function () |
7f84d7f77a00
util.pubsub: Add support for requesting multiple specific items (needed for #1305)
Kim Alvefur <zash@zash.se>
parents:
9742
diff
changeset
|
192 local ok, ret = service:get_items("node", true, { "1", "2" }); |
7f84d7f77a00
util.pubsub: Add support for requesting multiple specific items (needed for #1305)
Kim Alvefur <zash@zash.se>
parents:
9742
diff
changeset
|
193 assert.truthy(ok); |
7f84d7f77a00
util.pubsub: Add support for requesting multiple specific items (needed for #1305)
Kim Alvefur <zash@zash.se>
parents:
9742
diff
changeset
|
194 assert.same({ |
7f84d7f77a00
util.pubsub: Add support for requesting multiple specific items (needed for #1305)
Kim Alvefur <zash@zash.se>
parents:
9742
diff
changeset
|
195 "1", |
7f84d7f77a00
util.pubsub: Add support for requesting multiple specific items (needed for #1305)
Kim Alvefur <zash@zash.se>
parents:
9742
diff
changeset
|
196 "2", |
7f84d7f77a00
util.pubsub: Add support for requesting multiple specific items (needed for #1305)
Kim Alvefur <zash@zash.se>
parents:
9742
diff
changeset
|
197 ["1"] = "item 1", |
7f84d7f77a00
util.pubsub: Add support for requesting multiple specific items (needed for #1305)
Kim Alvefur <zash@zash.se>
parents:
9742
diff
changeset
|
198 ["2"] = "item 2", |
7f84d7f77a00
util.pubsub: Add support for requesting multiple specific items (needed for #1305)
Kim Alvefur <zash@zash.se>
parents:
9742
diff
changeset
|
199 }, ret); |
7f84d7f77a00
util.pubsub: Add support for requesting multiple specific items (needed for #1305)
Kim Alvefur <zash@zash.se>
parents:
9742
diff
changeset
|
200 end); |
7f84d7f77a00
util.pubsub: Add support for requesting multiple specific items (needed for #1305)
Kim Alvefur <zash@zash.se>
parents:
9742
diff
changeset
|
201 end); |
7f84d7f77a00
util.pubsub: Add support for requesting multiple specific items (needed for #1305)
Kim Alvefur <zash@zash.se>
parents:
9742
diff
changeset
|
202 |
7f84d7f77a00
util.pubsub: Add support for requesting multiple specific items (needed for #1305)
Kim Alvefur <zash@zash.se>
parents:
9742
diff
changeset
|
203 |
9174
160032d55ff1
util.pubsub tests: Add initial node config tests
Matthew Wild <mwild1@gmail.com>
parents:
9173
diff
changeset
|
204 describe("node config", function () |
160032d55ff1
util.pubsub tests: Add initial node config tests
Matthew Wild <mwild1@gmail.com>
parents:
9173
diff
changeset
|
205 local service; |
160032d55ff1
util.pubsub tests: Add initial node config tests
Matthew Wild <mwild1@gmail.com>
parents:
9173
diff
changeset
|
206 before_each(function () |
160032d55ff1
util.pubsub tests: Add initial node config tests
Matthew Wild <mwild1@gmail.com>
parents:
9173
diff
changeset
|
207 service = pubsub.new(); |
160032d55ff1
util.pubsub tests: Add initial node config tests
Matthew Wild <mwild1@gmail.com>
parents:
9173
diff
changeset
|
208 service:create("test", true); |
160032d55ff1
util.pubsub tests: Add initial node config tests
Matthew Wild <mwild1@gmail.com>
parents:
9173
diff
changeset
|
209 end); |
160032d55ff1
util.pubsub tests: Add initial node config tests
Matthew Wild <mwild1@gmail.com>
parents:
9173
diff
changeset
|
210 it("access is forbidden for unaffiliated entities", function () |
160032d55ff1
util.pubsub tests: Add initial node config tests
Matthew Wild <mwild1@gmail.com>
parents:
9173
diff
changeset
|
211 local ok, err = service:get_node_config("test", "stranger"); |
160032d55ff1
util.pubsub tests: Add initial node config tests
Matthew Wild <mwild1@gmail.com>
parents:
9173
diff
changeset
|
212 assert.is_falsy(ok); |
160032d55ff1
util.pubsub tests: Add initial node config tests
Matthew Wild <mwild1@gmail.com>
parents:
9173
diff
changeset
|
213 assert.equals("forbidden", err); |
160032d55ff1
util.pubsub tests: Add initial node config tests
Matthew Wild <mwild1@gmail.com>
parents:
9173
diff
changeset
|
214 end); |
160032d55ff1
util.pubsub tests: Add initial node config tests
Matthew Wild <mwild1@gmail.com>
parents:
9173
diff
changeset
|
215 it("returns an error for nodes that do not exist", function () |
160032d55ff1
util.pubsub tests: Add initial node config tests
Matthew Wild <mwild1@gmail.com>
parents:
9173
diff
changeset
|
216 local ok, err = service:get_node_config("nonexistent", true); |
160032d55ff1
util.pubsub tests: Add initial node config tests
Matthew Wild <mwild1@gmail.com>
parents:
9173
diff
changeset
|
217 assert.is_falsy(ok); |
160032d55ff1
util.pubsub tests: Add initial node config tests
Matthew Wild <mwild1@gmail.com>
parents:
9173
diff
changeset
|
218 assert.equals("item-not-found", err); |
160032d55ff1
util.pubsub tests: Add initial node config tests
Matthew Wild <mwild1@gmail.com>
parents:
9173
diff
changeset
|
219 end); |
160032d55ff1
util.pubsub tests: Add initial node config tests
Matthew Wild <mwild1@gmail.com>
parents:
9173
diff
changeset
|
220 end); |
160032d55ff1
util.pubsub tests: Add initial node config tests
Matthew Wild <mwild1@gmail.com>
parents:
9173
diff
changeset
|
221 |
9169
3ec013185c15
util.pubsub tests: Add some initial access model tests (open and whitelist)
Matthew Wild <mwild1@gmail.com>
parents:
9159
diff
changeset
|
222 describe("access model", function () |
3ec013185c15
util.pubsub tests: Add some initial access model tests (open and whitelist)
Matthew Wild <mwild1@gmail.com>
parents:
9159
diff
changeset
|
223 describe("open", function () |
3ec013185c15
util.pubsub tests: Add some initial access model tests (open and whitelist)
Matthew Wild <mwild1@gmail.com>
parents:
9159
diff
changeset
|
224 local service; |
3ec013185c15
util.pubsub tests: Add some initial access model tests (open and whitelist)
Matthew Wild <mwild1@gmail.com>
parents:
9159
diff
changeset
|
225 before_each(function () |
3ec013185c15
util.pubsub tests: Add some initial access model tests (open and whitelist)
Matthew Wild <mwild1@gmail.com>
parents:
9159
diff
changeset
|
226 service = pubsub.new(); |
3ec013185c15
util.pubsub tests: Add some initial access model tests (open and whitelist)
Matthew Wild <mwild1@gmail.com>
parents:
9159
diff
changeset
|
227 -- Do not supply any config, 'open' should be default |
3ec013185c15
util.pubsub tests: Add some initial access model tests (open and whitelist)
Matthew Wild <mwild1@gmail.com>
parents:
9159
diff
changeset
|
228 service:create("test", true); |
3ec013185c15
util.pubsub tests: Add some initial access model tests (open and whitelist)
Matthew Wild <mwild1@gmail.com>
parents:
9159
diff
changeset
|
229 end); |
3ec013185c15
util.pubsub tests: Add some initial access model tests (open and whitelist)
Matthew Wild <mwild1@gmail.com>
parents:
9159
diff
changeset
|
230 it("should be the default", function () |
3ec013185c15
util.pubsub tests: Add some initial access model tests (open and whitelist)
Matthew Wild <mwild1@gmail.com>
parents:
9159
diff
changeset
|
231 local ok, config = service:get_node_config("test", true); |
3ec013185c15
util.pubsub tests: Add some initial access model tests (open and whitelist)
Matthew Wild <mwild1@gmail.com>
parents:
9159
diff
changeset
|
232 assert.equal("open", config.access_model); |
3ec013185c15
util.pubsub tests: Add some initial access model tests (open and whitelist)
Matthew Wild <mwild1@gmail.com>
parents:
9159
diff
changeset
|
233 end); |
3ec013185c15
util.pubsub tests: Add some initial access model tests (open and whitelist)
Matthew Wild <mwild1@gmail.com>
parents:
9159
diff
changeset
|
234 it("should allow anyone to subscribe", function () |
3ec013185c15
util.pubsub tests: Add some initial access model tests (open and whitelist)
Matthew Wild <mwild1@gmail.com>
parents:
9159
diff
changeset
|
235 local ok = service:add_subscription("test", "stranger", "stranger"); |
3ec013185c15
util.pubsub tests: Add some initial access model tests (open and whitelist)
Matthew Wild <mwild1@gmail.com>
parents:
9159
diff
changeset
|
236 assert.is_true(ok); |
3ec013185c15
util.pubsub tests: Add some initial access model tests (open and whitelist)
Matthew Wild <mwild1@gmail.com>
parents:
9159
diff
changeset
|
237 end); |
3ec013185c15
util.pubsub tests: Add some initial access model tests (open and whitelist)
Matthew Wild <mwild1@gmail.com>
parents:
9159
diff
changeset
|
238 it("should still reject outcast-affiliated entities", function () |
3ec013185c15
util.pubsub tests: Add some initial access model tests (open and whitelist)
Matthew Wild <mwild1@gmail.com>
parents:
9159
diff
changeset
|
239 assert(service:set_affiliation("test", true, "enemy", "outcast")); |
3ec013185c15
util.pubsub tests: Add some initial access model tests (open and whitelist)
Matthew Wild <mwild1@gmail.com>
parents:
9159
diff
changeset
|
240 local ok, err = service:add_subscription("test", "enemy", "enemy"); |
3ec013185c15
util.pubsub tests: Add some initial access model tests (open and whitelist)
Matthew Wild <mwild1@gmail.com>
parents:
9159
diff
changeset
|
241 assert.is_falsy(ok); |
3ec013185c15
util.pubsub tests: Add some initial access model tests (open and whitelist)
Matthew Wild <mwild1@gmail.com>
parents:
9159
diff
changeset
|
242 assert.equal("forbidden", err); |
3ec013185c15
util.pubsub tests: Add some initial access model tests (open and whitelist)
Matthew Wild <mwild1@gmail.com>
parents:
9159
diff
changeset
|
243 end); |
3ec013185c15
util.pubsub tests: Add some initial access model tests (open and whitelist)
Matthew Wild <mwild1@gmail.com>
parents:
9159
diff
changeset
|
244 end); |
3ec013185c15
util.pubsub tests: Add some initial access model tests (open and whitelist)
Matthew Wild <mwild1@gmail.com>
parents:
9159
diff
changeset
|
245 describe("whitelist", function () |
3ec013185c15
util.pubsub tests: Add some initial access model tests (open and whitelist)
Matthew Wild <mwild1@gmail.com>
parents:
9159
diff
changeset
|
246 local service; |
3ec013185c15
util.pubsub tests: Add some initial access model tests (open and whitelist)
Matthew Wild <mwild1@gmail.com>
parents:
9159
diff
changeset
|
247 before_each(function () |
3ec013185c15
util.pubsub tests: Add some initial access model tests (open and whitelist)
Matthew Wild <mwild1@gmail.com>
parents:
9159
diff
changeset
|
248 service = assert(pubsub.new()); |
3ec013185c15
util.pubsub tests: Add some initial access model tests (open and whitelist)
Matthew Wild <mwild1@gmail.com>
parents:
9159
diff
changeset
|
249 assert.is_true(service:create("test", true, { access_model = "whitelist" })); |
3ec013185c15
util.pubsub tests: Add some initial access model tests (open and whitelist)
Matthew Wild <mwild1@gmail.com>
parents:
9159
diff
changeset
|
250 end); |
3ec013185c15
util.pubsub tests: Add some initial access model tests (open and whitelist)
Matthew Wild <mwild1@gmail.com>
parents:
9159
diff
changeset
|
251 it("should be present in the configuration", function () |
3ec013185c15
util.pubsub tests: Add some initial access model tests (open and whitelist)
Matthew Wild <mwild1@gmail.com>
parents:
9159
diff
changeset
|
252 local ok, config = service:get_node_config("test", true); |
3ec013185c15
util.pubsub tests: Add some initial access model tests (open and whitelist)
Matthew Wild <mwild1@gmail.com>
parents:
9159
diff
changeset
|
253 assert.equal("whitelist", config.access_model); |
3ec013185c15
util.pubsub tests: Add some initial access model tests (open and whitelist)
Matthew Wild <mwild1@gmail.com>
parents:
9159
diff
changeset
|
254 end); |
3ec013185c15
util.pubsub tests: Add some initial access model tests (open and whitelist)
Matthew Wild <mwild1@gmail.com>
parents:
9159
diff
changeset
|
255 it("should not allow anyone to subscribe", function () |
3ec013185c15
util.pubsub tests: Add some initial access model tests (open and whitelist)
Matthew Wild <mwild1@gmail.com>
parents:
9159
diff
changeset
|
256 local ok, err = service:add_subscription("test", "stranger", "stranger"); |
3ec013185c15
util.pubsub tests: Add some initial access model tests (open and whitelist)
Matthew Wild <mwild1@gmail.com>
parents:
9159
diff
changeset
|
257 assert.is_false(ok); |
3ec013185c15
util.pubsub tests: Add some initial access model tests (open and whitelist)
Matthew Wild <mwild1@gmail.com>
parents:
9159
diff
changeset
|
258 assert.equals("forbidden", err); |
3ec013185c15
util.pubsub tests: Add some initial access model tests (open and whitelist)
Matthew Wild <mwild1@gmail.com>
parents:
9159
diff
changeset
|
259 end); |
9171
5f03fe90704f
util.pubsub tests: Add tests for publish_model (publishers, open, subscribers)
Matthew Wild <mwild1@gmail.com>
parents:
9169
diff
changeset
|
260 end); |
9175
43b6f67aba05
util.pubsub tests: Add tests to confirm new access model is enforced on config change
Matthew Wild <mwild1@gmail.com>
parents:
9174
diff
changeset
|
261 describe("change", function () |
43b6f67aba05
util.pubsub tests: Add tests to confirm new access model is enforced on config change
Matthew Wild <mwild1@gmail.com>
parents:
9174
diff
changeset
|
262 local service; |
43b6f67aba05
util.pubsub tests: Add tests to confirm new access model is enforced on config change
Matthew Wild <mwild1@gmail.com>
parents:
9174
diff
changeset
|
263 before_each(function () |
43b6f67aba05
util.pubsub tests: Add tests to confirm new access model is enforced on config change
Matthew Wild <mwild1@gmail.com>
parents:
9174
diff
changeset
|
264 service = pubsub.new(); |
43b6f67aba05
util.pubsub tests: Add tests to confirm new access model is enforced on config change
Matthew Wild <mwild1@gmail.com>
parents:
9174
diff
changeset
|
265 service:create("test", true, { access_model = "open" }); |
43b6f67aba05
util.pubsub tests: Add tests to confirm new access model is enforced on config change
Matthew Wild <mwild1@gmail.com>
parents:
9174
diff
changeset
|
266 end); |
43b6f67aba05
util.pubsub tests: Add tests to confirm new access model is enforced on config change
Matthew Wild <mwild1@gmail.com>
parents:
9174
diff
changeset
|
267 it("affects existing subscriptions", function () |
43b6f67aba05
util.pubsub tests: Add tests to confirm new access model is enforced on config change
Matthew Wild <mwild1@gmail.com>
parents:
9174
diff
changeset
|
268 do |
43b6f67aba05
util.pubsub tests: Add tests to confirm new access model is enforced on config change
Matthew Wild <mwild1@gmail.com>
parents:
9174
diff
changeset
|
269 local ok = service:add_subscription("test", "stranger", "stranger"); |
43b6f67aba05
util.pubsub tests: Add tests to confirm new access model is enforced on config change
Matthew Wild <mwild1@gmail.com>
parents:
9174
diff
changeset
|
270 assert.is_true(ok); |
43b6f67aba05
util.pubsub tests: Add tests to confirm new access model is enforced on config change
Matthew Wild <mwild1@gmail.com>
parents:
9174
diff
changeset
|
271 end |
43b6f67aba05
util.pubsub tests: Add tests to confirm new access model is enforced on config change
Matthew Wild <mwild1@gmail.com>
parents:
9174
diff
changeset
|
272 do |
43b6f67aba05
util.pubsub tests: Add tests to confirm new access model is enforced on config change
Matthew Wild <mwild1@gmail.com>
parents:
9174
diff
changeset
|
273 local ok, sub = service:get_subscription("test", "stranger", "stranger"); |
43b6f67aba05
util.pubsub tests: Add tests to confirm new access model is enforced on config change
Matthew Wild <mwild1@gmail.com>
parents:
9174
diff
changeset
|
274 assert.is_true(ok); |
43b6f67aba05
util.pubsub tests: Add tests to confirm new access model is enforced on config change
Matthew Wild <mwild1@gmail.com>
parents:
9174
diff
changeset
|
275 assert.is_true(sub); |
43b6f67aba05
util.pubsub tests: Add tests to confirm new access model is enforced on config change
Matthew Wild <mwild1@gmail.com>
parents:
9174
diff
changeset
|
276 end |
43b6f67aba05
util.pubsub tests: Add tests to confirm new access model is enforced on config change
Matthew Wild <mwild1@gmail.com>
parents:
9174
diff
changeset
|
277 assert(service:set_node_config("test", true, { access_model = "whitelist" })); |
43b6f67aba05
util.pubsub tests: Add tests to confirm new access model is enforced on config change
Matthew Wild <mwild1@gmail.com>
parents:
9174
diff
changeset
|
278 do |
43b6f67aba05
util.pubsub tests: Add tests to confirm new access model is enforced on config change
Matthew Wild <mwild1@gmail.com>
parents:
9174
diff
changeset
|
279 local ok, sub = service:get_subscription("test", "stranger", "stranger"); |
43b6f67aba05
util.pubsub tests: Add tests to confirm new access model is enforced on config change
Matthew Wild <mwild1@gmail.com>
parents:
9174
diff
changeset
|
280 assert.is_true(ok); |
43b6f67aba05
util.pubsub tests: Add tests to confirm new access model is enforced on config change
Matthew Wild <mwild1@gmail.com>
parents:
9174
diff
changeset
|
281 assert.is_nil(sub); |
43b6f67aba05
util.pubsub tests: Add tests to confirm new access model is enforced on config change
Matthew Wild <mwild1@gmail.com>
parents:
9174
diff
changeset
|
282 end |
43b6f67aba05
util.pubsub tests: Add tests to confirm new access model is enforced on config change
Matthew Wild <mwild1@gmail.com>
parents:
9174
diff
changeset
|
283 end); |
43b6f67aba05
util.pubsub tests: Add tests to confirm new access model is enforced on config change
Matthew Wild <mwild1@gmail.com>
parents:
9174
diff
changeset
|
284 end); |
9171
5f03fe90704f
util.pubsub tests: Add tests for publish_model (publishers, open, subscribers)
Matthew Wild <mwild1@gmail.com>
parents:
9169
diff
changeset
|
285 end); |
5f03fe90704f
util.pubsub tests: Add tests for publish_model (publishers, open, subscribers)
Matthew Wild <mwild1@gmail.com>
parents:
9169
diff
changeset
|
286 |
5f03fe90704f
util.pubsub tests: Add tests for publish_model (publishers, open, subscribers)
Matthew Wild <mwild1@gmail.com>
parents:
9169
diff
changeset
|
287 describe("publish model", function () |
5f03fe90704f
util.pubsub tests: Add tests for publish_model (publishers, open, subscribers)
Matthew Wild <mwild1@gmail.com>
parents:
9169
diff
changeset
|
288 describe("publishers", function () |
5f03fe90704f
util.pubsub tests: Add tests for publish_model (publishers, open, subscribers)
Matthew Wild <mwild1@gmail.com>
parents:
9169
diff
changeset
|
289 local service; |
5f03fe90704f
util.pubsub tests: Add tests for publish_model (publishers, open, subscribers)
Matthew Wild <mwild1@gmail.com>
parents:
9169
diff
changeset
|
290 before_each(function () |
5f03fe90704f
util.pubsub tests: Add tests for publish_model (publishers, open, subscribers)
Matthew Wild <mwild1@gmail.com>
parents:
9169
diff
changeset
|
291 service = pubsub.new(); |
5f03fe90704f
util.pubsub tests: Add tests for publish_model (publishers, open, subscribers)
Matthew Wild <mwild1@gmail.com>
parents:
9169
diff
changeset
|
292 -- Do not supply any config, 'publishers' should be default |
5f03fe90704f
util.pubsub tests: Add tests for publish_model (publishers, open, subscribers)
Matthew Wild <mwild1@gmail.com>
parents:
9169
diff
changeset
|
293 service:create("test", true); |
5f03fe90704f
util.pubsub tests: Add tests for publish_model (publishers, open, subscribers)
Matthew Wild <mwild1@gmail.com>
parents:
9169
diff
changeset
|
294 end); |
5f03fe90704f
util.pubsub tests: Add tests for publish_model (publishers, open, subscribers)
Matthew Wild <mwild1@gmail.com>
parents:
9169
diff
changeset
|
295 it("should be the default", function () |
5f03fe90704f
util.pubsub tests: Add tests for publish_model (publishers, open, subscribers)
Matthew Wild <mwild1@gmail.com>
parents:
9169
diff
changeset
|
296 local ok, config = service:get_node_config("test", true); |
5f03fe90704f
util.pubsub tests: Add tests for publish_model (publishers, open, subscribers)
Matthew Wild <mwild1@gmail.com>
parents:
9169
diff
changeset
|
297 assert.equal("publishers", config.publish_model); |
5f03fe90704f
util.pubsub tests: Add tests for publish_model (publishers, open, subscribers)
Matthew Wild <mwild1@gmail.com>
parents:
9169
diff
changeset
|
298 end); |
9169
3ec013185c15
util.pubsub tests: Add some initial access model tests (open and whitelist)
Matthew Wild <mwild1@gmail.com>
parents:
9159
diff
changeset
|
299 it("should not allow anyone to publish", function () |
9171
5f03fe90704f
util.pubsub tests: Add tests for publish_model (publishers, open, subscribers)
Matthew Wild <mwild1@gmail.com>
parents:
9169
diff
changeset
|
300 assert.is_true(service:add_subscription("test", "stranger", "stranger")); |
9169
3ec013185c15
util.pubsub tests: Add some initial access model tests (open and whitelist)
Matthew Wild <mwild1@gmail.com>
parents:
9159
diff
changeset
|
301 local ok, err = service:publish("test", "stranger", "item1", "foo"); |
3ec013185c15
util.pubsub tests: Add some initial access model tests (open and whitelist)
Matthew Wild <mwild1@gmail.com>
parents:
9159
diff
changeset
|
302 assert.is_falsy(ok); |
3ec013185c15
util.pubsub tests: Add some initial access model tests (open and whitelist)
Matthew Wild <mwild1@gmail.com>
parents:
9159
diff
changeset
|
303 assert.equals("forbidden", err); |
3ec013185c15
util.pubsub tests: Add some initial access model tests (open and whitelist)
Matthew Wild <mwild1@gmail.com>
parents:
9159
diff
changeset
|
304 end); |
9171
5f03fe90704f
util.pubsub tests: Add tests for publish_model (publishers, open, subscribers)
Matthew Wild <mwild1@gmail.com>
parents:
9169
diff
changeset
|
305 it("should allow publishers to publish", function () |
5f03fe90704f
util.pubsub tests: Add tests for publish_model (publishers, open, subscribers)
Matthew Wild <mwild1@gmail.com>
parents:
9169
diff
changeset
|
306 assert(service:set_affiliation("test", true, "mypublisher", "publisher")); |
5f03fe90704f
util.pubsub tests: Add tests for publish_model (publishers, open, subscribers)
Matthew Wild <mwild1@gmail.com>
parents:
9169
diff
changeset
|
307 local ok, err = service:publish("test", "mypublisher", "item1", "foo"); |
5f03fe90704f
util.pubsub tests: Add tests for publish_model (publishers, open, subscribers)
Matthew Wild <mwild1@gmail.com>
parents:
9169
diff
changeset
|
308 assert.is_true(ok); |
5f03fe90704f
util.pubsub tests: Add tests for publish_model (publishers, open, subscribers)
Matthew Wild <mwild1@gmail.com>
parents:
9169
diff
changeset
|
309 end); |
5f03fe90704f
util.pubsub tests: Add tests for publish_model (publishers, open, subscribers)
Matthew Wild <mwild1@gmail.com>
parents:
9169
diff
changeset
|
310 it("should allow owners to publish", function () |
5f03fe90704f
util.pubsub tests: Add tests for publish_model (publishers, open, subscribers)
Matthew Wild <mwild1@gmail.com>
parents:
9169
diff
changeset
|
311 assert(service:set_affiliation("test", true, "myowner", "owner")); |
5f03fe90704f
util.pubsub tests: Add tests for publish_model (publishers, open, subscribers)
Matthew Wild <mwild1@gmail.com>
parents:
9169
diff
changeset
|
312 local ok = service:publish("test", "myowner", "item1", "foo"); |
5f03fe90704f
util.pubsub tests: Add tests for publish_model (publishers, open, subscribers)
Matthew Wild <mwild1@gmail.com>
parents:
9169
diff
changeset
|
313 assert.is_true(ok); |
5f03fe90704f
util.pubsub tests: Add tests for publish_model (publishers, open, subscribers)
Matthew Wild <mwild1@gmail.com>
parents:
9169
diff
changeset
|
314 end); |
5f03fe90704f
util.pubsub tests: Add tests for publish_model (publishers, open, subscribers)
Matthew Wild <mwild1@gmail.com>
parents:
9169
diff
changeset
|
315 end); |
5f03fe90704f
util.pubsub tests: Add tests for publish_model (publishers, open, subscribers)
Matthew Wild <mwild1@gmail.com>
parents:
9169
diff
changeset
|
316 describe("open", function () |
5f03fe90704f
util.pubsub tests: Add tests for publish_model (publishers, open, subscribers)
Matthew Wild <mwild1@gmail.com>
parents:
9169
diff
changeset
|
317 local service; |
5f03fe90704f
util.pubsub tests: Add tests for publish_model (publishers, open, subscribers)
Matthew Wild <mwild1@gmail.com>
parents:
9169
diff
changeset
|
318 before_each(function () |
5f03fe90704f
util.pubsub tests: Add tests for publish_model (publishers, open, subscribers)
Matthew Wild <mwild1@gmail.com>
parents:
9169
diff
changeset
|
319 service = pubsub.new(); |
5f03fe90704f
util.pubsub tests: Add tests for publish_model (publishers, open, subscribers)
Matthew Wild <mwild1@gmail.com>
parents:
9169
diff
changeset
|
320 service:create("test", true, { publish_model = "open" }); |
5f03fe90704f
util.pubsub tests: Add tests for publish_model (publishers, open, subscribers)
Matthew Wild <mwild1@gmail.com>
parents:
9169
diff
changeset
|
321 end); |
5f03fe90704f
util.pubsub tests: Add tests for publish_model (publishers, open, subscribers)
Matthew Wild <mwild1@gmail.com>
parents:
9169
diff
changeset
|
322 it("should allow anyone to publish", function () |
5f03fe90704f
util.pubsub tests: Add tests for publish_model (publishers, open, subscribers)
Matthew Wild <mwild1@gmail.com>
parents:
9169
diff
changeset
|
323 local ok = service:publish("test", "stranger", "item1", "foo"); |
5f03fe90704f
util.pubsub tests: Add tests for publish_model (publishers, open, subscribers)
Matthew Wild <mwild1@gmail.com>
parents:
9169
diff
changeset
|
324 assert.is_true(ok); |
5f03fe90704f
util.pubsub tests: Add tests for publish_model (publishers, open, subscribers)
Matthew Wild <mwild1@gmail.com>
parents:
9169
diff
changeset
|
325 end); |
5f03fe90704f
util.pubsub tests: Add tests for publish_model (publishers, open, subscribers)
Matthew Wild <mwild1@gmail.com>
parents:
9169
diff
changeset
|
326 end); |
5f03fe90704f
util.pubsub tests: Add tests for publish_model (publishers, open, subscribers)
Matthew Wild <mwild1@gmail.com>
parents:
9169
diff
changeset
|
327 describe("subscribers", function () |
5f03fe90704f
util.pubsub tests: Add tests for publish_model (publishers, open, subscribers)
Matthew Wild <mwild1@gmail.com>
parents:
9169
diff
changeset
|
328 local service; |
5f03fe90704f
util.pubsub tests: Add tests for publish_model (publishers, open, subscribers)
Matthew Wild <mwild1@gmail.com>
parents:
9169
diff
changeset
|
329 before_each(function () |
5f03fe90704f
util.pubsub tests: Add tests for publish_model (publishers, open, subscribers)
Matthew Wild <mwild1@gmail.com>
parents:
9169
diff
changeset
|
330 service = pubsub.new(); |
5f03fe90704f
util.pubsub tests: Add tests for publish_model (publishers, open, subscribers)
Matthew Wild <mwild1@gmail.com>
parents:
9169
diff
changeset
|
331 service:create("test", true, { publish_model = "subscribers" }); |
5f03fe90704f
util.pubsub tests: Add tests for publish_model (publishers, open, subscribers)
Matthew Wild <mwild1@gmail.com>
parents:
9169
diff
changeset
|
332 end); |
5f03fe90704f
util.pubsub tests: Add tests for publish_model (publishers, open, subscribers)
Matthew Wild <mwild1@gmail.com>
parents:
9169
diff
changeset
|
333 it("should not allow non-subscribers to publish", function () |
5f03fe90704f
util.pubsub tests: Add tests for publish_model (publishers, open, subscribers)
Matthew Wild <mwild1@gmail.com>
parents:
9169
diff
changeset
|
334 local ok, err = service:publish("test", "stranger", "item1", "foo"); |
5f03fe90704f
util.pubsub tests: Add tests for publish_model (publishers, open, subscribers)
Matthew Wild <mwild1@gmail.com>
parents:
9169
diff
changeset
|
335 assert.is_falsy(ok); |
5f03fe90704f
util.pubsub tests: Add tests for publish_model (publishers, open, subscribers)
Matthew Wild <mwild1@gmail.com>
parents:
9169
diff
changeset
|
336 assert.equals("forbidden", err); |
5f03fe90704f
util.pubsub tests: Add tests for publish_model (publishers, open, subscribers)
Matthew Wild <mwild1@gmail.com>
parents:
9169
diff
changeset
|
337 end); |
5f03fe90704f
util.pubsub tests: Add tests for publish_model (publishers, open, subscribers)
Matthew Wild <mwild1@gmail.com>
parents:
9169
diff
changeset
|
338 it("should allow subscribers to publish without an affiliation", function () |
5f03fe90704f
util.pubsub tests: Add tests for publish_model (publishers, open, subscribers)
Matthew Wild <mwild1@gmail.com>
parents:
9169
diff
changeset
|
339 assert.is_true(service:add_subscription("test", "stranger", "stranger")); |
9209
69e17edf8796
util.pubsub tests: Fix whitespace
Kim Alvefur <zash@zash.se>
parents:
9208
diff
changeset
|
340 local ok = service:publish("test", "stranger", "item1", "foo"); |
9171
5f03fe90704f
util.pubsub tests: Add tests for publish_model (publishers, open, subscribers)
Matthew Wild <mwild1@gmail.com>
parents:
9169
diff
changeset
|
341 assert.is_true(ok); |
5f03fe90704f
util.pubsub tests: Add tests for publish_model (publishers, open, subscribers)
Matthew Wild <mwild1@gmail.com>
parents:
9169
diff
changeset
|
342 end); |
5f03fe90704f
util.pubsub tests: Add tests for publish_model (publishers, open, subscribers)
Matthew Wild <mwild1@gmail.com>
parents:
9169
diff
changeset
|
343 it("should allow publishers to publish without a subscription", function () |
5f03fe90704f
util.pubsub tests: Add tests for publish_model (publishers, open, subscribers)
Matthew Wild <mwild1@gmail.com>
parents:
9169
diff
changeset
|
344 assert(service:set_affiliation("test", true, "mypublisher", "publisher")); |
5f03fe90704f
util.pubsub tests: Add tests for publish_model (publishers, open, subscribers)
Matthew Wild <mwild1@gmail.com>
parents:
9169
diff
changeset
|
345 local ok, err = service:publish("test", "mypublisher", "item1", "foo"); |
5f03fe90704f
util.pubsub tests: Add tests for publish_model (publishers, open, subscribers)
Matthew Wild <mwild1@gmail.com>
parents:
9169
diff
changeset
|
346 assert.is_true(ok); |
5f03fe90704f
util.pubsub tests: Add tests for publish_model (publishers, open, subscribers)
Matthew Wild <mwild1@gmail.com>
parents:
9169
diff
changeset
|
347 end); |
5f03fe90704f
util.pubsub tests: Add tests for publish_model (publishers, open, subscribers)
Matthew Wild <mwild1@gmail.com>
parents:
9169
diff
changeset
|
348 it("should allow owners to publish without a subscription", function () |
5f03fe90704f
util.pubsub tests: Add tests for publish_model (publishers, open, subscribers)
Matthew Wild <mwild1@gmail.com>
parents:
9169
diff
changeset
|
349 assert(service:set_affiliation("test", true, "myowner", "owner")); |
5f03fe90704f
util.pubsub tests: Add tests for publish_model (publishers, open, subscribers)
Matthew Wild <mwild1@gmail.com>
parents:
9169
diff
changeset
|
350 local ok = service:publish("test", "myowner", "item1", "foo"); |
5f03fe90704f
util.pubsub tests: Add tests for publish_model (publishers, open, subscribers)
Matthew Wild <mwild1@gmail.com>
parents:
9169
diff
changeset
|
351 assert.is_true(ok); |
5f03fe90704f
util.pubsub tests: Add tests for publish_model (publishers, open, subscribers)
Matthew Wild <mwild1@gmail.com>
parents:
9169
diff
changeset
|
352 end); |
9169
3ec013185c15
util.pubsub tests: Add some initial access model tests (open and whitelist)
Matthew Wild <mwild1@gmail.com>
parents:
9159
diff
changeset
|
353 end); |
3ec013185c15
util.pubsub tests: Add some initial access model tests (open and whitelist)
Matthew Wild <mwild1@gmail.com>
parents:
9159
diff
changeset
|
354 end); |
9206
33ee40dc3e25
Pubsub: Add tests for :get_last_item() and fix for non-persistent nodes
Matthew Wild <mwild1@gmail.com>
parents:
9178
diff
changeset
|
355 |
33ee40dc3e25
Pubsub: Add tests for :get_last_item() and fix for non-persistent nodes
Matthew Wild <mwild1@gmail.com>
parents:
9178
diff
changeset
|
356 describe("item API", function () |
33ee40dc3e25
Pubsub: Add tests for :get_last_item() and fix for non-persistent nodes
Matthew Wild <mwild1@gmail.com>
parents:
9178
diff
changeset
|
357 local service; |
33ee40dc3e25
Pubsub: Add tests for :get_last_item() and fix for non-persistent nodes
Matthew Wild <mwild1@gmail.com>
parents:
9178
diff
changeset
|
358 before_each(function () |
33ee40dc3e25
Pubsub: Add tests for :get_last_item() and fix for non-persistent nodes
Matthew Wild <mwild1@gmail.com>
parents:
9178
diff
changeset
|
359 service = pubsub.new(); |
33ee40dc3e25
Pubsub: Add tests for :get_last_item() and fix for non-persistent nodes
Matthew Wild <mwild1@gmail.com>
parents:
9178
diff
changeset
|
360 service:create("test", true, { publish_model = "subscribers" }); |
33ee40dc3e25
Pubsub: Add tests for :get_last_item() and fix for non-persistent nodes
Matthew Wild <mwild1@gmail.com>
parents:
9178
diff
changeset
|
361 end); |
33ee40dc3e25
Pubsub: Add tests for :get_last_item() and fix for non-persistent nodes
Matthew Wild <mwild1@gmail.com>
parents:
9178
diff
changeset
|
362 describe("get_last_item()", function () |
33ee40dc3e25
Pubsub: Add tests for :get_last_item() and fix for non-persistent nodes
Matthew Wild <mwild1@gmail.com>
parents:
9178
diff
changeset
|
363 it("succeeds with nil on empty nodes", function () |
33ee40dc3e25
Pubsub: Add tests for :get_last_item() and fix for non-persistent nodes
Matthew Wild <mwild1@gmail.com>
parents:
9178
diff
changeset
|
364 local ok, id, item = service:get_last_item("test", true); |
33ee40dc3e25
Pubsub: Add tests for :get_last_item() and fix for non-persistent nodes
Matthew Wild <mwild1@gmail.com>
parents:
9178
diff
changeset
|
365 assert.is_true(ok); |
33ee40dc3e25
Pubsub: Add tests for :get_last_item() and fix for non-persistent nodes
Matthew Wild <mwild1@gmail.com>
parents:
9178
diff
changeset
|
366 assert.is_nil(id); |
33ee40dc3e25
Pubsub: Add tests for :get_last_item() and fix for non-persistent nodes
Matthew Wild <mwild1@gmail.com>
parents:
9178
diff
changeset
|
367 assert.is_nil(item); |
33ee40dc3e25
Pubsub: Add tests for :get_last_item() and fix for non-persistent nodes
Matthew Wild <mwild1@gmail.com>
parents:
9178
diff
changeset
|
368 end); |
33ee40dc3e25
Pubsub: Add tests for :get_last_item() and fix for non-persistent nodes
Matthew Wild <mwild1@gmail.com>
parents:
9178
diff
changeset
|
369 it("succeeds and returns the last item", function () |
33ee40dc3e25
Pubsub: Add tests for :get_last_item() and fix for non-persistent nodes
Matthew Wild <mwild1@gmail.com>
parents:
9178
diff
changeset
|
370 service:publish("test", true, "one", "hello world"); |
33ee40dc3e25
Pubsub: Add tests for :get_last_item() and fix for non-persistent nodes
Matthew Wild <mwild1@gmail.com>
parents:
9178
diff
changeset
|
371 service:publish("test", true, "two", "hello again"); |
33ee40dc3e25
Pubsub: Add tests for :get_last_item() and fix for non-persistent nodes
Matthew Wild <mwild1@gmail.com>
parents:
9178
diff
changeset
|
372 service:publish("test", true, "three", "hey"); |
33ee40dc3e25
Pubsub: Add tests for :get_last_item() and fix for non-persistent nodes
Matthew Wild <mwild1@gmail.com>
parents:
9178
diff
changeset
|
373 service:publish("test", true, "one", "bye"); |
33ee40dc3e25
Pubsub: Add tests for :get_last_item() and fix for non-persistent nodes
Matthew Wild <mwild1@gmail.com>
parents:
9178
diff
changeset
|
374 local ok, id, item = service:get_last_item("test", true); |
33ee40dc3e25
Pubsub: Add tests for :get_last_item() and fix for non-persistent nodes
Matthew Wild <mwild1@gmail.com>
parents:
9178
diff
changeset
|
375 assert.is_true(ok); |
33ee40dc3e25
Pubsub: Add tests for :get_last_item() and fix for non-persistent nodes
Matthew Wild <mwild1@gmail.com>
parents:
9178
diff
changeset
|
376 assert.equal("one", id); |
33ee40dc3e25
Pubsub: Add tests for :get_last_item() and fix for non-persistent nodes
Matthew Wild <mwild1@gmail.com>
parents:
9178
diff
changeset
|
377 assert.equal("bye", item); |
33ee40dc3e25
Pubsub: Add tests for :get_last_item() and fix for non-persistent nodes
Matthew Wild <mwild1@gmail.com>
parents:
9178
diff
changeset
|
378 end); |
33ee40dc3e25
Pubsub: Add tests for :get_last_item() and fix for non-persistent nodes
Matthew Wild <mwild1@gmail.com>
parents:
9178
diff
changeset
|
379 end); |
9208
d3bb59ec0173
util.pubsub tests: Add tests for get_items()
Matthew Wild <mwild1@gmail.com>
parents:
9206
diff
changeset
|
380 describe("get_items()", function () |
d3bb59ec0173
util.pubsub tests: Add tests for get_items()
Matthew Wild <mwild1@gmail.com>
parents:
9206
diff
changeset
|
381 it("fails on non-existent nodes", function () |
d3bb59ec0173
util.pubsub tests: Add tests for get_items()
Matthew Wild <mwild1@gmail.com>
parents:
9206
diff
changeset
|
382 local ok, err = service:get_items("no-node", true); |
d3bb59ec0173
util.pubsub tests: Add tests for get_items()
Matthew Wild <mwild1@gmail.com>
parents:
9206
diff
changeset
|
383 assert.is_falsy(ok); |
d3bb59ec0173
util.pubsub tests: Add tests for get_items()
Matthew Wild <mwild1@gmail.com>
parents:
9206
diff
changeset
|
384 assert.equal("item-not-found", err); |
d3bb59ec0173
util.pubsub tests: Add tests for get_items()
Matthew Wild <mwild1@gmail.com>
parents:
9206
diff
changeset
|
385 end); |
d3bb59ec0173
util.pubsub tests: Add tests for get_items()
Matthew Wild <mwild1@gmail.com>
parents:
9206
diff
changeset
|
386 it("returns no items on an empty node", function () |
d3bb59ec0173
util.pubsub tests: Add tests for get_items()
Matthew Wild <mwild1@gmail.com>
parents:
9206
diff
changeset
|
387 local ok, items = service:get_items("test", true); |
d3bb59ec0173
util.pubsub tests: Add tests for get_items()
Matthew Wild <mwild1@gmail.com>
parents:
9206
diff
changeset
|
388 assert.is_true(ok); |
d3bb59ec0173
util.pubsub tests: Add tests for get_items()
Matthew Wild <mwild1@gmail.com>
parents:
9206
diff
changeset
|
389 assert.equal(0, #items); |
9209
69e17edf8796
util.pubsub tests: Fix whitespace
Kim Alvefur <zash@zash.se>
parents:
9208
diff
changeset
|
390 assert.is_nil(next(items)); |
9208
d3bb59ec0173
util.pubsub tests: Add tests for get_items()
Matthew Wild <mwild1@gmail.com>
parents:
9206
diff
changeset
|
391 end); |
d3bb59ec0173
util.pubsub tests: Add tests for get_items()
Matthew Wild <mwild1@gmail.com>
parents:
9206
diff
changeset
|
392 it("returns no items on an empty node", function () |
d3bb59ec0173
util.pubsub tests: Add tests for get_items()
Matthew Wild <mwild1@gmail.com>
parents:
9206
diff
changeset
|
393 local ok, items = service:get_items("test", true); |
d3bb59ec0173
util.pubsub tests: Add tests for get_items()
Matthew Wild <mwild1@gmail.com>
parents:
9206
diff
changeset
|
394 assert.is_true(ok); |
d3bb59ec0173
util.pubsub tests: Add tests for get_items()
Matthew Wild <mwild1@gmail.com>
parents:
9206
diff
changeset
|
395 assert.equal(0, #items); |
d3bb59ec0173
util.pubsub tests: Add tests for get_items()
Matthew Wild <mwild1@gmail.com>
parents:
9206
diff
changeset
|
396 assert.is_nil((next(items))); |
d3bb59ec0173
util.pubsub tests: Add tests for get_items()
Matthew Wild <mwild1@gmail.com>
parents:
9206
diff
changeset
|
397 end); |
d3bb59ec0173
util.pubsub tests: Add tests for get_items()
Matthew Wild <mwild1@gmail.com>
parents:
9206
diff
changeset
|
398 it("returns all published items", function () |
d3bb59ec0173
util.pubsub tests: Add tests for get_items()
Matthew Wild <mwild1@gmail.com>
parents:
9206
diff
changeset
|
399 service:publish("test", true, "one", "hello world"); |
d3bb59ec0173
util.pubsub tests: Add tests for get_items()
Matthew Wild <mwild1@gmail.com>
parents:
9206
diff
changeset
|
400 service:publish("test", true, "two", "hello again"); |
d3bb59ec0173
util.pubsub tests: Add tests for get_items()
Matthew Wild <mwild1@gmail.com>
parents:
9206
diff
changeset
|
401 service:publish("test", true, "three", "hey"); |
d3bb59ec0173
util.pubsub tests: Add tests for get_items()
Matthew Wild <mwild1@gmail.com>
parents:
9206
diff
changeset
|
402 service:publish("test", true, "one", "bye"); |
d3bb59ec0173
util.pubsub tests: Add tests for get_items()
Matthew Wild <mwild1@gmail.com>
parents:
9206
diff
changeset
|
403 local ok, items = service:get_items("test", true); |
d3bb59ec0173
util.pubsub tests: Add tests for get_items()
Matthew Wild <mwild1@gmail.com>
parents:
9206
diff
changeset
|
404 assert.is_true(ok); |
d3bb59ec0173
util.pubsub tests: Add tests for get_items()
Matthew Wild <mwild1@gmail.com>
parents:
9206
diff
changeset
|
405 assert.same({ "one", "three", "two", two = "hello again", three = "hey", one = "bye" }, items); |
d3bb59ec0173
util.pubsub tests: Add tests for get_items()
Matthew Wild <mwild1@gmail.com>
parents:
9206
diff
changeset
|
406 end); |
d3bb59ec0173
util.pubsub tests: Add tests for get_items()
Matthew Wild <mwild1@gmail.com>
parents:
9206
diff
changeset
|
407 end); |
9206
33ee40dc3e25
Pubsub: Add tests for :get_last_item() and fix for non-persistent nodes
Matthew Wild <mwild1@gmail.com>
parents:
9178
diff
changeset
|
408 end); |
9742
18eca6afb367
util.pubsub: Restore subscription index from stored data (fixes #1281)
Kim Alvefur <zash@zash.se>
parents:
9516
diff
changeset
|
409 |
18eca6afb367
util.pubsub: Restore subscription index from stored data (fixes #1281)
Kim Alvefur <zash@zash.se>
parents:
9516
diff
changeset
|
410 describe("restoring data from nodestore", function () |
18eca6afb367
util.pubsub: Restore subscription index from stored data (fixes #1281)
Kim Alvefur <zash@zash.se>
parents:
9516
diff
changeset
|
411 local nodestore = { |
18eca6afb367
util.pubsub: Restore subscription index from stored data (fixes #1281)
Kim Alvefur <zash@zash.se>
parents:
9516
diff
changeset
|
412 data = { |
18eca6afb367
util.pubsub: Restore subscription index from stored data (fixes #1281)
Kim Alvefur <zash@zash.se>
parents:
9516
diff
changeset
|
413 test = { |
18eca6afb367
util.pubsub: Restore subscription index from stored data (fixes #1281)
Kim Alvefur <zash@zash.se>
parents:
9516
diff
changeset
|
414 name = "test"; |
18eca6afb367
util.pubsub: Restore subscription index from stored data (fixes #1281)
Kim Alvefur <zash@zash.se>
parents:
9516
diff
changeset
|
415 config = {}; |
18eca6afb367
util.pubsub: Restore subscription index from stored data (fixes #1281)
Kim Alvefur <zash@zash.se>
parents:
9516
diff
changeset
|
416 affiliations = {}; |
18eca6afb367
util.pubsub: Restore subscription index from stored data (fixes #1281)
Kim Alvefur <zash@zash.se>
parents:
9516
diff
changeset
|
417 subscribers = { |
18eca6afb367
util.pubsub: Restore subscription index from stored data (fixes #1281)
Kim Alvefur <zash@zash.se>
parents:
9516
diff
changeset
|
418 ["someone"] = true; |
18eca6afb367
util.pubsub: Restore subscription index from stored data (fixes #1281)
Kim Alvefur <zash@zash.se>
parents:
9516
diff
changeset
|
419 }; |
18eca6afb367
util.pubsub: Restore subscription index from stored data (fixes #1281)
Kim Alvefur <zash@zash.se>
parents:
9516
diff
changeset
|
420 } |
18eca6afb367
util.pubsub: Restore subscription index from stored data (fixes #1281)
Kim Alvefur <zash@zash.se>
parents:
9516
diff
changeset
|
421 } |
18eca6afb367
util.pubsub: Restore subscription index from stored data (fixes #1281)
Kim Alvefur <zash@zash.se>
parents:
9516
diff
changeset
|
422 }; |
18eca6afb367
util.pubsub: Restore subscription index from stored data (fixes #1281)
Kim Alvefur <zash@zash.se>
parents:
9516
diff
changeset
|
423 function nodestore:users() |
18eca6afb367
util.pubsub: Restore subscription index from stored data (fixes #1281)
Kim Alvefur <zash@zash.se>
parents:
9516
diff
changeset
|
424 return pairs(self.data) |
18eca6afb367
util.pubsub: Restore subscription index from stored data (fixes #1281)
Kim Alvefur <zash@zash.se>
parents:
9516
diff
changeset
|
425 end |
18eca6afb367
util.pubsub: Restore subscription index from stored data (fixes #1281)
Kim Alvefur <zash@zash.se>
parents:
9516
diff
changeset
|
426 function nodestore:get(key) |
18eca6afb367
util.pubsub: Restore subscription index from stored data (fixes #1281)
Kim Alvefur <zash@zash.se>
parents:
9516
diff
changeset
|
427 return self.data[key]; |
18eca6afb367
util.pubsub: Restore subscription index from stored data (fixes #1281)
Kim Alvefur <zash@zash.se>
parents:
9516
diff
changeset
|
428 end |
18eca6afb367
util.pubsub: Restore subscription index from stored data (fixes #1281)
Kim Alvefur <zash@zash.se>
parents:
9516
diff
changeset
|
429 local service = pubsub.new({ |
18eca6afb367
util.pubsub: Restore subscription index from stored data (fixes #1281)
Kim Alvefur <zash@zash.se>
parents:
9516
diff
changeset
|
430 nodestore = nodestore; |
18eca6afb367
util.pubsub: Restore subscription index from stored data (fixes #1281)
Kim Alvefur <zash@zash.se>
parents:
9516
diff
changeset
|
431 }); |
18eca6afb367
util.pubsub: Restore subscription index from stored data (fixes #1281)
Kim Alvefur <zash@zash.se>
parents:
9516
diff
changeset
|
432 it("subscriptions", function () |
18eca6afb367
util.pubsub: Restore subscription index from stored data (fixes #1281)
Kim Alvefur <zash@zash.se>
parents:
9516
diff
changeset
|
433 local ok, ret = service:get_subscriptions(nil, true, nil) |
18eca6afb367
util.pubsub: Restore subscription index from stored data (fixes #1281)
Kim Alvefur <zash@zash.se>
parents:
9516
diff
changeset
|
434 assert.is_true(ok); |
18eca6afb367
util.pubsub: Restore subscription index from stored data (fixes #1281)
Kim Alvefur <zash@zash.se>
parents:
9516
diff
changeset
|
435 assert.same({ { node = "test", jid = "someone", subscription = true, } }, ret); |
18eca6afb367
util.pubsub: Restore subscription index from stored data (fixes #1281)
Kim Alvefur <zash@zash.se>
parents:
9516
diff
changeset
|
436 end); |
18eca6afb367
util.pubsub: Restore subscription index from stored data (fixes #1281)
Kim Alvefur <zash@zash.se>
parents:
9516
diff
changeset
|
437 end); |
18eca6afb367
util.pubsub: Restore subscription index from stored data (fixes #1281)
Kim Alvefur <zash@zash.se>
parents:
9516
diff
changeset
|
438 |
9840
ec353524b739
util.pubsub: Validate node configuration on node creation (fixes #1328)
Kim Alvefur <zash@zash.se>
parents:
9816
diff
changeset
|
439 describe("node config checking", function () |
ec353524b739
util.pubsub: Validate node configuration on node creation (fixes #1328)
Kim Alvefur <zash@zash.se>
parents:
9816
diff
changeset
|
440 local service; |
ec353524b739
util.pubsub: Validate node configuration on node creation (fixes #1328)
Kim Alvefur <zash@zash.se>
parents:
9816
diff
changeset
|
441 before_each(function () |
ec353524b739
util.pubsub: Validate node configuration on node creation (fixes #1328)
Kim Alvefur <zash@zash.se>
parents:
9816
diff
changeset
|
442 service = pubsub.new({ |
ec353524b739
util.pubsub: Validate node configuration on node creation (fixes #1328)
Kim Alvefur <zash@zash.se>
parents:
9816
diff
changeset
|
443 check_node_config = function (node, actor, config) -- luacheck: ignore 212 |
ec353524b739
util.pubsub: Validate node configuration on node creation (fixes #1328)
Kim Alvefur <zash@zash.se>
parents:
9816
diff
changeset
|
444 return config["max_items"] <= 20; |
ec353524b739
util.pubsub: Validate node configuration on node creation (fixes #1328)
Kim Alvefur <zash@zash.se>
parents:
9816
diff
changeset
|
445 end; |
ec353524b739
util.pubsub: Validate node configuration on node creation (fixes #1328)
Kim Alvefur <zash@zash.se>
parents:
9816
diff
changeset
|
446 }); |
ec353524b739
util.pubsub: Validate node configuration on node creation (fixes #1328)
Kim Alvefur <zash@zash.se>
parents:
9816
diff
changeset
|
447 end); |
ec353524b739
util.pubsub: Validate node configuration on node creation (fixes #1328)
Kim Alvefur <zash@zash.se>
parents:
9816
diff
changeset
|
448 |
ec353524b739
util.pubsub: Validate node configuration on node creation (fixes #1328)
Kim Alvefur <zash@zash.se>
parents:
9816
diff
changeset
|
449 it("defaults, then configure", function () |
ec353524b739
util.pubsub: Validate node configuration on node creation (fixes #1328)
Kim Alvefur <zash@zash.se>
parents:
9816
diff
changeset
|
450 local ok, err = service:create("node", true); |
ec353524b739
util.pubsub: Validate node configuration on node creation (fixes #1328)
Kim Alvefur <zash@zash.se>
parents:
9816
diff
changeset
|
451 assert.is_true(ok, err); |
ec353524b739
util.pubsub: Validate node configuration on node creation (fixes #1328)
Kim Alvefur <zash@zash.se>
parents:
9816
diff
changeset
|
452 |
ec353524b739
util.pubsub: Validate node configuration on node creation (fixes #1328)
Kim Alvefur <zash@zash.se>
parents:
9816
diff
changeset
|
453 local ok, err = service:set_node_config("node", true, { max_items = 10 }); |
ec353524b739
util.pubsub: Validate node configuration on node creation (fixes #1328)
Kim Alvefur <zash@zash.se>
parents:
9816
diff
changeset
|
454 assert.is_true(ok, err); |
ec353524b739
util.pubsub: Validate node configuration on node creation (fixes #1328)
Kim Alvefur <zash@zash.se>
parents:
9816
diff
changeset
|
455 |
ec353524b739
util.pubsub: Validate node configuration on node creation (fixes #1328)
Kim Alvefur <zash@zash.se>
parents:
9816
diff
changeset
|
456 local ok, err = service:set_node_config("node", true, { max_items = 100 }); |
ec353524b739
util.pubsub: Validate node configuration on node creation (fixes #1328)
Kim Alvefur <zash@zash.se>
parents:
9816
diff
changeset
|
457 assert.falsy(ok, err); |
ec353524b739
util.pubsub: Validate node configuration on node creation (fixes #1328)
Kim Alvefur <zash@zash.se>
parents:
9816
diff
changeset
|
458 assert.equals(err, "not-acceptable"); |
ec353524b739
util.pubsub: Validate node configuration on node creation (fixes #1328)
Kim Alvefur <zash@zash.se>
parents:
9816
diff
changeset
|
459 end); |
ec353524b739
util.pubsub: Validate node configuration on node creation (fixes #1328)
Kim Alvefur <zash@zash.se>
parents:
9816
diff
changeset
|
460 |
ec353524b739
util.pubsub: Validate node configuration on node creation (fixes #1328)
Kim Alvefur <zash@zash.se>
parents:
9816
diff
changeset
|
461 it("create with ok config, then configure", function () |
ec353524b739
util.pubsub: Validate node configuration on node creation (fixes #1328)
Kim Alvefur <zash@zash.se>
parents:
9816
diff
changeset
|
462 local ok, err = service:create("node", true, { max_items = 10 }); |
ec353524b739
util.pubsub: Validate node configuration on node creation (fixes #1328)
Kim Alvefur <zash@zash.se>
parents:
9816
diff
changeset
|
463 assert.is_true(ok, err); |
ec353524b739
util.pubsub: Validate node configuration on node creation (fixes #1328)
Kim Alvefur <zash@zash.se>
parents:
9816
diff
changeset
|
464 |
ec353524b739
util.pubsub: Validate node configuration on node creation (fixes #1328)
Kim Alvefur <zash@zash.se>
parents:
9816
diff
changeset
|
465 local ok, err = service:set_node_config("node", true, { max_items = 100 }); |
ec353524b739
util.pubsub: Validate node configuration on node creation (fixes #1328)
Kim Alvefur <zash@zash.se>
parents:
9816
diff
changeset
|
466 assert.falsy(ok, err); |
ec353524b739
util.pubsub: Validate node configuration on node creation (fixes #1328)
Kim Alvefur <zash@zash.se>
parents:
9816
diff
changeset
|
467 |
ec353524b739
util.pubsub: Validate node configuration on node creation (fixes #1328)
Kim Alvefur <zash@zash.se>
parents:
9816
diff
changeset
|
468 local ok, err = service:set_node_config("node", true, { max_items = 10 }); |
ec353524b739
util.pubsub: Validate node configuration on node creation (fixes #1328)
Kim Alvefur <zash@zash.se>
parents:
9816
diff
changeset
|
469 assert.is_true(ok, err); |
ec353524b739
util.pubsub: Validate node configuration on node creation (fixes #1328)
Kim Alvefur <zash@zash.se>
parents:
9816
diff
changeset
|
470 end); |
ec353524b739
util.pubsub: Validate node configuration on node creation (fixes #1328)
Kim Alvefur <zash@zash.se>
parents:
9816
diff
changeset
|
471 |
ec353524b739
util.pubsub: Validate node configuration on node creation (fixes #1328)
Kim Alvefur <zash@zash.se>
parents:
9816
diff
changeset
|
472 it("create with unacceptable config", function () |
ec353524b739
util.pubsub: Validate node configuration on node creation (fixes #1328)
Kim Alvefur <zash@zash.se>
parents:
9816
diff
changeset
|
473 local ok, err = service:create("node", true, { max_items = 100 }); |
ec353524b739
util.pubsub: Validate node configuration on node creation (fixes #1328)
Kim Alvefur <zash@zash.se>
parents:
9816
diff
changeset
|
474 assert.falsy(ok, err); |
ec353524b739
util.pubsub: Validate node configuration on node creation (fixes #1328)
Kim Alvefur <zash@zash.se>
parents:
9816
diff
changeset
|
475 end); |
ec353524b739
util.pubsub: Validate node configuration on node creation (fixes #1328)
Kim Alvefur <zash@zash.se>
parents:
9816
diff
changeset
|
476 |
ec353524b739
util.pubsub: Validate node configuration on node creation (fixes #1328)
Kim Alvefur <zash@zash.se>
parents:
9816
diff
changeset
|
477 |
ec353524b739
util.pubsub: Validate node configuration on node creation (fixes #1328)
Kim Alvefur <zash@zash.se>
parents:
9816
diff
changeset
|
478 end); |
ec353524b739
util.pubsub: Validate node configuration on node creation (fixes #1328)
Kim Alvefur <zash@zash.se>
parents:
9816
diff
changeset
|
479 |
8558
5de663cef508
util_pubsub_spec: Beginnings of tests for util.pubsub
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
480 end); |