summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRemko Tronçon <git@el-tramo.be>2013-10-30 19:51:56 (GMT)
committerRemko Tronçon <git@el-tramo.be>2013-10-30 19:53:32 (GMT)
commitd7b73e460adab34f5bf0cc0038ffa21bd6b6c53a (patch)
tree0740d6d445c3e611fe5ca3c6e95709b9c3b8b04c
parentaeae699f47c3f9a148903525943b6876c39a598d (diff)
downloadswift-d7b73e460adab34f5bf0cc0038ffa21bd6b6c53a.zip
swift-d7b73e460adab34f5bf0cc0038ffa21bd6b6c53a.tar.bz2
Implement missing PubSub owner queries.
Implemented get_owner_subscriptions, get_owner_affiliations, and set_owner_affiliations. Change-Id: Ib3ccf2f7e7fe228ccdddf83bde324341e69362d6
-rw-r--r--Sluift/boot.lua11
-rw-r--r--Swiften/QA/ScriptedTests/PubSub.lua20
2 files changed, 30 insertions, 1 deletions
diff --git a/Sluift/boot.lua b/Sluift/boot.lua
index b642bfa..e019fe6 100644
--- a/Sluift/boot.lua
+++ b/Sluift/boot.lua
@@ -275,6 +275,8 @@ local simple_pubsub_node_queries = {
get_configuration = 'pubsub_owner_configure',
get_subscriptions = 'pubsub_subscriptions',
get_affiliations = 'pubsub_affiliations',
+ get_owner_subscriptions = 'pubsub_owner_subscriptions',
+ get_owner_affiliations = 'pubsub_owner_affiliations',
get_default_subscription_options = 'pubsub_default',
}
for method, query_type in pairs(simple_pubsub_node_queries) do
@@ -335,6 +337,15 @@ function PubSubNode.set_configuration(node, options)
}, options))
end
+function PubSubNode.set_owner_affiliations(node, ...)
+ local options = parse_options({}, ...)
+ return node.client:query_pubsub(merge_tables({
+ type = 'set', to = node.jid, query = merge_tables({
+ _type = 'pubsub_owner_affiliations', node = node.node,
+ }, options.affiliations)}, options))
+end
+
+
function PubSubNode.subscribe(node, ...)
local options = parse_options(...)
local jid = options.jid or sluift.jid.to_bare(node.client:jid())
diff --git a/Swiften/QA/ScriptedTests/PubSub.lua b/Swiften/QA/ScriptedTests/PubSub.lua
index 5ea701c..43cce14 100644
--- a/Swiften/QA/ScriptedTests/PubSub.lua
+++ b/Swiften/QA/ScriptedTests/PubSub.lua
@@ -286,7 +286,25 @@ function test_owner_use_cases()
-- 8.7 Process pending subscription requests
-- TODO
- -- ...
+ -- 8.8 Manage Subscriptions
+ assert(node:create())
+ assert(subscriber_node:subscribe({ jid = subscriber_jid }))
+ local items = assert(node:get_owner_subscriptions())
+ assert(#items == 1)
+ assert(items[1].jid == subscriber_jid)
+ assert(items[1].subscription == "subscribed")
+ assert(node:delete())
+
+ -- 8.9 Manage Affiliations
+ assert(node:create())
+ assert(node:set_owner_affiliations{affiliations = {{jid = subscriber_jid, type = 'publisher'}}})
+ local items = assert(node:get_owner_affiliations())
+ assert(#items == 2)
+ assert(items[1].jid == publisher_jid)
+ assert(items[1].type == "owner")
+ assert(items[2].jid == subscriber_jid)
+ assert(items[2].type == "publisher")
+ assert(node:delete())
end
function run_tests()