diff options
author | Evgeniy Khramtsov <ekhramtsov@process-one.net> | 2013-09-24 18:40:32 +1000 |
---|---|---|
committer | Evgeniy Khramtsov <ekhramtsov@process-one.net> | 2013-09-24 18:59:20 +1000 |
commit | 07c8bf50640f6cdee74517c6c17fdded698d1fb3 (patch) | |
tree | 63d5965317e8dc9154160f8a2870c195d200edae | |
parent | Better web-handlers detection (diff) |
Fix roster version support
-rw-r--r-- | src/mod_roster.erl | 2 | ||||
-rw-r--r-- | test/ejabberd_SUITE.erl | 24 | ||||
-rw-r--r-- | test/ejabberd_SUITE_data/ejabberd.yml | 8 |
3 files changed, 32 insertions, 2 deletions
diff --git a/src/mod_roster.erl b/src/mod_roster.erl index 36bbe8cc9..dd211b95a 100644 --- a/src/mod_roster.erl +++ b/src/mod_roster.erl @@ -196,7 +196,7 @@ read_roster_version(LUser, LServer, mnesia) -> [#roster_version{version = V}] -> V; [] -> error end; -read_roster_version(LServer, LUser, odbc) -> +read_roster_version(LUser, LServer, odbc) -> Username = ejabberd_odbc:escape(LUser), case odbc_queries:get_roster_version(LServer, Username) of diff --git a/test/ejabberd_SUITE.erl b/test/ejabberd_SUITE.erl index 904d2bf66..52d3e695a 100644 --- a/test/ejabberd_SUITE.erl +++ b/test/ejabberd_SUITE.erl @@ -161,6 +161,7 @@ db_tests() -> presence_broadcast, last, roster_get, + roster_ver, private, privacy, blocking, @@ -308,6 +309,29 @@ roster_get(Config) -> send_recv(Config, #iq{type = get, sub_els = [#roster{}]}), disconnect(Config). +roster_ver(Config) -> + %% Get initial "ver" + #iq{type = result, sub_els = [#roster{ver = Ver1, items = []}]} = + send_recv(Config, #iq{type = get, + sub_els = [#roster{ver = <<"">>}]}), + %% Should receive empty IQ-result + #iq{type = result, sub_els = []} = + send_recv(Config, #iq{type = get, + sub_els = [#roster{ver = Ver1}]}), + %% Attempting to subscribe to server's JID + send(Config, #presence{type = subscribe, to = server_jid(Config)}), + %% Receive a single roster push with the new "ver" + #iq{type = set, sub_els = [#roster{ver = Ver2}]} = recv(), + %% Requesting roster with the previous "ver". Should receive Ver2 again + #iq{type = result, sub_els = [#roster{ver = Ver2}]} = + send_recv(Config, #iq{type = get, + sub_els = [#roster{ver = Ver1}]}), + %% Now requesting roster with the newest "ver". Should receive empty IQ. + #iq{type = result, sub_els = []} = + send_recv(Config, #iq{type = get, + sub_els = [#roster{ver = Ver2}]}), + disconnect(Config). + presence(Config) -> send(Config, #presence{}), JID = my_jid(Config), diff --git a/test/ejabberd_SUITE_data/ejabberd.yml b/test/ejabberd_SUITE_data/ejabberd.yml index 3c7479cd3..fd80b199f 100644 --- a/test/ejabberd_SUITE_data/ejabberd.yml +++ b/test/ejabberd_SUITE_data/ejabberd.yml @@ -33,7 +33,9 @@ host_config: - "flat" - "hometree" - "pep" - mod_roster: + mod_roster: + versioning: true + store_current_id: true db_type: odbc mod_vcard: db_type: odbc @@ -85,6 +87,8 @@ Welcome to this XMPP server." - "hometree" - "pep" mod_roster: + versioning: true + store_current_id: true db_type: odbc mod_vcard: db_type: odbc @@ -129,6 +133,8 @@ Welcome to this XMPP server." - "hometree" - "pep" mod_roster: + versioning: true + store_current_id: true db_type: internal mod_vcard: db_type: internal |