diff options
author | Evgeniy Khramtsov <ekhramtsov@process-one.net> | 2016-09-24 14:17:21 +0300 |
---|---|---|
committer | Evgeniy Khramtsov <ekhramtsov@process-one.net> | 2016-09-24 14:17:21 +0300 |
commit | 58969fb854207637e8c3548c1b2a6a0c865dfe7e (patch) | |
tree | 4ac174a5806a1ef965e255392579405465a1193c /test | |
parent | Add tests for s2s code (diff) |
Improve namespace handling
Diffstat (limited to 'test')
-rw-r--r-- | test/ejabberd_SUITE.erl | 42 | ||||
-rw-r--r-- | test/suite.erl | 54 | ||||
-rw-r--r-- | test/suite.hrl | 10 |
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)); |