Software /
code /
prosody
Comparison
spec/util_pubsub_spec.lua @ 9171:5f03fe90704f
util.pubsub tests: Add tests for publish_model (publishers, open, subscribers)
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Sun, 12 Aug 2018 10:43:18 +0100 |
parent | 9169:3ec013185c15 |
child | 9173:c53663e13b51 |
comparison
equal
deleted
inserted
replaced
9170:47ffce31ffe4 | 9171:5f03fe90704f |
---|---|
126 end); | 126 end); |
127 it("should allow anyone to subscribe", function () | 127 it("should allow anyone to subscribe", function () |
128 local ok = service:add_subscription("test", "stranger", "stranger"); | 128 local ok = service:add_subscription("test", "stranger", "stranger"); |
129 assert.is_true(ok); | 129 assert.is_true(ok); |
130 end); | 130 end); |
131 it("should still reject outcast-affiliated entities", function () | |
132 assert(service:set_affiliation("test", true, "enemy", "outcast")); | |
133 local ok, err = service:add_subscription("test", "enemy", "enemy"); | |
134 assert.is_falsy(ok); | |
135 assert.equal("forbidden", err); | |
136 end); | |
137 end); | |
138 describe("whitelist", function () | |
139 local service; | |
140 before_each(function () | |
141 service = assert(pubsub.new()); | |
142 assert.is_true(service:create("test", true, { access_model = "whitelist" })); | |
143 end); | |
144 it("should be present in the configuration", function () | |
145 local ok, config = service:get_node_config("test", true); | |
146 assert.equal("whitelist", config.access_model); | |
147 end); | |
148 it("should not allow anyone to subscribe", function () | |
149 local ok, err = service:add_subscription("test", "stranger", "stranger"); | |
150 assert.is_false(ok); | |
151 assert.equals("forbidden", err); | |
152 end); | |
153 end); | |
154 end); | |
155 | |
156 describe("publish model", function () | |
157 describe("publishers", function () | |
158 local service; | |
159 before_each(function () | |
160 service = pubsub.new(); | |
161 -- Do not supply any config, 'publishers' should be default | |
162 service:create("test", true); | |
163 end); | |
164 it("should be the default", function () | |
165 local ok, config = service:get_node_config("test", true); | |
166 assert.equal("publishers", config.publish_model); | |
167 end); | |
131 it("should not allow anyone to publish", function () | 168 it("should not allow anyone to publish", function () |
132 assert.is_true(service:add_subscription("test", "stranger", "stranger")); | 169 assert.is_true(service:add_subscription("test", "stranger", "stranger")); |
133 local ok, err = service:publish("test", "stranger", "item1", "foo"); | 170 local ok, err = service:publish("test", "stranger", "item1", "foo"); |
134 assert.is_falsy(ok); | 171 assert.is_falsy(ok); |
135 assert.equals("forbidden", err); | 172 assert.equals("forbidden", err); |
136 end); | 173 end); |
137 it("should still reject outcast-affiliated entities", function () | 174 it("should allow publishers to publish", function () |
138 assert(service:set_affiliation("test", true, "enemy", "outcast")); | 175 assert(service:set_affiliation("test", true, "mypublisher", "publisher")); |
139 local ok, err = service:add_subscription("test", "enemy", "enemy"); | 176 local ok, err = service:publish("test", "mypublisher", "item1", "foo"); |
140 assert.is_falsy(ok); | 177 assert.is_true(ok); |
141 assert.equal("forbidden", err); | 178 end); |
142 end); | 179 it("should allow owners to publish", function () |
143 end); | 180 assert(service:set_affiliation("test", true, "myowner", "owner")); |
144 describe("whitelist", function () | 181 local ok = service:publish("test", "myowner", "item1", "foo"); |
145 local service; | 182 assert.is_true(ok); |
146 before_each(function () | 183 end); |
147 service = assert(pubsub.new()); | 184 end); |
148 assert.is_true(service:create("test", true, { access_model = "whitelist" })); | 185 describe("open", function () |
149 end); | 186 local service; |
150 it("should be present in the configuration", function () | 187 before_each(function () |
151 local ok, config = service:get_node_config("test", true); | 188 service = pubsub.new(); |
152 assert.equal("whitelist", config.access_model); | 189 service:create("test", true, { publish_model = "open" }); |
153 end); | 190 end); |
154 it("should not allow anyone to subscribe", function () | 191 it("should allow anyone to publish", function () |
155 local ok, err = service:add_subscription("test", "stranger", "stranger"); | 192 local ok = service:publish("test", "stranger", "item1", "foo"); |
156 assert.is_false(ok); | 193 assert.is_true(ok); |
157 assert.equals("forbidden", err); | 194 end); |
158 end); | 195 end); |
159 it("should not allow anyone to publish", function () | 196 describe("subscribers", function () |
197 local service; | |
198 before_each(function () | |
199 service = pubsub.new(); | |
200 service:create("test", true, { publish_model = "subscribers" }); | |
201 end); | |
202 it("should not allow non-subscribers to publish", function () | |
160 local ok, err = service:publish("test", "stranger", "item1", "foo"); | 203 local ok, err = service:publish("test", "stranger", "item1", "foo"); |
161 assert.is_falsy(ok); | 204 assert.is_falsy(ok); |
162 assert.equals("forbidden", err); | 205 assert.equals("forbidden", err); |
163 end); | 206 end); |
207 it("should allow subscribers to publish without an affiliation", function () | |
208 assert.is_true(service:add_subscription("test", "stranger", "stranger")); | |
209 local ok = service:publish("test", "stranger", "item1", "foo"); | |
210 assert.is_true(ok); | |
211 end); | |
212 it("should allow publishers to publish without a subscription", function () | |
213 assert(service:set_affiliation("test", true, "mypublisher", "publisher")); | |
214 local ok, err = service:publish("test", "mypublisher", "item1", "foo"); | |
215 assert.is_true(ok); | |
216 end); | |
217 it("should allow owners to publish without a subscription", function () | |
218 assert(service:set_affiliation("test", true, "myowner", "owner")); | |
219 local ok = service:publish("test", "myowner", "item1", "foo"); | |
220 assert.is_true(ok); | |
221 end); | |
164 end); | 222 end); |
165 end); | 223 end); |
166 end); | 224 end); |