From ab2519428fa11531cffe6e367a896f2357ea6bf0 Mon Sep 17 00:00:00 2001 From: "radostin.dimitrov" Date: Wed, 17 Apr 2019 12:12:21 +0300 Subject: [PATCH 1/2] fixed some issues about room link test; make join link test more compact --- apps/roster/src/test/room_test.erl | 67 ++++++++++++------------------ 1 file changed, 27 insertions(+), 40 deletions(-) diff --git a/apps/roster/src/test/room_test.erl b/apps/roster/src/test/room_test.erl index 0ae7efa41..6b760c596 100644 --- a/apps/roster/src/test/room_test.erl +++ b/apps/roster/src/test/room_test.erl @@ -9,6 +9,7 @@ link/0, test_joinlink/0 ]). +-define(BLANK_LINK, <<"UNDEFINED">>). check_alias_increment() -> %% check alias on group create and member update @@ -123,10 +124,13 @@ link() -> #'Room'{status = add, unread = U} = roster_client:send_receive(AClientId, Counter + 1, #'Room'{status = add, id = RoomID, admins = [EM]}), true = is_integer(U), -%% Create link - #'Link'{status = update, name = <>} = - roster_client:send_receive(AClientId, #'Link'{status = update, type=group, entity_id = RoomID, name = []}), - #'Room'{links=L, readers = [_|_]} = roster_client:send_receive(AClientId, #'Room'{id = RoomID, status = get}), +%% Get the room link by RoomId + {ok, #'Room'{links = LinkId}} = kvs:get('Room', Room), +%% Assert linkId by Link get request + #'Room'{links=LinkId, readers = [_|_]} = roster_client:send_receive(AClientId, 1, #'Link'{type = group, status = get, name = LinkId}), +%% Update the link from the administrator and compare it with the old one. + #'Room'{links = LinkId} =/= + roster_client:send_receive(AClientId, 1, #'Link'{type = group, status = update, name = LinkId, entity_id = Room}), %%add member with message size roster:purge_user(FPhone = <<"6789000">>), @@ -163,7 +167,6 @@ reg_by_phone(Phones, #'muc'{} = Feed) -> {PhoneId, ClientId, #'Member'{presence = online, feed_id = Feed, phone_id = PhoneId, status = Aff}, Token} end || {Phone, Aff} <- Phones]. --define(BLANK_LINK, <<"UNDEFINED">>). test_joinlink() -> RoomName = RoomId = <<"test_room_joinlink">>, @@ -181,58 +184,42 @@ test_joinlink() -> RoomInit = #'Room'{status = create, type = group, id = RoomId, name = RoomName, admins = [Owner#'Member'{alias = <<"Radostin">>}], members = [hd(Members)]}, #'Room'{id = RoomId,links = LinkId, - admins = [RoomOwner = #'Member'{phone_id = APhoneId}], + admins = [_RoomOwner = #'Member'{phone_id = APhoneId}], members = [#'Member'{phone_id = BPhoneId}]} = roster_client:send_receive(AClientId, GroupACounter, RoomInit), %% Test: get room info with fake room link - roster_link:io_error_code(room_not_found) == test_get(?BLANK_LINK, BClientId), + roster_link:io_error_code(room_not_found) == +roster_client:send_receive(BClientId, 1, #'Link'{type = group, status = get, name = ?BLANK_LINK}), %% Test: get room info with correct room link - kvs:get('Room', RoomId) == #ok{code = test_get(LinkId,BClientId)}, + kvs:get('Room', RoomId) == #ok{code = roster_client:send_receive(BClientId, 1, #'Link'{type = group, status = get,name = LinkId})}, GroupBMembers = [{<<"9000000003">>, member}, {<<"9000000004">>, member}], - GroupBCounter = length(GroupBMembers), - [{CPhoneId, CClientId, CMember, _}, {DPhoneId, DClientId, _, _}] = - GroupBPCs = reg_by_phone(GroupBMembers, Feed), +% GroupBCounter = length(GroupBMembers), + [{CPhoneId, CClientId, _, _}, {_, DClientId, _, _}] = + _GroupBPCs = reg_by_phone(GroupBMembers, Feed), %% Test: join room - #'Room'{members = Room2Members} = test_join(LinkId, CClientId), + #'Room'{members = Room2Members} = roster_client:send_receive(CClientId, 1, #'Link'{type = group, status = join, name = LinkId}), true == lists:keymember(CPhoneId, #'Member'.phone_id, Room2Members), %% Test: update old link and try to join with new one - #'Link'{name = LinkId1} = test_update(LinkId,RoomId,AClientId), - test_join(LinkId1, DClientId), -%% Test: Delete joinlink + #'Link'{name = LinkId1} = roster_client:send_receive(AClientId, 1, #'Link'{ entity_id = RoomId ,type = group, status = update, name = LinkId}), + roster_client:send_receive(DClientId, 1, #'Link'{type = group, status = join, name = LinkId1}), +%%% Test: Delete joinlink %% Non admin user - roster_link:io_error_code(invalid_data) == test_delete([], RoomId, DClientId), + roster_link:io_error_code(invalid_data) == roster_client:send_receive(DClientId, 1, #'Link'{ entity_id = RoomId,type = group, status = delete, name = []}), %% Admin user, unavailable link - roster_link:io_error_code(invalid_data) == test_delete(LinkId, RoomId, AClientId), + roster_link:io_error_code(invalid_data) == +roster_client:send_receive(AClientId, 1, #'Link'{ entity_id = RoomId,type = group, status = delete, name = LinkId}), %% All valid, successful deletion - #'Link'{ entity_id = RoomId, name = [], status = delete} = test_delete(LinkId1, RoomId, AClientId), + #'Link'{ entity_id = RoomId, name = [], status = delete} = +roster_client:send_receive(AClientId, 1, #'Link'{ entity_id = RoomId,type = group, status = delete, name = LinkId1}), %% Test join: unexisting link [{_, EClientId, _, _}] = reg_by_phone([{<<"9000000005">>, member}], #muc{}), -roster_link:io_error_code(room_not_found) == test_join(LinkId1, EClientId), +roster_link:io_error_code(room_not_found) == roster_client:send_receive(EClientId, 1, #'Link'{type = group, status = join, name = LinkId1}), +%% Disconnect users +[ roster_client:stop_client(CId) || CId <- GroupAClientIds ++ [CClientId,DClientId,EClientId]], ok. -test_join(LinkId, ClientId) -> - Link = #'Link'{type = group, - status = join, name = LinkId}, -roster_client:send_receive(ClientId, 1, Link). - -test_get(LinkId, ClientId) -> - Link = #'Link'{type = group, - status = get,name = LinkId}, -roster_client:send_receive(ClientId, 1, Link). - -test_update(LinkId, RoomId, ClientId) -> - Link = #'Link'{ entity_id = RoomId,type = group, - status = update, name = LinkId}, -roster_client:send_receive(ClientId, 1, Link). - -test_delete(LinkId, RoomId, ClientId) -> - Link = #'Link'{ entity_id = RoomId,type = group, - status = delete, name = LinkId}, -roster_client:send_receive(ClientId, 1, Link). - - suite() -> [ check_alias_increment(), -- GitLab From fd10f9fd376e071c1e97f0f622376dd3f05aa35f Mon Sep 17 00:00:00 2001 From: "radostin.dimitrov" Date: Wed, 17 Apr 2019 12:17:22 +0300 Subject: [PATCH 2/2] Fixed file formatting --- apps/roster/src/test/room_test.erl | 288 ++++++++++++++--------------- 1 file changed, 144 insertions(+), 144 deletions(-) diff --git a/apps/roster/src/test/room_test.erl b/apps/roster/src/test/room_test.erl index 6b760c596..7d8cd7db1 100644 --- a/apps/roster/src/test/room_test.erl +++ b/apps/roster/src/test/room_test.erl @@ -3,157 +3,157 @@ -include_lib("roster/include/static/roster_var.hrl"). -export([ - check/0, - check_alias_increment/0, - add_many_members/0, - link/0, - test_joinlink/0 + check/0, + check_alias_increment/0, + add_many_members/0, + link/0, + test_joinlink/0 ]). -define(BLANK_LINK, <<"UNDEFINED">>). check_alias_increment() -> %% check alias on group create and member update %% create a room with 2+ members. set the same alias. check is it incremented - TestClients = [ - {_, ClientId1, _}, - {_, ClientId2, _}, - {_, ClientId3, _} - ] = [auth_test:fake_sign_up() || _ <- lists:seq(0,2)], - [roster_client:start_cli_receive(ClientId, SessionToken) || {_, ClientId, SessionToken} <- TestClients], - TestAlias = "TestAlias", - RoomId = iolist_to_binary([<<"BETestRoom">>, nitro:to_binary(roster:now_msec())]), + TestClients = [ + {_, ClientId1, _}, + {_, ClientId2, _}, + {_, ClientId3, _} + ] = [auth_test:fake_sign_up() || _ <- lists:seq(0, 2)], + [roster_client:start_cli_receive(ClientId, SessionToken) || {_, ClientId, SessionToken} <- TestClients], + TestAlias = "TestAlias", + RoomId = iolist_to_binary([<<"BETestRoom">>, nitro:to_binary(roster:now_msec())]), %% create room with same aliases for all people inside - #'Room'{status = create, type = group, id = RoomId, - admins = [#'Member'{status = admin, alias = TestAlias, id = Adm}], - members = [#'Member'{status = member, alias = TestAlias, id = Mem1}, #'Member'{status = member, alias = TestAlias, id = Mem2}]} = - roster_client:send_receive(ClientId1, length(TestClients), - #'Room'{id = RoomId, - status = create, type = group, name = RoomId, - admins = [#'Member'{alias = TestAlias, phone_id = roster:phone_id(ClientId1), status = admin}], - members = [ - #'Member'{alias = TestAlias, phone_id = roster:phone_id(ClientId2), status = member}, - #'Member'{alias = TestAlias, phone_id = roster:phone_id(ClientId3), status = member}]}), + #'Room'{status = create, type = group, id = RoomId, + admins = [#'Member'{status = admin, alias = TestAlias, id = Adm}], + members = [#'Member'{status = member, alias = TestAlias, id = Mem1}, #'Member'{status = member, alias = TestAlias, id = Mem2}]} = + roster_client:send_receive(ClientId1, length(TestClients), + #'Room'{id = RoomId, + status = create, type = group, name = RoomId, + admins = [#'Member'{alias = TestAlias, phone_id = roster:phone_id(ClientId1), status = admin}], + members = [ + #'Member'{alias = TestAlias, phone_id = roster:phone_id(ClientId2), status = member}, + #'Member'{alias = TestAlias, phone_id = roster:phone_id(ClientId3), status = member}]}), %% update alias by one of member and the same alias for another one - TestAlias2 = "TestAlias2", - roster_client:send_receive(ClientId3, length(TestClients), #'Member'{id = Mem2, alias = TestAlias2, status = patch}), - roster_client:send_receive(ClientId1, length(TestClients), #'Member'{id = Adm, alias = TestAlias2, status = patch}), - #'Room'{id = RoomId, type = group, status = get, admins = [#'Member'{status = admin, alias = TestAlias2, id = Adm}], - members = [#'Member'{status = member, alias = TestAlias2, id = Mem2}, #'Member'{status = member, alias = TestAlias, id = Mem1}]} = - roster_client:send_receive(ClientId3, #'Room'{id = RoomId, status = get}), - [roster_client:stop_client(ClientId) || {_, ClientId, _} <- TestClients], - ok. + TestAlias2 = "TestAlias2", + roster_client:send_receive(ClientId3, length(TestClients), #'Member'{id = Mem2, alias = TestAlias2, status = patch}), + roster_client:send_receive(ClientId1, length(TestClients), #'Member'{id = Adm, alias = TestAlias2, status = patch}), + #'Room'{id = RoomId, type = group, status = get, admins = [#'Member'{status = admin, alias = TestAlias2, id = Adm}], + members = [#'Member'{status = member, alias = TestAlias2, id = Mem2}, #'Member'{status = member, alias = TestAlias, id = Mem1}]} = + roster_client:send_receive(ClientId3, #'Room'{id = RoomId, status = get}), + [roster_client:stop_client(ClientId) || {_, ClientId, _} <- TestClients], + ok. %% = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = to_member(List) -> to_member(List, member). to_member(List, Status) -> - lists:flatten([begin - [{PhoneId, FName, LName} | _] = roster:list_rosters(roster:phone(ClientId)), - #'Member'{phone_id = PhoneId, names = FName, surnames = LName, alias = <<>>, status = Status} - end || {_, ClientId, _} <- List]). + lists:flatten([begin + [{PhoneId, FName, LName} | _] = roster:list_rosters(roster:phone(ClientId)), + #'Member'{phone_id = PhoneId, names = FName, surnames = LName, alias = <<>>, status = Status} + end || {_, ClientId, _} <- List]). add_many_members() -> %% create group with 1 member %% add 10+ members to room - TestClients = [auth_test:fake_sign_up() || _ <- lists:seq(0, 15)], - [roster_client:start_cli_receive(ClientId, SessionToken) || {_, ClientId, SessionToken} <- TestClients], - RoomId = iolist_to_binary([<<"BETestRoom">>, nitro:to_binary(roster:now_msec())]), + TestClients = [auth_test:fake_sign_up() || _ <- lists:seq(0, 15)], + [roster_client:start_cli_receive(ClientId, SessionToken) || {_, ClientId, SessionToken} <- TestClients], + RoomId = iolist_to_binary([<<"BETestRoom">>, nitro:to_binary(roster:now_msec())]), %% choose admin member - {_, ClientId1, _} = lists:nth(1, TestClients), - - #'Room'{status = create, type = group, id = RoomId, admins = [#'Member'{status = admin}], members = [#'Member'{status = member}]} = - roster_client:send_receive(ClientId1, 2, - #'Room'{id = RoomId, - status = create, type = group, name = RoomId, - admins = to_member([lists:nth(1, TestClients)], admin), - members = to_member([lists:nth(2, TestClients)])}), - - #'Room'{status = add, type = group, id = RoomId, admins = [#'Member'{status = admin}], members = Members} = - roster_client:send_receive(ClientId1, 2, - #'Room'{id = RoomId, - status = add, type = group, - members = to_member(lists:nthtail(2, TestClients)) }), + {_, ClientId1, _} = lists:nth(1, TestClients), + + #'Room'{status = create, type = group, id = RoomId, admins = [#'Member'{status = admin}], members = [#'Member'{status = member}]} = + roster_client:send_receive(ClientId1, 2, + #'Room'{id = RoomId, + status = create, type = group, name = RoomId, + admins = to_member([lists:nth(1, TestClients)], admin), + members = to_member([lists:nth(2, TestClients)])}), + + #'Room'{status = add, type = group, id = RoomId, admins = [#'Member'{status = admin}], members = Members} = + roster_client:send_receive(ClientId1, 2, + #'Room'{id = RoomId, + status = add, type = group, + members = to_member(lists:nthtail(2, TestClients))}), %% check what all members aliases is equal to their first name - [ReceivedAlias == SentFName || {#'Member'{alias = ReceivedAlias}, #'Member'{names = SentFName}} <- lists:zip(Members, to_member(lists:nthtail(2, TestClients)))], - [roster_client:stop_client(ClientId) || {_, ClientId, _} <- TestClients], - ok. + [ReceivedAlias == SentFName || {#'Member'{alias = ReceivedAlias}, #'Member'{names = SentFName}} <- lists:zip(Members, to_member(lists:nthtail(2, TestClients)))], + [roster_client:stop_client(ClientId) || {_, ClientId, _} <- TestClients], + ok. link() -> - RoomName = Room = <<"test_room_link">>, - Phones = [{APhone = <<"1">>, admin}, {BPhone = <<"2">>, admin}, {<<"3">>, member}, {<<"4">>, member}], + RoomName = Room = <<"test_room_link">>, + Phones = [{APhone = <<"1">>, admin}, {BPhone = <<"2">>, admin}, {<<"3">>, member}, {<<"4">>, member}], %% Room2 = get_room_id(APhone, RoomName), - Counter = length(Phones), - roster:purge_room(RoomName), - Feed = #muc{name = Room}, - PCs = [{_, AClientId, _, _} | [{BPhoneId, BClientId, _, _}, - {CPhoneId, _, CM, _}, {DPhoneId, _, _, _}] = _] = - [begin roster:purge_user(Phone), - {ClientId, Token} = roster_client:reg_fake_user(Phone), - roster_client:start_cli_receive(ClientId, Token), - [PhoneId] = roster_client:rosters(ClientId, Phone), - {PhoneId, ClientId, #'Member'{presence = online, feed_id = Feed, phone_id = PhoneId, status = Aff}, Token} - end || {Phone, Aff} <- Phones], %% create and connect fake users - ClientIds = [ClientId || {_, ClientId, _, _} <- PCs], - roster_client:set_filer(ClientIds, filter), - {_ = [Owner | [BAdmin] = _], Members} = roster:split_members([M || {_, _, M, _} <- PCs]), - #'Room'{status = create, id = RoomID, last_msg = #'Message'{type = [sys]}, - admins = [#'Member'{status = admin, alias = <<"Jared">>}, #'Member'{status = admin, alias = <<"Jared">>}], - members = [#'Member'{status = member}, #'Member'{status = member}], type = group} = - roster_client:send_receive(AClientId, Counter, #'Room'{status = create, type = group, %% create room with 4 members - id = RoomName, name = RoomName, admins = [Owner#'Member'{alias = <<"Jared">>}, - BAdmin#'Member'{alias = <<"Jared">>}], members = Members}), - #'Room'{unread = 1} = roster:room(roster:roster_id(CPhoneId), RoomID), + Counter = length(Phones), + roster:purge_room(RoomName), + Feed = #muc{name = Room}, + PCs = [{_, AClientId, _, _} | [{BPhoneId, BClientId, _, _}, + {CPhoneId, _, CM, _}, {DPhoneId, _, _, _}] = _] = + [begin roster:purge_user(Phone), + {ClientId, Token} = roster_client:reg_fake_user(Phone), + roster_client:start_cli_receive(ClientId, Token), + [PhoneId] = roster_client:rosters(ClientId, Phone), + {PhoneId, ClientId, #'Member'{presence = online, feed_id = Feed, phone_id = PhoneId, status = Aff}, Token} + end || {Phone, Aff} <- Phones], %% create and connect fake users + ClientIds = [ClientId || {_, ClientId, _, _} <- PCs], + roster_client:set_filer(ClientIds, filter), + {_ = [Owner | [BAdmin] = _], Members} = roster:split_members([M || {_, _, M, _} <- PCs]), + #'Room'{status = create, id = RoomID, last_msg = #'Message'{type = [sys]}, + admins = [#'Member'{status = admin, alias = <<"Jared">>}, #'Member'{status = admin, alias = <<"Jared">>}], + members = [#'Member'{status = member}, #'Member'{status = member}], type = group} = + roster_client:send_receive(AClientId, Counter, #'Room'{status = create, type = group, %% create room with 4 members + id = RoomName, name = RoomName, admins = [Owner#'Member'{alias = <<"Jared">>}, + BAdmin#'Member'{alias = <<"Jared">>}], members = Members}), + #'Room'{unread = 1} = roster:room(roster:roster_id(CPhoneId), RoomID), %% Add messages - roster_client:send_receive(BClientId, Counter, - #'Message'{feed_id = #muc{name = Room}, from = BPhoneId, to = Room, - files = [#'Desc'{id = <<"90909">>, payload = <<"Some Text">>}], status = []}), - roster_client:send_receive(BClientId, Counter, - #'Message'{feed_id = #muc{name = Room}, from = BPhoneId, to = Room, - files = [#'Desc'{id = <<"90910">>, payload = <<"Some Text 2">>}], status = []}), - - #'Room'{unread = 2} = roster:room(roster:roster_id(APhone), RoomID), - #'Room'{unread = 3} = roster:room(roster:roster_id(CPhoneId), RoomID), - - #'Room'{status = add, id = RoomID} - = roster_client:send_receive(AClientId, Counter, #'Room'{status = add, id = RoomID, admins = [CM#'Member'{status = admin}]}), - - roster:purge_user(EPhone = <<"5">>), - {EClientId, EToken} = roster_client:reg_fake_user(EPhone), - roster_client:start_cli_receive(EClientId, EToken), - EM = #'Member'{presence = online, feed_id = Feed, phone_id = EPhoneId = roster:phone_id(EPhone), status = member}, - #'Room'{status = add, unread = U} = - roster_client:send_receive(AClientId, Counter + 1, #'Room'{status = add, id = RoomID, admins = [EM]}), - true = is_integer(U), + roster_client:send_receive(BClientId, Counter, + #'Message'{feed_id = #muc{name = Room}, from = BPhoneId, to = Room, + files = [#'Desc'{id = <<"90909">>, payload = <<"Some Text">>}], status = []}), + roster_client:send_receive(BClientId, Counter, + #'Message'{feed_id = #muc{name = Room}, from = BPhoneId, to = Room, + files = [#'Desc'{id = <<"90910">>, payload = <<"Some Text 2">>}], status = []}), + + #'Room'{unread = 2} = roster:room(roster:roster_id(APhone), RoomID), + #'Room'{unread = 3} = roster:room(roster:roster_id(CPhoneId), RoomID), + + #'Room'{status = add, id = RoomID} + = roster_client:send_receive(AClientId, Counter, #'Room'{status = add, id = RoomID, admins = [CM#'Member'{status = admin}]}), + + roster:purge_user(EPhone = <<"5">>), + {EClientId, EToken} = roster_client:reg_fake_user(EPhone), + roster_client:start_cli_receive(EClientId, EToken), + EM = #'Member'{presence = online, feed_id = Feed, phone_id = EPhoneId = roster:phone_id(EPhone), status = member}, + #'Room'{status = add, unread = U} = + roster_client:send_receive(AClientId, Counter + 1, #'Room'{status = add, id = RoomID, admins = [EM]}), + true = is_integer(U), %% Get the room link by RoomId - {ok, #'Room'{links = LinkId}} = kvs:get('Room', Room), + {ok, #'Room'{links = LinkId}} = kvs:get('Room', Room), %% Assert linkId by Link get request - #'Room'{links=LinkId, readers = [_|_]} = roster_client:send_receive(AClientId, 1, #'Link'{type = group, status = get, name = LinkId}), + #'Room'{links = LinkId, readers = [_ | _]} = roster_client:send_receive(AClientId, 1, #'Link'{type = group, status = get, name = LinkId}), %% Update the link from the administrator and compare it with the old one. - #'Room'{links = LinkId} =/= + #'Room'{links = LinkId} =/= roster_client:send_receive(AClientId, 1, #'Link'{type = group, status = update, name = LinkId, entity_id = Room}), %%add member with message size - roster:purge_user(FPhone = <<"6789000">>), - {FClientId, FToken} = roster_client:reg_fake_user(FPhone), - roster_client:start_cli_receive(FClientId, FToken), - FM = #'Member'{presence = online, feed_id = Feed, phone_id = FPhoneId = roster:phone_id(FPhone), status = member}, - SIZE = 2, - #'Room'{status = add, last_msg = #'Message'{id = MesID}} = roster_client:send_receive(AClientId, Counter + 2, - #'Room'{status = add, id = RoomID, admins = [FM], readers = [SIZE]}), - #'History'{data = Msgs} = roster_client:send_receive(FClientId, - #'History'{feed = #muc{name = RoomID}, roster_id = FPhoneId, entity_id = MesID, size = -30, status = get}), - true = length(Msgs) == SIZE + 1, - %% Send message from user F - #'Message'{id = MesID2} = roster_client:send_receive(FClientId, Counter + 2, #'Message'{feed_id = #muc{name = Room}, from = FPhoneId, to = Room, - files = [#'Desc'{id = <<"9as120">>, payload = <<"Some Text From F user">>}], status = []}), - #'Room'{readers = [_|_]} = roster_client:send_receive(FClientId, #'Room'{id = RoomID, status = get}), - - #'Room'{status = leave, members = [], admins = [#'Member'{feed_id = Feed, phone_id = BPhoneId, status = admin}]} = - roster_client:send_receive(BClientId, 1, #'Room'{status = leave, id = Room}), - - [roster_client:stop_client(element(2, Ph)) || Ph <- PCs], - roster_client:stop_client(FClientId), roster_client:stop_client(EClientId), - ok. + roster:purge_user(FPhone = <<"6789000">>), + {FClientId, FToken} = roster_client:reg_fake_user(FPhone), + roster_client:start_cli_receive(FClientId, FToken), + FM = #'Member'{presence = online, feed_id = Feed, phone_id = FPhoneId = roster:phone_id(FPhone), status = member}, + SIZE = 2, + #'Room'{status = add, last_msg = #'Message'{id = MesID}} = roster_client:send_receive(AClientId, Counter + 2, + #'Room'{status = add, id = RoomID, admins = [FM], readers = [SIZE]}), + #'History'{data = Msgs} = roster_client:send_receive(FClientId, + #'History'{feed = #muc{name = RoomID}, roster_id = FPhoneId, entity_id = MesID, size = -30, status = get}), + true = length(Msgs) == SIZE + 1, + %% Send message from user F + #'Message'{id = MesID2} = roster_client:send_receive(FClientId, Counter + 2, #'Message'{feed_id = #muc{name = Room}, from = FPhoneId, to = Room, + files = [#'Desc'{id = <<"9as120">>, payload = <<"Some Text From F user">>}], status = []}), + #'Room'{readers = [_ | _]} = roster_client:send_receive(FClientId, #'Room'{id = RoomID, status = get}), + + #'Room'{status = leave, members = [], admins = [#'Member'{feed_id = Feed, phone_id = BPhoneId, status = admin}]} = + roster_client:send_receive(BClientId, 1, #'Room'{status = leave, id = Room}), + + [roster_client:stop_client(element(2, Ph)) || Ph <- PCs], + roster_client:stop_client(FClientId), roster_client:stop_client(EClientId), + ok. %% = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = @@ -174,7 +174,7 @@ test_joinlink() -> Feed = #muc{name = RoomId}, GroupAMembers = [{_APhone = <<"9000000001">>, admin}, - {_BPhone = <<"9000000002">>, member}], + {_BPhone = <<"9000000002">>, member}], GroupACounter = length(GroupAMembers), [{APhoneId, AClientId, _, _}, {BPhoneId, BClientId, _, _}] = GroupAPCs = reg_by_phone(GroupAMembers, Feed), @@ -183,47 +183,47 @@ test_joinlink() -> {[Owner | _], Members} = roster:split_members([M || {_, _, M, _} <- GroupAPCs]), RoomInit = #'Room'{status = create, type = group, id = RoomId, name = RoomName, admins = [Owner#'Member'{alias = <<"Radostin">>}], members = [hd(Members)]}, - #'Room'{id = RoomId,links = LinkId, - admins = [_RoomOwner = #'Member'{phone_id = APhoneId}], + #'Room'{id = RoomId, links = LinkId, + admins = [_RoomOwner = #'Member'{phone_id = APhoneId}], members = [#'Member'{phone_id = BPhoneId}]} = - roster_client:send_receive(AClientId, GroupACounter, RoomInit), + roster_client:send_receive(AClientId, GroupACounter, RoomInit), %% Test: get room info with fake room link - roster_link:io_error_code(room_not_found) == -roster_client:send_receive(BClientId, 1, #'Link'{type = group, status = get, name = ?BLANK_LINK}), + roster_link:io_error_code(room_not_found) == + roster_client:send_receive(BClientId, 1, #'Link'{type = group, status = get, name = ?BLANK_LINK}), %% Test: get room info with correct room link - kvs:get('Room', RoomId) == #ok{code = roster_client:send_receive(BClientId, 1, #'Link'{type = group, status = get,name = LinkId})}, + kvs:get('Room', RoomId) == #ok{code = roster_client:send_receive(BClientId, 1, #'Link'{type = group, status = get, name = LinkId})}, GroupBMembers = [{<<"9000000003">>, member}, {<<"9000000004">>, member}], % GroupBCounter = length(GroupBMembers), [{CPhoneId, CClientId, _, _}, {_, DClientId, _, _}] = _GroupBPCs = reg_by_phone(GroupBMembers, Feed), %% Test: join room - #'Room'{members = Room2Members} = roster_client:send_receive(CClientId, 1, #'Link'{type = group, status = join, name = LinkId}), - true == lists:keymember(CPhoneId, #'Member'.phone_id, Room2Members), + #'Room'{members = Room2Members} = roster_client:send_receive(CClientId, 1, #'Link'{type = group, status = join, name = LinkId}), + true == lists:keymember(CPhoneId, #'Member'.phone_id, Room2Members), %% Test: update old link and try to join with new one - #'Link'{name = LinkId1} = roster_client:send_receive(AClientId, 1, #'Link'{ entity_id = RoomId ,type = group, status = update, name = LinkId}), + #'Link'{name = LinkId1} = roster_client:send_receive(AClientId, 1, #'Link'{entity_id = RoomId, type = group, status = update, name = LinkId}), roster_client:send_receive(DClientId, 1, #'Link'{type = group, status = join, name = LinkId1}), %%% Test: Delete joinlink %% Non admin user - roster_link:io_error_code(invalid_data) == roster_client:send_receive(DClientId, 1, #'Link'{ entity_id = RoomId,type = group, status = delete, name = []}), + roster_link:io_error_code(invalid_data) == roster_client:send_receive(DClientId, 1, #'Link'{entity_id = RoomId, type = group, status = delete, name = []}), %% Admin user, unavailable link - roster_link:io_error_code(invalid_data) == -roster_client:send_receive(AClientId, 1, #'Link'{ entity_id = RoomId,type = group, status = delete, name = LinkId}), + roster_link:io_error_code(invalid_data) == + roster_client:send_receive(AClientId, 1, #'Link'{entity_id = RoomId, type = group, status = delete, name = LinkId}), %% All valid, successful deletion - #'Link'{ entity_id = RoomId, name = [], status = delete} = -roster_client:send_receive(AClientId, 1, #'Link'{ entity_id = RoomId,type = group, status = delete, name = LinkId1}), + #'Link'{entity_id = RoomId, name = [], status = delete} = + roster_client:send_receive(AClientId, 1, #'Link'{entity_id = RoomId, type = group, status = delete, name = LinkId1}), %% Test join: unexisting link [{_, EClientId, _, _}] = reg_by_phone([{<<"9000000005">>, member}], #muc{}), -roster_link:io_error_code(room_not_found) == roster_client:send_receive(EClientId, 1, #'Link'{type = group, status = join, name = LinkId1}), + roster_link:io_error_code(room_not_found) == roster_client:send_receive(EClientId, 1, #'Link'{type = group, status = join, name = LinkId1}), %% Disconnect users -[ roster_client:stop_client(CId) || CId <- GroupAClientIds ++ [CClientId,DClientId,EClientId]], -ok. + [roster_client:stop_client(CId) || CId <- GroupAClientIds ++ [CClientId, DClientId, EClientId]], + ok. suite() -> - [ - check_alias_increment(), - add_many_members() - ]. + [ + check_alias_increment(), + add_many_members() + ]. check() -> roster:check(?MODULE). \ No newline at end of file -- GitLab