complete = Complete,
rsm = RSM}]} = recv_iq(Config),
ct:comment("Checking if complete is ~s", [IsComplete]),
- Complete = IsComplete,
+ ?match(IsComplete, Complete),
RSM;
recv_fin(Config, I, QueryID, ?NS_MAM_TMP = NS, _IsComplete) ->
ct:comment("Receiving fin iq for namespace '~s'", [NS]),
complete = Complete,
rsm = RSM} = xmpp:get_subtag(FinMsg, #mam_fin{xmlns = NS}),
ct:comment("Checking if complete is ~s", [IsComplete]),
- Complete = IsComplete,
+ ?match(IsComplete, Complete),
RSM.
send_messages_to_room(Config, Range) ->
MyNickJID = jid:replace_resource(Room, MyNick),
MyJID = my_jid(Config),
QID = p1_rand:get_string(),
- Count = length(Range),
I = send(Config, #iq{type = set, to = Room,
sub_els = [#mam_query{xmlns = ?NS_MAM_2, id = QID}]}),
lists:foreach(
#iq{from = Room, id = I, type = result,
sub_els = [#mam_fin{xmlns = ?NS_MAM_2,
id = QID,
- rsm = #rsm_set{count = Count},
- complete = true}]} = recv_iq(Config).
+ rsm = RSM,
+ complete = true}]} = recv_iq(Config),
+ match_rsm_count(RSM, length(Range)).
query_all(Config, From, To) ->
lists:foreach(
Range = lists:seq(1, 5),
ID = send_query(Config, #mam_query{xmlns = NS, id = QID}),
recv_archived_messages(Config, From, To, QID, Range),
- #rsm_set{count = 5} = recv_fin(Config, ID, QID, NS, _Complete = true).
+ RSM = recv_fin(Config, ID, QID, NS, _Complete = true),
+ match_rsm_count(RSM, 5).
query_with(Config, From, To) ->
lists:foreach(
end,
ID = send_query(Config, Query),
recv_archived_messages(Config, From, To, QID, Range),
- #rsm_set{count = 5} = recv_fin(Config, ID, QID, NS, true)
+ RSM = recv_fin(Config, ID, QID, NS, true),
+ match_rsm_count(RSM, 5)
end, [Peer, BarePeer]).
query_rsm_max(Config, From, To) ->
ID = send_query(Config, Query),
recv_archived_messages(Config, From, To, QID, Range),
IsComplete = Max >= 5,
- #rsm_set{count = 5} = recv_fin(Config, ID, QID, NS, IsComplete)
+ RSM = recv_fin(Config, ID, QID, NS, IsComplete),
+ match_rsm_count(RSM, 5)
end, lists:seq(0, 6)).
query_rsm_after(Config, From, To) ->
rsm = #rsm_set{'after' = After}},
ID = send_query(Config, Query),
recv_archived_messages(Config, From, To, QID, Range),
- #rsm_set{count = 5, first = First} =
+ RSM = #rsm_set{first = First} =
recv_fin(Config, ID, QID, NS, true),
+ match_rsm_count(RSM, 5),
First
end, #rsm_first{data = undefined},
[lists:seq(N, 5) || N <- lists:seq(1, 6)]).
rsm = #rsm_set{before = Before}},
ID = send_query(Config, Query),
recv_archived_messages(Config, From, To, QID, Range),
- #rsm_set{count = 5, last = Last} =
+ RSM = #rsm_set{last = Last} =
recv_fin(Config, ID, QID, NS, true),
+ match_rsm_count(RSM, 5),
Last
end, <<"">>, lists:reverse([lists:seq(1, N) || N <- lists:seq(0, 5)])).
+
+match_rsm_count(#rsm_set{count = undefined}, _) ->
+ %% The backend doesn't support counting
+ ok;
+match_rsm_count(#rsm_set{count = Count1}, Count2) ->
+ ct:comment("Checking if RSM 'count' is ~p", [Count2]),
+ ?match(Count2, Count1).
%% API
-compile(export_all).
--import(suite, [my_jid/1, is_feature_advertised/3,
+-import(suite, [my_jid/1, server_jid/1, is_feature_advertised/3,
send_recv/2, disconnect/1]).
-include("suite.hrl").
single_test(test_published)]}.
test_features(Config) ->
+ Server = jid:encode(server_jid(Config)),
MyJID = my_jid(Config),
- true = is_feature_advertised(Config, ?NS_BOOKMARKS_CONVERSION_0,
- jid:remove_resource(MyJID)),
+ case gen_mod:is_loaded(Server, mod_pubsub) of
+ true ->
+ true = is_feature_advertised(Config, ?NS_BOOKMARKS_CONVERSION_0,
+ jid:remove_resource(MyJID));
+ false ->
+ ok
+ end,
disconnect(Config).
test_no_namespace(Config) ->
disconnect(Config).
test_published(Config) ->
- Storage = bookmark_storage(),
- Node = xmpp:get_ns(Storage),
- #iq{type = result,
- sub_els = [#pubsub{items = #ps_items{node = Node, items = Items}}]} =
- send_recv(
- Config,
- #iq{type = get,
- sub_els = [#pubsub{items = #ps_items{node = Node}}]}),
- [#ps_item{sub_els = [StorageXMLIn]}] = Items,
- Storage = xmpp:decode(StorageXMLIn),
- #iq{type = result, sub_els = []} =
- send_recv(Config,
- #iq{type = set,
- sub_els = [#pubsub_owner{delete = {Node, <<>>}}]}),
+ Server = jid:encode(server_jid(Config)),
+ case gen_mod:is_loaded(Server, mod_pubsub) of
+ true ->
+ Storage = bookmark_storage(),
+ Node = xmpp:get_ns(Storage),
+ #iq{type = result,
+ sub_els = [#pubsub{items = #ps_items{node = Node, items = Items}}]} =
+ send_recv(
+ Config,
+ #iq{type = get,
+ sub_els = [#pubsub{items = #ps_items{node = Node}}]}),
+ [#ps_item{sub_els = [StorageXMLIn]}] = Items,
+ Storage = xmpp:decode(StorageXMLIn),
+ #iq{type = result, sub_els = []} =
+ send_recv(Config,
+ #iq{type = set,
+ sub_els = [#pubsub_owner{delete = {Node, <<>>}}]});
+ false ->
+ ok
+ end,
disconnect(Config).
%%%===================================================================