diff --git a/pyproject.toml b/pyproject.toml index 40f58d8..71fe0c9 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -45,7 +45,7 @@ addopts = "-v -ra --strict-markers" log_format = "%(asctime)s %(levelname)s %(message)s" log_date_format = "%Y-%m-%d %H:%M:%S" log_level = "INFO" -timeout = "20" +timeout = "60" env = [ "CHATMAIL_DOMAIN=nine.testrun.org", "DEBUG=true", diff --git a/src/group_editor_bot/hooks.py b/src/group_editor_bot/hooks.py index 89e23cf..2fbb066 100644 --- a/src/group_editor_bot/hooks.py +++ b/src/group_editor_bot/hooks.py @@ -92,6 +92,7 @@ def delete_data(chat: Chat): contacts = chat.get_contacts() chat.delete() for member in contacts: + member.create_chat().delete() member.delete() diff --git a/tests/conftest.py b/tests/conftest.py index 47c5baa..e6d015b 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -23,7 +23,7 @@ def group(acfactory, bot, log): creator.set_config("displayname", "Creator from groupedit test") log.step("Creator creates group") - creator_group = creator.create_group("test_member_added") + creator_group = creator.create_group("groupedit test") creator_invite = creator_group.get_qr_code() log.step("Bot joins group") diff --git a/tests/test_hooks.py b/tests/test_hooks.py index 1bf9e77..a2c0bb3 100644 --- a/tests/test_hooks.py +++ b/tests/test_hooks.py @@ -43,8 +43,41 @@ def test_member_added(bot, group, joiner, log): assert joiner_msg.get_snapshot().text == msg.get_snapshot().text -def test_bot_removed(acfactory): - pytest.skip("Not yet tested") +def test_bot_forgets_non_commands(bot, group, log): + log.step("Creator sends message to be forgotten immediately") + group.send_text("Sensitive message") + + log.step("Bot forgets message immediately") + msg = bot.account.wait_for_incoming_msg() + bot._process_messages() + assert msg not in group.bot_group.get_messages() + + +def test_bot_removed(bot, group, joiner, log): + log.step("Joiner adds Bot to extra group") + extra_group = joiner.create_group("groupedit test") + extra_invite = extra_group.get_qr_code() + + log.step("Bot joins extra group") + bot_extra_group = bot.account.secure_join(extra_invite) + bot.account.wait_for_securejoin_joiner_success() + bot.account.wait_for_incoming_msg() + extra_contacts = bot_extra_group.get_contacts() + + log.step("Creator removes Bot from group") + assert len(bot.account.get_chatlist()) == 2 + bot_contact = group.get_contacts()[0] + group.remove_contact(bot_contact) + + def contacts_removed(event): + if len(event.account.get_contacts()) == 1: + return True + + log.step("Bot gets removed") + bot.run_until(contacts_removed) + assert bot.account.get_contacts()[0] == extra_contacts[0] + assert len(bot.account.get_chatlist()) == 1 + assert bot_extra_group.get_full_snapshot().self_in_group def tests_bot_adds_member(bot, group, joiner, log):