diff options
author | Holger Weiss <holger@zedat.fu-berlin.de> | 2014-09-11 18:18:20 +0200 |
---|---|---|
committer | Holger Weiss <holger@zedat.fu-berlin.de> | 2014-09-11 18:18:20 +0200 |
commit | 1a320baad896b4f0d7ae6d5170f75d70a9b1020b (patch) | |
tree | 1dcf843f5750b2cd263d1da6c4e814f79fa1af77 /test/ejabberd_SUITE.erl | |
parent | Support XEP-0352: Client State Indication (diff) |
Add tests for Client State Indication support
Diffstat (limited to 'test/ejabberd_SUITE.erl')
-rw-r--r-- | test/ejabberd_SUITE.erl | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/test/ejabberd_SUITE.erl b/test/ejabberd_SUITE.erl index fbf2444b6..0cc5afec3 100644 --- a/test/ejabberd_SUITE.erl +++ b/test/ejabberd_SUITE.erl @@ -237,6 +237,8 @@ db_tests(mnesia) -> [offline_master, offline_slave]}, {test_carbons, [parallel], [carbons_master, carbons_slave]}, + {test_client_state, [parallel], + [client_state_master, client_state_slave]}, {test_muc, [parallel], [muc_master, muc_slave]}, {test_announce, [sequence], @@ -1505,6 +1507,42 @@ carbons_slave(Config) -> #presence{from = Peer, type = unavailable} = recv(), disconnect(Config). +client_state_master(Config) -> + Peer = ?config(slave, Config), + Presence = #presence{to = Peer}, + Message = #message{to = Peer, thread = <<"1">>, + sub_els = [#chatstate_active{}]}, + wait_for_slave(Config), + %% Should be queued (but see below): + send(Config, Presence), + %% Should be sent immediately, together with the previous presence: + send(Config, Message#message{body = [#text{data = <<"body">>}]}), + %% Should be dropped: + send(Config, Message), + %% Should be queued (but see below): + send(Config, Presence), + %% Should replace the previous presence in the queue: + send(Config, Presence#presence{type = unavailable}), + wait_for_slave(Config), + %% Should be sent immediately, as the client is active again. + send(Config, Message), + disconnect(Config). + +client_state_slave(Config) -> + true = ?config(csi, Config), + Peer = ?config(master, Config), + send(Config, #csi_inactive{}), + wait_for_master(Config), + #presence{from = Peer, sub_els = [#delay{}]} = recv(), + #message{from = Peer, thread = <<"1">>, sub_els = [#chatstate_active{}], + body = [#text{data = <<"body">>}]} = recv(), + wait_for_master(Config), + send(Config, #csi_active{}), + ?recv2(#presence{from = Peer, type = unavailable, sub_els = [#delay{}]}, + #message{from = Peer, thread = <<"1">>, + sub_els = [#chatstate_active{}]}), + disconnect(Config). + %%%=================================================================== %%% Aux functions %%%=================================================================== |