diff --git a/big_tests/tests/rest_SUITE.erl b/big_tests/tests/rest_SUITE.erl index cae9532473..ec4e487cb0 100644 --- a/big_tests/tests/rest_SUITE.erl +++ b/big_tests/tests/rest_SUITE.erl @@ -58,10 +58,7 @@ groups() -> [{admin, [parallel], test_cases()}, {auth, [parallel], auth_test_cases()}, {blank_auth, [parallel], blank_auth_testcases()}, - {roster, [parallel], [list_contacts, - befriend_and_alienate, - befriend_and_alienate_auto, - invalid_roster_operations]} + {roster, [parallel], roster_test_cases()} ]. auth_test_cases() -> @@ -85,6 +82,15 @@ test_cases() -> password_can_be_changed ]. +roster_test_cases() -> + [list_contacts, + befriend_and_alienate, + befriend_and_alienate_auto, + invalid_contacts_get, + invalid_contacts_post, + invalid_contacts_put, + invalid_contacts_delete]. + suite() -> escalus:suite(). @@ -365,6 +371,7 @@ befriend_and_alienate(Config) -> check_roster_empty(BobPath), % adds them to rosters {?NOCONTENT, _} = post(admin, AlicePath, #{jid => BobJID}), + {?NOCONTENT, _} = post(admin, AlicePath, #{jid => BobJID}), % it is idempotent {?NOCONTENT, _} = post(admin, BobPath, #{jid => AliceJID}), check_roster(BobPath, AliceJID, none, none), check_roster(AlicePath, BobJID, none, none), @@ -455,52 +462,70 @@ befriend_and_alienate_auto(Config) -> ), ok. -invalid_roster_operations(Config) -> - escalus:fresh_story( - Config, [{alice, 1}, {bob, 1}], - fun(Alice, Bob) -> - AliceJID = escalus_utils:jid_to_lower( - escalus_client:short_jid(Alice)), - BobJID = escalus_utils:jid_to_lower(escalus_client:short_jid(Bob)), - AliceS = binary_to_list(AliceJID), - BobS = binary_to_list(BobJID), - AlicePath = lists:flatten(["/contacts/", AliceS]), - % adds them to rosters - {?BAD_REQUEST, <<"Invalid JID">>} = post(admin, AlicePath, #{jid => <<"@invalidjid">>}), - {?BAD_REQUEST, <<"Invalid user JID">>} = post(admin, "/contacts/@invalid_jid", #{jid => BobJID}), - % it is idempotent - {?NOCONTENT, _} = post(admin, AlicePath, #{jid => BobJID}), - {?NOCONTENT, _} = post(admin, AlicePath, #{jid => BobJID}), - PutPathA = lists:flatten([AlicePath, "/@invalid_jid"]), - {?BAD_REQUEST, <<"Invalid contact JID">>} = putt(admin, PutPathA, #{action => <<"subscribe">>}), - PutPathB = lists:flatten(["/contacts/@invalid_jid/", BobS]), - {?BAD_REQUEST, <<"Invalid user JID">>} = putt(admin, PutPathB, #{action => <<"subscribe">>}), - PutPathC = lists:flatten([AlicePath, "/", BobS]), - {?BAD_REQUEST, <<"Invalid action">>} = putt(admin, PutPathC, #{action => <<"something stupid">>}), - ManagePath = lists:flatten(["/contacts/", - AliceS, - "/", - BobS, - "/manage" - ]), - {?BAD_REQUEST, <<"Invalid action">>} = putt(admin, ManagePath, #{action => <<"off with his head">>}), - MangePathA = lists:flatten(["/contacts/", - "@invalid", - "/", - BobS, - "/manage" - ]), - {?BAD_REQUEST, <<"Invalid user JID">>} = putt(admin, MangePathA, #{action => <<"connect">>}), - MangePathB = lists:flatten(["/contacts/", - AliceS, - "/", - "@bzzz", - "/manage" - ]), - {?BAD_REQUEST, <<"Invalid contact JID">>} = putt(admin, MangePathB, #{action => <<"connect">>}), - ok - end - ). +invalid_contacts_get(_Config) -> + {?NOT_FOUND, <<"Domain not found">>} = gett(admin, contacts_path("baduser@baddomain")). + +invalid_contacts_post(Config) -> + Config1 = escalus_fresh:create_users(Config, [{alice, 1}, {bob, 1}]), + BobJID = escalus_users:get_jid(Config, bob), + AliceS = binary_to_list(escalus_users:get_jid(Config1, alice)), + DomainS = binary_to_list(domain()), + {?BAD_REQUEST, <<"Missing JID">>} = + post(admin, contacts_path(AliceS), #{}), + {?BAD_REQUEST, <<"Invalid JID">>} = + post(admin, contacts_path(AliceS), #{jid => <<"@invalidjid">>}), + {?BAD_REQUEST, <<"Invalid user JID">>} = + post(admin, contacts_path("@invalid_jid"), #{jid => BobJID}), + {?NOT_FOUND, <<"The user baduser@localhost does not exist">>} = + post(admin, contacts_path("baduser@" ++ DomainS), #{jid => BobJID}), + {?NOT_FOUND, <<"Domain not found">>} = + post(admin, contacts_path("baduser@baddomain"), #{jid => BobJID}). + +invalid_contacts_put(Config) -> + Config1 = escalus_fresh:create_users(Config, [{alice, 1}, {bob, 1}]), + AliceS = binary_to_list(escalus_users:get_jid(Config1, alice)), + BobS = binary_to_list(escalus_users:get_jid(Config1, bob)), + DomainS = binary_to_list(domain()), + {?BAD_REQUEST, <<"Invalid contact JID">>} = + putt(admin, contacts_path(AliceS, "@invalid_jid"), #{action => <<"subscribe">>}), + {?BAD_REQUEST, <<"Invalid user JID">>} = + putt(admin, contacts_path("@invalid_jid", BobS), #{action => <<"subscribe">>}), + {?BAD_REQUEST, <<"Missing action">>} = + putt(admin, contacts_path(AliceS, BobS), #{}), + {?BAD_REQUEST, <<"Missing action">>} = + putt(admin, contacts_manage_path(AliceS, BobS), #{}), + {?BAD_REQUEST, <<"Invalid action">>} = + putt(admin, contacts_path(AliceS, BobS), #{action => <<"something stupid">>}), + {?BAD_REQUEST, <<"Invalid action">>} = + putt(admin, contacts_manage_path(AliceS, BobS), #{action => <<"off with his head">>}), + {?BAD_REQUEST, <<"Invalid user JID">>} = + putt(admin, contacts_manage_path("@invalid", BobS), #{action => <<"connect">>}), + {?BAD_REQUEST, <<"Invalid contact JID">>} = + putt(admin, contacts_manage_path(AliceS, "@bzzz"), #{action => <<"connect">>}), + {?NOT_FOUND, <<"The user baduser@baddomain does not exist">>} = + putt(admin, contacts_manage_path(AliceS, "baduser@baddomain"), #{action => <<"connect">>}), + {?NOT_FOUND, <<"Domain not found">>} = + putt(admin, contacts_manage_path("baduser@baddomain", AliceS), #{action => <<"connect">>}), + {?NOT_FOUND, <<"Cannot remove", _/binary>>} = + putt(admin, contacts_manage_path(AliceS, "baduser@" ++ DomainS), #{action => <<"disconnect">>}). + +invalid_contacts_delete(Config) -> + Config1 = escalus_fresh:create_users(Config, [{alice, 1}]), + AliceS = binary_to_list(escalus_users:get_jid(Config1, alice)), + DomainS = binary_to_list(domain()), + {?NOT_FOUND, <<"Cannot remove", _/binary>>} = + delete(admin, contacts_path(AliceS, "baduser@" ++ DomainS)), + {?BAD_REQUEST, <<"Missing contact JID">>} = + delete(admin, contacts_path(AliceS)). + +contacts_path(UserJID) -> + "/contacts/" ++ UserJID. + +contacts_path(UserJID, ContactJID) -> + contacts_path(UserJID) ++ "/" ++ ContactJID. + +contacts_manage_path(UserJID, ContactJID) -> + contacts_path(UserJID, ContactJID) ++ "/manage". %%-------------------------------------------------------------------- %% Helpers