aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorEvgeniy Khramtsov <ekhramtsov@process-one.net>2016-09-24 14:17:21 +0300
committerEvgeniy Khramtsov <ekhramtsov@process-one.net>2016-09-24 14:17:21 +0300
commit58969fb854207637e8c3548c1b2a6a0c865dfe7e (patch)
tree4ac174a5806a1ef965e255392579405465a1193c /test
parentAdd tests for s2s code (diff)
Improve namespace handling
Diffstat (limited to 'test')
-rw-r--r--test/ejabberd_SUITE.erl42
-rw-r--r--test/suite.erl54
-rw-r--r--test/suite.hrl10
3 files changed, 49 insertions, 57 deletions
diff --git a/test/ejabberd_SUITE.erl b/test/ejabberd_SUITE.erl
index 063f51bd1..4c63bf295 100644
--- a/test/ejabberd_SUITE.erl
+++ b/test/ejabberd_SUITE.erl
@@ -11,7 +11,7 @@
-compile(export_all).
-import(suite, [init_config/1, connect/1, disconnect/1,
- recv/0, send/2, send_recv/2, my_jid/1, server_jid/1,
+ recv/1, send/2, send_recv/2, my_jid/1, server_jid/1,
pubsub_jid/1, proxy_jid/1, muc_jid/1, muc_room_jid/1,
mix_jid/1, mix_room_jid/1, get_features/2, re_register/1,
is_feature_advertised/2, subscribe_to_events/1,
@@ -974,7 +974,7 @@ sm_resume(Config) ->
Txt = #text{data = <<"body">>},
Msg = #message{from = ServerJID, to = MyJID, body = [Txt]},
%% Route message. The message should be queued by the C2S process.
- ejabberd_router:route(ServerJID, MyJID, xmpp_codec:encode(Msg)),
+ ejabberd_router:route(ServerJID, MyJID, Msg),
send(Config, #sm_resume{previd = ID, h = 0, xmlns = ?NS_STREAM_MGMT_3}),
?recv1(#sm_resumed{previd = ID, h = 3}),
?recv1(#message{from = ServerJID, to = MyJID, body = [Txt]}),
@@ -1001,7 +1001,7 @@ private(Config) ->
<<"some.conference.org">>,
<<>>)},
Storage = #bookmark_storage{conference = [Conference]},
- StorageXMLOut = xmpp_codec:encode(Storage),
+ StorageXMLOut = xmpp:encode(Storage),
WrongEl = #xmlel{name = <<"wrong">>},
#iq{type = error} =
send_recv(Config, #iq{type = get,
@@ -1015,9 +1015,9 @@ private(Config) ->
send_recv(
Config,
#iq{type = get,
- sub_els = [#private{xml_els = [xmpp_codec:encode(
+ sub_els = [#private{xml_els = [xmpp:encode(
#bookmark_storage{})]}]}),
- Storage = xmpp_codec:decode(StorageXMLIn),
+ Storage = xmpp:decode(StorageXMLIn),
disconnect(Config).
last(Config) ->
@@ -1221,7 +1221,7 @@ pubsub(Config) ->
ItemID = randoms:get_string(),
Node = <<"presence!@#$%^&*()'\"`~<>+-/;:_=[]{}|\\">>,
Item = #ps_item{id = ItemID,
- xml_els = [xmpp_codec:encode(#presence{})]},
+ xml_els = [xmpp:encode(#presence{})]},
#iq{type = result,
sub_els = [#pubsub{publish = #ps_publish{
node = Node,
@@ -1320,10 +1320,10 @@ mix_master(Config) ->
?recv2(#iq{type = result, id = I0,
sub_els = [#mix_join{subscribe = Nodes, jid = MyBareJID}]},
#message{from = Room}),
- #mix_participant{jid = MyBareJID} = xmpp_codec:decode(PXML),
+ #mix_participant{jid = MyBareJID} = xmpp:decode(PXML),
%% Coming online
PresenceID = randoms:get_string(),
- Presence = xmpp_codec:encode(#presence{}),
+ Presence = xmpp:encode(#presence{}),
I1 = send(
Config,
#iq{type = set, to = Room,
@@ -1355,7 +1355,7 @@ mix_master(Config) ->
sub_els = [#ps_event{
items = #ps_items{
node = ?NS_MIX_NODES_PRESENCE,
- retract = PresenceID}}]} = recv(),
+ retract = PresenceID}}]} = recv(Config),
%% Leaving
I2 = send(Config, #iq{type = set, to = Room, sub_els = [#mix_leave{}]}),
?recv2(#iq{type = result, id = I2, sub_els = []},
@@ -2367,7 +2367,7 @@ mam_query_all(Config, NS) ->
_ -> set
end,
I = send(Config, #iq{type = Type, sub_els = [#mam_query{xmlns = NS, id = QID}]}),
- maybe_recv_iq_result(NS, I),
+ maybe_recv_iq_result(Config, NS, I),
Iter = if NS == ?NS_MAM_TMP -> lists:seq(1, 5);
true -> lists:seq(1, 5) ++ lists:seq(1, 5)
end,
@@ -2408,7 +2408,7 @@ mam_query_with(Config, JID, NS) ->
Iter = if NS == ?NS_MAM_TMP -> lists:seq(1, 5);
true -> lists:seq(1, 5) ++ lists:seq(1, 5)
end,
- maybe_recv_iq_result(NS, I),
+ maybe_recv_iq_result(Config, NS, I),
lists:foreach(
fun(N) ->
Text = #text{data = integer_to_binary(N)},
@@ -2430,9 +2430,9 @@ mam_query_with(Config, JID, NS) ->
?recv1(#message{sub_els = [#mam_fin{complete = true}]})
end.
-maybe_recv_iq_result(?NS_MAM_0, I1) ->
+maybe_recv_iq_result(Config, ?NS_MAM_0, I1) ->
?recv1(#iq{type = result, id = I1});
-maybe_recv_iq_result(_, _) ->
+maybe_recv_iq_result(_, _, _) ->
ok.
mam_query_rsm(Config, NS) ->
@@ -2446,7 +2446,7 @@ mam_query_rsm(Config, NS) ->
I1 = send(Config,
#iq{type = Type,
sub_els = [#mam_query{xmlns = NS, rsm = #rsm_set{max = 3}}]}),
- maybe_recv_iq_result(NS, I1),
+ maybe_recv_iq_result(Config, NS, I1),
lists:foreach(
fun(N) ->
Text = #text{data = integer_to_binary(N)},
@@ -2478,7 +2478,7 @@ mam_query_rsm(Config, NS) ->
sub_els = [#mam_query{xmlns = NS,
rsm = #rsm_set{max = 2,
'after' = Last}}]}),
- maybe_recv_iq_result(NS, I2),
+ maybe_recv_iq_result(Config, NS, I2),
lists:foreach(
fun(N) ->
Text = #text{data = integer_to_binary(N)},
@@ -2515,7 +2515,7 @@ mam_query_rsm(Config, NS) ->
sub_els = [#mam_query{xmlns = NS,
rsm = #rsm_set{max = 3,
before = First}}]}),
- maybe_recv_iq_result(NS, I3),
+ maybe_recv_iq_result(Config, NS, I3),
lists:foreach(
fun(N) ->
Text = #text{data = integer_to_binary(N)},
@@ -2544,7 +2544,7 @@ mam_query_rsm(Config, NS) ->
#iq{type = Type,
sub_els = [#mam_query{xmlns = NS,
rsm = #rsm_set{max = 0}}]}),
- maybe_recv_iq_result(NS, I4),
+ maybe_recv_iq_result(Config, NS, I4),
if NS == ?NS_MAM_TMP ->
?recv1(#iq{type = result, id = I4,
sub_els = [#mam_query{
@@ -2566,7 +2566,7 @@ mam_query_rsm(Config, NS) ->
sub_els = [#mam_query{xmlns = NS,
rsm = #rsm_set{max = 2,
before = <<"">>}}]}),
- maybe_recv_iq_result(NS, I5),
+ maybe_recv_iq_result(Config, NS, I5),
lists:foreach(
fun(N) ->
Text = #text{data = integer_to_binary(N)},
@@ -2598,7 +2598,7 @@ client_state_master(Config) ->
ChatState = #message{to = Peer, thread = <<"1">>,
sub_els = [#chatstate{type = active}]},
Message = ChatState#message{body = [#text{data = <<"body">>}]},
- PepPayload = xmpp_codec:encode(#presence{}),
+ PepPayload = xmpp:encode(#presence{}),
PepOne = #message{
to = Peer,
sub_els =
@@ -2661,7 +2661,7 @@ client_state_slave(Config) ->
items =
[#ps_item{
id = <<"pep-1">>}]}},
- #delay{}]} = recv(),
+ #delay{}]} = recv(Config),
#message{
from = Peer,
sub_els =
@@ -2672,7 +2672,7 @@ client_state_slave(Config) ->
items =
[#ps_item{
id = <<"pep-2">>}]}},
- #delay{}]} = recv(),
+ #delay{}]} = recv(Config),
?recv1(#message{from = Peer, thread = <<"1">>,
sub_els = [#chatstate{type = composing},
#delay{}]}),
diff --git a/test/suite.erl b/test/suite.erl
index e4be0054f..e10c7e0c4 100644
--- a/test/suite.erl
+++ b/test/suite.erl
@@ -184,11 +184,11 @@ init_stream(Config) ->
component -> ?NS_COMPONENT;
server -> ?NS_SERVER
end,
- #stream_start{id = ID, xmlns = XMLNS, version = Version} = recv(),
+ #stream_start{id = ID, xmlns = XMLNS, version = Version} = recv(Config),
set_opt(stream_id, ID, NewConfig).
process_stream_features(Config) ->
- #stream_features{sub_els = Fs} = recv(),
+ #stream_features{sub_els = Fs} = recv(Config),
Mechs = lists:flatmap(
fun(#sasl_mechanisms{list = Ms}) ->
Ms;
@@ -213,7 +213,7 @@ disconnect(Config) ->
catch exit:normal ->
ok
end,
- {xmlstreamend, <<"stream:stream">>} = recv(),
+ {xmlstreamend, <<"stream:stream">>} = recv(Config),
ejabberd_socket:close(Socket),
Config.
@@ -227,7 +227,7 @@ starttls(Config) ->
starttls(Config, ShouldFail) ->
send(Config, #starttls{}),
- case recv() of
+ case recv(Config) of
#starttls_proceed{} when ShouldFail ->
ct:fail(starttls_should_have_failed);
#starttls_failure{} when ShouldFail ->
@@ -244,7 +244,7 @@ starttls(Config, ShouldFail) ->
zlib(Config) ->
send(Config, #compress{methods = [<<"zlib">>]}),
- #compressed{} = recv(),
+ #compressed{} = recv(Config),
ZlibSocket = ejabberd_socket:compress(?config(socket, Config)),
process_stream_features(init_stream(set_opt(socket, ZlibSocket, Config))).
@@ -346,7 +346,7 @@ auth_component(Config, ShouldFail) ->
Password = ?config(password, Config),
Digest = p1_sha:sha(<<StreamID/binary, Password/binary>>),
send(Config, #handshake{data = Digest}),
- case recv() of
+ case recv(Config) of
#handshake{} when ShouldFail ->
ct:fail(component_auth_should_have_failed);
#handshake{} ->
@@ -369,7 +369,7 @@ auth_SASL(Mech, Config, ShouldFail) ->
wait_auth_SASL_result(set_opt(sasl, SASL, Config), ShouldFail).
wait_auth_SASL_result(Config, ShouldFail) ->
- case recv() of
+ case recv(Config) of
#sasl_success{} when ShouldFail ->
ct:fail(sasl_auth_should_have_failed);
#sasl_success{} ->
@@ -379,8 +379,8 @@ wait_auth_SASL_result(Config, ShouldFail) ->
NS = if Type == client -> ?NS_CLIENT;
Type == server -> ?NS_SERVER
end,
- #stream_start{xmlns = NS, version = {1,0}} = recv(),
- #stream_features{sub_els = Fs} = recv(),
+ #stream_start{xmlns = NS, version = {1,0}} = recv(Config),
+ #stream_features{sub_els = Fs} = recv(Config),
if Type == client ->
#xmpp_session{optional = true} =
lists:keyfind(xmpp_session, 1, Fs);
@@ -417,39 +417,31 @@ match_failure(Received, [Match]) when is_list(Match)->
match_failure(Received, Matches) ->
ct:fail("Received input:~n~n~p~n~ndon't match expected patterns:~n~n~p", [Received, Matches]).
-recv() ->
+recv(Config) ->
receive
{'$gen_event', {xmlstreamelement, El}} ->
- decode(El);
+ NS = case ?config(type, Config) of
+ client -> ?NS_CLIENT;
+ server -> ?NS_SERVER;
+ component -> ?NS_COMPONENT
+ end,
+ decode(El, NS, []);
{'$gen_event', {xmlstreamstart, Name, Attrs}} ->
- decode(#xmlel{name = Name, attrs = Attrs});
+ decode(#xmlel{name = Name, attrs = Attrs}, <<>>, []);
{'$gen_event', Event} ->
Event
end.
-decode(El) ->
+decode(El, NS, Opts) ->
try
- Pkt = xmpp:decode(El),
- ct:pal("recv: ~p ->~n~s", [El, xmpp_codec:pp(Pkt)]),
+ Pkt = xmpp:decode(El, NS, Opts),
+ ct:pal("recv: ~p ->~n~s", [El, xmpp:pp(Pkt)]),
Pkt
catch _:{xmpp_codec, Why} ->
ct:fail("recv failed: ~p->~n~s",
[El, xmpp:format_error(Why)])
end.
-fix_ns(#xmlel{name = Tag, attrs = Attrs} = El)
- when Tag == <<"stream:features">>; Tag == <<"stream:error">> ->
- NewAttrs = [{<<"xmlns">>, <<"http://etherx.jabber.org/streams">>}
- |lists:keydelete(<<"xmlns">>, 1, Attrs)],
- El#xmlel{attrs = NewAttrs};
-fix_ns(#xmlel{name = Tag, attrs = Attrs} = El)
- when Tag == <<"message">>; Tag == <<"iq">>; Tag == <<"presence">> ->
- NewAttrs = [{<<"xmlns">>, <<"jabber:client">>}
- |lists:keydelete(<<"xmlns">>, 1, Attrs)],
- El#xmlel{attrs = NewAttrs};
-fix_ns(El) ->
- El.
-
send_text(Config, Text) ->
ejabberd_socket:send(?config(socket, Config), Text).
@@ -467,8 +459,8 @@ send(State, Pkt) ->
_ ->
{undefined, Pkt}
end,
- El = xmpp_codec:encode(NewPkt),
- ct:pal("sent: ~p <-~n~s", [El, xmpp_codec:pp(NewPkt)]),
+ El = xmpp:encode(NewPkt),
+ ct:pal("sent: ~p <-~n~s", [El, xmpp:pp(NewPkt)]),
Data = case NewPkt of
#stream_start{} -> fxml:element_to_header(El);
_ -> fxml:element_to_binary(El)
@@ -478,7 +470,7 @@ send(State, Pkt) ->
send_recv(State, IQ) ->
ID = send(State, IQ),
- #iq{id = ID} = recv().
+ #iq{id = ID} = recv(State).
sasl_new(<<"PLAIN">>, User, Server, Password) ->
{<<User/binary, $@, Server/binary, 0, User/binary, 0, Password/binary>>,
diff --git a/test/suite.hrl b/test/suite.hrl
index cbeedff53..4110da0df 100644
--- a/test/suite.hrl
+++ b/test/suite.hrl
@@ -13,7 +13,7 @@
-define(recv1(P1),
P1 = (fun() ->
- V = recv(),
+ V = recv(Config),
case V of
P1 -> V;
_ -> suite:match_failure([V], [??P1])
@@ -22,7 +22,7 @@
-define(recv2(P1, P2),
(fun() ->
- case {R1 = recv(), R2 = recv()} of
+ case {R1 = recv(Config), R2 = recv(Config)} of
{P1, P2} -> {R1, R2};
{P2, P1} -> {R2, R1};
{P1, V1} -> suite:match_failure([V1], [P2]);
@@ -35,7 +35,7 @@
-define(recv3(P1, P2, P3),
(fun() ->
- case R3 = recv() of
+ case R3 = recv(Config) of
P1 -> insert(R3, 1, ?recv2(P2, P3));
P2 -> insert(R3, 2, ?recv2(P1, P3));
P3 -> insert(R3, 3, ?recv2(P1, P2));
@@ -45,7 +45,7 @@
-define(recv4(P1, P2, P3, P4),
(fun() ->
- case R4 = recv() of
+ case R4 = recv(Config) of
P1 -> insert(R4, 1, ?recv3(P2, P3, P4));
P2 -> insert(R4, 2, ?recv3(P1, P3, P4));
P3 -> insert(R4, 3, ?recv3(P1, P2, P4));
@@ -56,7 +56,7 @@
-define(recv5(P1, P2, P3, P4, P5),
(fun() ->
- case R5 = recv() of
+ case R5 = recv(Config) of
P1 -> insert(R5, 1, ?recv4(P2, P3, P4, P5));
P2 -> insert(R5, 2, ?recv4(P1, P3, P4, P5));
P3 -> insert(R5, 3, ?recv4(P1, P2, P4, P5));