Skip to content

Commit

Permalink
fix bugs in tests releated to uppercase letter in JID
Browse files Browse the repository at this point in the history
  • Loading branch information
michalwski committed Sep 15, 2014
1 parent cf647ec commit 95f4794
Show file tree
Hide file tree
Showing 5 changed files with 49 additions and 55 deletions.
4 changes: 2 additions & 2 deletions test.config
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,12 @@

{escalus_users, [
{alice, [
{username, <<"alice">>},
{username, <<"alicE">>},
{server, <<"localhost">>},
{password, <<"makota">>},
{compression, <<"zlib">>}]},
{bob, [
{username, <<"bob">>},
{username, <<"bOb">>},
{server, <<"localhost">>},
{password, <<"makrolika">>},
{ssl, optional}]},
Expand Down
64 changes: 32 additions & 32 deletions tests/ejabberdctl_SUITE.erl
Original file line number Diff line number Diff line change
Expand Up @@ -79,12 +79,10 @@ suite() ->

init_per_suite(Config) ->
{ok, EjdWD} = escalus_ejabberd:rpc(file, get_cwd, []),

Cwd0 = escalus_config:get_config(data_dir, Config),
CwdTokens = string:tokens(Cwd0, "/"),
Cwd = [$/ | string:join(lists:sublist(CwdTokens, 1, length(CwdTokens)-2), "/")],
TemplatePath = Cwd ++ "/roster.template",

start_mod_admin_extra(),
CtlPath = case filelib:is_file(EjdWD ++ "/bin/ejabberdctl") of
true -> EjdWD ++ "/bin/ejabberdctl";
Expand All @@ -96,7 +94,7 @@ init_per_suite(Config) ->
NewConfig = escalus:init_per_suite([{ctl_path, CtlPath},
{ctl_auth_mods, AuthMods},
{roster_template, TemplatePath} | Config]),
escalus:create_users(NewConfig).
escalus:create_users(NewConfig, {by_name, [alice, mike, bob, kate]}).

end_per_suite(Config) ->
Config1 = lists:keydelete(ctl_auth_mods, 1, Config),
Expand All @@ -123,7 +121,7 @@ init_per_testcase(CaseName, Config) ->
escalus:init_per_testcase(CaseName, Config).

end_per_testcase(delete_old_users, Config) ->
Users = escalus_users:get_users(all),
Users = escalus_users:get_users({by_name, [alice, bob, kate, mike]}),
lists:foreach(fun({_User, UserSpec}) ->
{Username, Domain, Pass} = get_user_data(UserSpec, Config),
escalus_ejabberd:rpc(ejabberd_auth, try_register, [Username, Domain, Pass])
Expand Down Expand Up @@ -187,7 +185,6 @@ num_active_users(Config) ->
Now = Mega*1000000+Secs,
set_last(AliceName, Domain, Now),
set_last(MikeName, Domain, Now - 864000), %% Now - 10 days

{"1\n", _} = ejabberdctl("num_active_users", [Domain, "5"], Config).

delete_old_users(Config) ->
Expand Down Expand Up @@ -229,7 +226,7 @@ delete_old_users_vhost(Config) ->

%% Checks both num_resources and resource_num
num_resources_num(Config) ->
escalus:story(Config, [3, 1], fun(_, Alice2, _, _) ->
escalus:story(Config, [{alice, 3}, {bob, 1}], fun(_, Alice2, _, _) ->
{Username, Domain, _} = get_user_data(alice, Config),
ResName = binary_to_list(escalus_client:resource(Alice2)) ++ "\n",

Expand All @@ -238,7 +235,7 @@ num_resources_num(Config) ->
end).

kick_session(Config) ->
escalus:story(Config, [1], fun(Alice) ->
escalus:story(Config, [{alice, 1}], fun(Alice) ->
Username = escalus_client:username(Alice),
Domain = escalus_client:server(Alice),
Resource = escalus_client:resource(Alice),
Expand Down Expand Up @@ -288,7 +285,7 @@ sessions_info(Config) ->
end).

set_presence(Config) ->
escalus:story(Config, [1], fun(Alice) ->
escalus:story(Config, [{alice, 1}], fun(Alice) ->
Username = escalus_client:username(Alice),
Domain = escalus_client:server(Alice),
Resource = escalus_client:resource(Alice),
Expand Down Expand Up @@ -340,7 +337,7 @@ vcard2_multi_rw(Config) ->
%%--------------------------------------------------------------------

rosteritem_rw(Config) ->
escalus:story(Config, [1], fun(Alice) ->
escalus:story(Config, [{alice, 1}], fun(Alice) ->
{AliceName, Domain, _} = get_user_data(alice, Config),
{BobName, Domain, _} = get_user_data(bob, Config),
{MikeName, Domain, _} = get_user_data(mike, Config),
Expand Down Expand Up @@ -379,26 +376,25 @@ rosteritem_rw(Config) ->
end).

presence_after_add_rosteritem(Config) ->
escalus:story(Config, [1,1], fun(Alice, Bob) ->
escalus:story(Config, [{alice, 1}, {bob,1}], fun(Alice, Bob) ->
{AliceName, Domain, _} = get_user_data(alice, Config),
{BobName, Domain, _} = get_user_data(bob, Config),

{_, 0} = ejabberdctl("add_rosteritem", [AliceName, Domain, BobName,
Domain, "MyBob", "MyGroup", "both"], Config),

escalus:send(Alice, escalus_stanza:presence(<<"available">>)),
escalus:assert(is_presence, escalus:wait_for_stanza(Bob)),

escalus:send(Alice, escalus_stanza:roster_remove_contact(bob)) % cleanup
end).

push_roster(Config) ->
escalus:story(Config, [1], fun(Alice) ->
escalus:story(Config, [{alice, 1}], fun(Alice) ->
{AliceName, Domain, _} = get_user_data(alice, Config),
TemplatePath = escalus_config:get_config(roster_template, Config),

{_, 0} = ejabberdctl("push_roster", [TemplatePath, AliceName, Domain], Config),

escalus:send(Alice, escalus_stanza:roster_get()),
Roster1 = escalus:wait_for_stanza(Alice),
escalus:assert(is_roster_result, Roster1),
Expand All @@ -408,7 +404,7 @@ push_roster(Config) ->
end).

push_roster_all(Config) ->
escalus:story(Config, [1, 1], fun(Alice, Bob) ->
escalus:story(Config, [{alice, 1}, {bob,1}], fun(Alice, Bob) ->
TemplatePath = escalus_config:get_config(roster_template, Config),

{_, 0} = ejabberdctl("push_roster_all", [TemplatePath], Config),
Expand All @@ -428,7 +424,7 @@ push_roster_all(Config) ->
end).

push_roster_alltoall(Config) ->
escalus:story(Config, [1], fun(Alice) ->
escalus:story(Config, [{alice, 1}], fun(Alice) ->
{_, Domain, _} = get_user_data(alice, Config),

{_, 0} = ejabberdctl("push_roster_alltoall", [Domain, "MyGroup"], Config),
Expand All @@ -447,7 +443,7 @@ push_roster_alltoall(Config) ->
%%--------------------------------------------------------------------

set_last(Config) ->
escalus:story(Config, [1], fun(Alice) ->
escalus:story(Config, [{alice, 1}], fun(Alice) ->
{AliceName, Domain, _} = get_user_data(alice, Config),
{BobName, Domain, _} = get_user_data(bob, Config),

Expand Down Expand Up @@ -495,7 +491,7 @@ private_rw(Config) ->
%%--------------------------------------------------------------------

send_message(Config) ->
escalus:story(Config, [1, 2], fun(Alice, Bob1, Bob2) ->
escalus:story(Config, [{alice, 1}, {bob, 2}], fun(Alice, Bob1, Bob2) ->
{_, 0} = ejabberdctl("send_message_chat", [escalus_client:full_jid(Alice),
escalus_client:full_jid(Bob1),
"'\"Hi Bob!\"'"], Config),
Expand All @@ -504,15 +500,15 @@ send_message(Config) ->

{_, 0} = ejabberdctl("send_message_headline", [escalus_client:full_jid(Alice),
escalus_client:short_jid(Bob1),
"Subj", "'\"Hi Bob!\"'"], Config),
"Subj", "'\"Hi Bob!!\"'"], Config),
Stanza2 = escalus:wait_for_stanza(Bob1),
Stanza3 = escalus:wait_for_stanza(Bob2),
escalus:assert(is_headline_message, [<<"Subj">>, <<"Hi Bob!">>], Stanza2),
escalus:assert(is_headline_message, [<<"Subj">>, <<"Hi Bob!">>], Stanza3)
escalus:assert(is_headline_message, [<<"Subj">>, <<"Hi Bob!!">>], Stanza2),
escalus:assert(is_headline_message, [<<"Subj">>, <<"Hi Bob!!">>], Stanza3)
end).

send_stanza(Config) ->
escalus:story(Config, [1, 1], fun(Alice, Bob) ->
escalus:story(Config, [{alice, 1}, {bob,1}], fun(Alice, Bob) ->
Domain = escalus_client:server(Alice),
Resource = escalus_client:resource(Alice),
{BobName, _, _} = get_user_data(bob, Config),
Expand All @@ -532,12 +528,12 @@ send_stanza(Config) ->
%%--------------------------------------------------------------------

stats_global(Config) ->
escalus:story(Config, [1, 1], fun(_Alice, _Bob) ->
Registered = integer_to_list(length(escalus_users:get_users(all))) ++ "\n",
escalus:story(Config, [{alice, 1}, {bob,1}], fun(_Alice, _Bob) ->
RegisteredCount = length(escalus_config:get_config(escalus_users, Config, [])),
Registered = integer_to_list(RegisteredCount) ++ "\n",

{UpTime, 0} = ejabberdctl("stats", ["uptimeseconds"], Config),
_ = list_to_integer(string:strip(UpTime, both, $\n)),

{Registered, 0} = ejabberdctl("stats", ["registeredusers"], Config),

{"2\n", 0} = ejabberdctl("stats", ["onlineusersnode"], Config),
Expand All @@ -546,8 +542,9 @@ stats_global(Config) ->
end).

stats_host(Config) ->
escalus:story(Config, [1, 1], fun(Alice, _Bob) ->
Registered = integer_to_list(length(escalus_users:get_users(all))) ++ "\n",
escalus:story(Config, [{alice, 1}, {bob,1}], fun(Alice, _Bob) ->
RegisteredCount = length(escalus_config:get_config(escalus_users, Config, [])),
Registered = integer_to_list(RegisteredCount) ++ "\n",

PriDomain = escalus_client:server(Alice),
SecDomain = escalus_config:get_config(ejabberd_secondary_domain, Config),
Expand Down Expand Up @@ -621,7 +618,7 @@ set_last(User, Domain, TStamp) ->
escalus_ejabberd:rpc(Mod, store_last_info, [User, Domain, TStamp, <<>>]).

delete_users(Config) ->
Users = escalus_users:get_users(all),
Users = escalus_users:get_users({by_name, [alice, bob, kate, mike]}),
lists:foreach(fun({_User, UserSpec}) ->
{Username, Domain, _Pass} = get_user_data(UserSpec, Config),
escalus_ejabberd:rpc(ejabberd_auth, remove_user, [Username, Domain])
Expand Down Expand Up @@ -666,7 +663,7 @@ match_user_info2([User | UserR], UsersInfo) ->
FullJID = Username ++ "@" ++ Domain ++ "/" ++ Resource,

true = lists:any(fun(UserInfo) ->
string:str(UserInfo, FullJID) =:= 1
string:str(UserInfo, string:to_lower(FullJID)) =:= 1
end, UsersInfo),
match_user_info2(UserR, UsersInfo).

Expand All @@ -675,8 +672,11 @@ match_roster(ItemsValid, Items) ->

true = (length(ItemsValid) == length(ItemsTokens)),
true = lists:all(fun({Username, Domain, Nick, Group, Sub}) ->
lists:any(fun(ItemTokens) ->
ItemTokens =:= [binary_to_list(Username) ++ "@" ++ binary_to_list(Domain),
Nick, Sub, "none", Group]
end, ItemsTokens)
JID = escalus_utils:jid_to_lower(<<Username/binary, "@", Domain/binary >>),
lists:any(fun
([RosterJID, Nick, Sub, "none", Group]) ->
JID =:= escalus_utils:jid_to_lower(list_to_binary(RosterJID));
(_) ->
false
end, ItemsTokens)
end, ItemsValid).
5 changes: 2 additions & 3 deletions tests/login_SUITE.erl
Original file line number Diff line number Diff line change
Expand Up @@ -138,9 +138,8 @@ end_per_testcase(CaseName, Config) ->
%%--------------------------------------------------------------------

register(Config) ->
Users = escalus_config:get_config(escalus_users, Config),
[{Name1, UserSpec1}, {Name2, UserSpec2} | _] = Users,
{_, AdminSpec} = lists:keyfind(admin, 1, Users),
[{Name1, UserSpec1}, {Name2, UserSpec2}] = escalus_users:get_users({by_name, [alice, bob]}),
[{_, AdminSpec}] = escalus_users:get_users({by_name, [admin]}),
[Username1, Server1, _Pass1] = escalus_users:get_usp(Config, UserSpec1),
[Username2, Server2, _Pass2] = escalus_users:get_usp(Config, UserSpec2),
[AdminU, AdminS, AdminP] = escalus_users:get_usp(Config, AdminSpec),
Expand Down
26 changes: 12 additions & 14 deletions tests/muc_SUITE.erl
Original file line number Diff line number Diff line change
Expand Up @@ -1261,6 +1261,7 @@ admin_ban_higher_user(Config) ->
admin_ban_list(Config) ->
escalus:story(Config, [1, 1, 1], fun(Alice, Bob, Kate) ->
%% Alice requests ban list

escalus:send(Alice, stanza_ban_list_request(?config(room, Config))),
List = escalus:wait_for_stanza(Alice),
escalus:assert(is_iq_result, List),
Expand Down Expand Up @@ -2404,7 +2405,8 @@ send_private_groupchat(Config) ->
% Fails - no 110 status code
change_nickname(Config) ->
escalus:story(Config, [1, 1, 1], fun(_Alice, Bob, Eve) ->
escalus:send(Bob, stanza_muc_enter_room(?config(room, Config), escalus_utils:get_username(Bob))),
BobNick = escalus_utils:get_username(Bob),
escalus:send(Bob, stanza_muc_enter_room(?config(room, Config), BobNick)),
escalus:wait_for_stanzas(Bob, 2),
escalus:send(Eve, stanza_muc_enter_room(?config(room, Config), escalus_utils:get_username(Eve))),
escalus:wait_for_stanza(Bob),
Expand All @@ -2413,8 +2415,8 @@ change_nickname(Config) ->
escalus:send(Bob, stanza_change_nick(?config(room, Config), <<"newbob">>)),
Presence = escalus:wait_for_stanza(Bob),
has_status_codes(Presence, [<<"110">>]),
is_nick_unavailable_correct(?config(room, Config), <<"bob">>, <<"newbob">>, escalus:wait_for_stanza(Eve)),
is_nick_unavailable_correct(?config(room, Config), <<"bob">>, <<"newbob">>, Presence),
is_nick_unavailable_correct(?config(room, Config), BobNick, <<"newbob">>, escalus:wait_for_stanza(Eve)),
is_nick_unavailable_correct(?config(room, Config), BobNick, <<"newbob">>, Presence),
is_nick_update_correct(?config(room, Config), <<"newbob">>, escalus:wait_for_stanza(Eve)),
Presence2 = escalus:wait_for_stanza(Bob),
is_nick_update_correct(?config(room, Config), <<"newbob">>, Presence2),
Expand Down Expand Up @@ -2957,8 +2959,8 @@ configure(Config) ->
configure_logging(Config) ->
escalus:story(Config, [1,1,1], fun(Alice, Bob, Kate) ->
%% Bob joins room
escalus:send(Bob, stanza_muc_enter_room(?config(room, Config), <<"bob">>)),
escalus:send(Kate, stanza_muc_enter_room(?config(room, Config), <<"kate">>)),
escalus:send(Bob, stanza_muc_enter_room(?config(room, Config), escalus_utils:get_username(Bob))),
escalus:send(Kate, stanza_muc_enter_room(?config(room, Config), escalus_utils:get_username(Kate))),
escalus:wait_for_stanzas(Bob, 3),
escalus:wait_for_stanzas(Kate, 3),

Expand Down Expand Up @@ -3764,7 +3766,6 @@ is_presence_from(User, Room, Presence) ->

%does not check the jid - the user might not be entitled to receive it.
is_availability_status_notification_correct(Room, SenderNick, NewStatus, ReceivedMessage) ->
%error_logger:info_msg("tested message: ~n~p~n", [ReceivedMessage]),
escalus_pred:is_presence(ReceivedMessage),
From = room_address(Room, SenderNick),
From = exml_query:attr(ReceivedMessage, <<"from">>),
Expand All @@ -3775,7 +3776,6 @@ is_item_list_empty(#xmlel{children = [Query]}) ->
Query#xmlel.children == [].

assert_is_message_correct(Room, SenderNick, Type, Text, ReceivedMessage) ->
%error_logger:info_msg("tested message: ~n~p~n", [ReceivedMessage]),
escalus_pred:is_message(ReceivedMessage),
From = room_address(Room, SenderNick),
From = exml_query:attr(ReceivedMessage, <<"from">>),
Expand Down Expand Up @@ -3819,10 +3819,8 @@ print(Element) ->
generate_rpc_jid({_,User}) ->
{username, Username} = lists:keyfind(username, 1, User),
{server, Server} = lists:keyfind(server, 1, User),
%% esl-ejabberd uses different record to store jids
%JID = <<Username/binary, "@", Server/binary, "/rpc">>,
%{jid, JID, Username, Server, <<"rpc">>}.
{jid, Username, Server, <<"rpc">>, Username, Server, <<"rpc">>}.
JID = <<Username/binary, "@", Server/binary, "/rpc">>,
escalus_ejabberd:rpc(jlib, binary_to_jid, [JID]).

%Groupchat 1.0 protocol
stanza_groupchat_enter_room(Room, Nick) ->
Expand Down Expand Up @@ -4213,8 +4211,8 @@ is_iq_with_short_jid(Stanza, User) ->

is_short_jid(Stanza, User) ->
Items = exml_query:subelements(Stanza, <<"item">>),
JID = escalus_utils:get_short_jid(User),
lists:any(fun(Item) -> exml_query:attr(Item, <<"jid">>) =:= JID end, Items).
JID = escalus_utils:jid_to_lower(escalus_utils:get_short_jid(User)),
lists:any(fun(Item) -> escalus_utils:jid_to_lower(exml_query:attr(Item, <<"jid">>)) =:= JID end, Items).

is_presence_with_status_code(Presence, Code) ->
escalus:assert(is_presence, Presence),
Expand Down Expand Up @@ -4347,4 +4345,4 @@ has_muc(#xmlel{children = [ #xmlel{children = Services} ]}) ->
is_room_locked(Stanza) ->
escalus_pred:is_presence(Stanza)
andalso
escalus_pred:is_error(<<"cancel">>, <<"item-not-found">>, Stanza).
escalus_pred:is_error(<<"cancel">>, <<"item-not-found">>, Stanza).
5 changes: 1 addition & 4 deletions tests/offline_SUITE.erl
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,6 @@

all() ->
[{group, mod_offline_tests}].
%% FIXME: uncomment mod_offline_odbc_tests when the module is ready
%% [{group, mod_offline_tests},
%% {group, mod_offline_odbc_tests}].

all_tests() ->
[simple_message].
Expand Down Expand Up @@ -59,7 +56,7 @@ end_per_testcase(CaseName, Config) ->

simple_message(Config) ->
%% Alice sends a message to Bob, who is offline
escalus:story(Config, [1], fun(Alice) ->
escalus:story(Config, [{alice, 1}], fun(Alice) ->
escalus:send(Alice, escalus_stanza:chat_to(bob, <<"Hi, Offline!">>))
end),

Expand Down

0 comments on commit 95f4794

Please sign in to comment.