From d7b73e460adab34f5bf0cc0038ffa21bd6b6c53a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Remko=20Tron=C3=A7on?= Date: Wed, 30 Oct 2013 20:51:56 +0100 Subject: Implement missing PubSub owner queries. Implemented get_owner_subscriptions, get_owner_affiliations, and set_owner_affiliations. Change-Id: Ib3ccf2f7e7fe228ccdddf83bde324341e69362d6 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() -- cgit v0.10.2-6-g49f6