delete contact + chat after responding to request
This commit is contained in:
parent
da9d5cf6ee
commit
a8c1d1776f
|
|
@ -1,5 +1,5 @@
|
|||
#!/usr/bin/env python3
|
||||
from deltachat_rpc_client import events, run_bot_cli
|
||||
from deltachat_rpc_client import events, run_bot_cli, EventType, Message
|
||||
|
||||
from keyserver_bot.wkd import request_from_wkd
|
||||
from keyserver_bot.koo import request_from_koo
|
||||
|
|
@ -11,12 +11,16 @@ hooks = events.HookCollection()
|
|||
@hooks.on(events.RawEvent)
|
||||
def log_event(event):
|
||||
print(event)
|
||||
if event.kind == EventType.MSG_DELIVERED or event.kind == EventType.MSG_FAILED:
|
||||
msg = Message(event.account, event.msg_id).get_snapshot()
|
||||
delete_data(msg)
|
||||
|
||||
|
||||
@hooks.on(events.NewMessage)
|
||||
def echo(event):
|
||||
snapshot = event.message_snapshot
|
||||
email = snapshot.text
|
||||
# TODO: validate email RFC
|
||||
public_key = request_key_by_email(email)
|
||||
if not public_key:
|
||||
snapshot.chat.send_text("Sorry, I could not find a key for this user.")
|
||||
|
|
@ -28,6 +32,13 @@ def echo(event):
|
|||
snapshot.chat.send_file(vcard_path)
|
||||
|
||||
|
||||
def delete_data(msg):
|
||||
contacts = msg.chat.get_contacts()
|
||||
msg.chat.delete()
|
||||
for member in contacts:
|
||||
member.delete()
|
||||
|
||||
|
||||
def request_key_by_email(email) -> str:
|
||||
domain = email.split("@")[1]
|
||||
public_key = request_from_wkd(email, domain)
|
||||
|
|
@ -39,6 +50,7 @@ def request_key_by_email(email) -> str:
|
|||
|
||||
|
||||
def main():
|
||||
# TODO: print invite link
|
||||
run_bot_cli(hooks)
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,9 @@
|
|||
import os
|
||||
|
||||
import pytest
|
||||
from keyserver_bot.hooks import request_key_by_email
|
||||
from keyserver_bot.hooks import request_key_by_email, delete_data
|
||||
from deltachat_rpc_client.pytestplugin import acfactory
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
("email", "public_key"),
|
||||
|
|
@ -11,3 +15,22 @@ from keyserver_bot.hooks import request_key_by_email
|
|||
)
|
||||
def test_request_by_email(email, public_key):
|
||||
assert public_key == request_key_by_email(email)
|
||||
|
||||
|
||||
def test_delete_data(acfactory):
|
||||
if not os.getenv("CHATMAIL_DOMAIN"):
|
||||
os.environ["CHATMAIL_DOMAIN"] = "nine.testrun.org"
|
||||
bot, user = acfactory.get_online_accounts(2) # waiter lock
|
||||
joincode = bot.get_qr_code()
|
||||
chat = user.secure_join(joincode)
|
||||
bot.wait_for_securejoin_inviter_success()
|
||||
|
||||
chat.send_text("hi :)")
|
||||
msg = bot.wait_for_incoming_msg()
|
||||
msg = msg.get_snapshot().chat.send_text("command not found :P")
|
||||
user.wait_for_incoming_msg()
|
||||
|
||||
assert len(bot.get_chatlist()) == 3
|
||||
delete_data(msg.get_snapshot())
|
||||
assert bot.get_contacts() == []
|
||||
assert len(bot.get_chatlist()) == 2
|
||||
|
|
|
|||
Loading…
Reference in a new issue