mirror of
https://github.com/chatmail/core.git
synced 2026-04-17 21:46:35 +03:00
add a failing test that creates 4 accounts and a group chat with remove/add
see also #985
This commit is contained in:
@@ -85,16 +85,21 @@ class SessionLiveConfigFromFile:
|
|||||||
class SessionLiveConfigFromURL:
|
class SessionLiveConfigFromURL:
|
||||||
def __init__(self, url, create_token):
|
def __init__(self, url, create_token):
|
||||||
self.configlist = []
|
self.configlist = []
|
||||||
for i in range(2):
|
self.url = url
|
||||||
res = requests.post(url, json={"token_create_user": int(create_token)})
|
self.create_token = create_token
|
||||||
|
|
||||||
|
def get(self, index):
|
||||||
|
try:
|
||||||
|
return self.configlist[index]
|
||||||
|
except IndexError:
|
||||||
|
assert index == len(self.configlist), index
|
||||||
|
res = requests.post(self.url, json={"token_create_user": int(self.create_token)})
|
||||||
if res.status_code != 200:
|
if res.status_code != 200:
|
||||||
pytest.skip("creating newtmpuser failed {!r}".format(res))
|
pytest.skip("creating newtmpuser failed {!r}".format(res))
|
||||||
d = res.json()
|
d = res.json()
|
||||||
config = dict(addr=d["email"], mail_pw=d["password"])
|
config = dict(addr=d["email"], mail_pw=d["password"])
|
||||||
self.configlist.append(config)
|
self.configlist.append(config)
|
||||||
|
return config
|
||||||
def get(self, index):
|
|
||||||
return self.configlist[index]
|
|
||||||
|
|
||||||
def exists(self):
|
def exists(self):
|
||||||
return bool(self.configlist)
|
return bool(self.configlist)
|
||||||
|
|||||||
@@ -382,6 +382,22 @@ class TestOfflineChat:
|
|||||||
assert not res.is_ask_verifygroup()
|
assert not res.is_ask_verifygroup()
|
||||||
assert res.contact_id == 10
|
assert res.contact_id == 10
|
||||||
|
|
||||||
|
def test_group_chat_many_members_add_remove(self, ac1, lp):
|
||||||
|
lp.sec("ac1: creating group chat with 10 other members")
|
||||||
|
chat = ac1.create_group_chat(name="title1")
|
||||||
|
contacts = []
|
||||||
|
for i in range(10):
|
||||||
|
contact = ac1.create_contact("some{}@example.org".format(i))
|
||||||
|
contacts.append(contact)
|
||||||
|
chat.add_contact(contact)
|
||||||
|
|
||||||
|
num_contacts = len(chat.get_contacts())
|
||||||
|
assert num_contacts == 11
|
||||||
|
|
||||||
|
lp.sec("ac1: removing two contacts and checking things are right")
|
||||||
|
chat.remove_contact(contacts[9])
|
||||||
|
chat.remove_contact(contacts[3])
|
||||||
|
assert len(chat.get_contacts()) == 9
|
||||||
|
|
||||||
class TestOnlineAccount:
|
class TestOnlineAccount:
|
||||||
def get_chat(self, ac1, ac2, both_created=False):
|
def get_chat(self, ac1, ac2, both_created=False):
|
||||||
@@ -1057,6 +1073,48 @@ class TestOnlineAccount:
|
|||||||
assert not locations3
|
assert not locations3
|
||||||
|
|
||||||
|
|
||||||
|
class TestGroupStressTests:
|
||||||
|
def test_group_many_members_add_leave_remove(self, acfactory, lp):
|
||||||
|
lp.sec("creating and configuring five accounts")
|
||||||
|
ac1 = acfactory.get_online_configuring_account()
|
||||||
|
accounts = [acfactory.get_online_configuring_account() for i in range(3)]
|
||||||
|
wait_configuration_progress(ac1, 1000)
|
||||||
|
for acc in accounts:
|
||||||
|
wait_configuration_progress(acc, 1000)
|
||||||
|
|
||||||
|
lp.sec("ac1: creating group chat with 3 other members")
|
||||||
|
chat = ac1.create_group_chat("title1")
|
||||||
|
contacts = []
|
||||||
|
chars = list("äöüsr")
|
||||||
|
for acc in accounts:
|
||||||
|
contact = ac1.create_contact(acc.get_config("addr"), name=chars.pop())
|
||||||
|
contacts.append(contact)
|
||||||
|
chat.add_contact(contact)
|
||||||
|
# make sure the other side accepts our messages
|
||||||
|
c1 = acc.create_contact(ac1.get_config("addr"), "ä member")
|
||||||
|
acc.create_chat_by_contact(c1)
|
||||||
|
|
||||||
|
assert not chat.is_promoted()
|
||||||
|
|
||||||
|
lp.sec("ac1: send mesage to new group chat")
|
||||||
|
chat.send_text("hello")
|
||||||
|
assert chat.is_promoted()
|
||||||
|
|
||||||
|
num_contacts = len(chat.get_contacts())
|
||||||
|
assert num_contacts == 3 + 1
|
||||||
|
|
||||||
|
lp.sec("ac2: checking that the chat arrived correctly")
|
||||||
|
ac2 = accounts[0]
|
||||||
|
msg = ac2.wait_next_incoming_message()
|
||||||
|
assert msg.text == "hello"
|
||||||
|
print("chat is", msg.chat)
|
||||||
|
assert len(msg.chat.get_contacts()) == 4
|
||||||
|
|
||||||
|
lp.sec("ac1: removing one contacts and checking things are right")
|
||||||
|
msg.chat.remove_contact(msg.chat.get_contacts()[-1])
|
||||||
|
assert 0
|
||||||
|
|
||||||
|
|
||||||
class TestOnlineConfigureFails:
|
class TestOnlineConfigureFails:
|
||||||
def test_invalid_password(self, acfactory):
|
def test_invalid_password(self, acfactory):
|
||||||
ac1, configdict = acfactory.get_online_config()
|
ac1, configdict = acfactory.get_online_config()
|
||||||
|
|||||||
Reference in New Issue
Block a user