Skip to content

Commit 724b9d9

Browse files
committed
test: Add conference_send_message test.
1 parent 76a1a6a commit 724b9d9

File tree

3 files changed

+97
-6
lines changed

3 files changed

+97
-6
lines changed

Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,4 +44,4 @@ COPY test /build/test
4444
RUN . /path/to/venv/bin/activate \
4545
&& coverage run -m unittest discover -v -p "*_test.py"
4646
RUN . /path/to/venv/bin/activate \
47-
&& coverage report -m
47+
&& coverage report -m --fail-under=65

test/BUILD.bazel

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ TESTS = glob(["**/*.py"])
77
name = src[:-3],
88
size = "small",
99
srcs = [src],
10+
args = ["-v"],
1011
tags = ["no-cross"],
1112
deps = ["//py_toxcore_c:pytox"],
1213
) for src in TESTS]

test/auto_tests/auto_test.py

Lines changed: 95 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ def __init__(self, index: int) -> None:
5252
self.index = index
5353
self.friends = collections.defaultdict(FriendInfo)
5454
self.conferences = collections.defaultdict(ConferenceInfo)
55+
self.name = f"tox{index}".encode("utf-8")
5556

5657
def handle_self_connection_status(self,
5758
connection_status: core.Tox_Connection
@@ -271,11 +272,11 @@ def test_name(self) -> None:
271272
self._wait_for_friend_online()
272273
friend_number = self.tox2.friend_by_public_key(self.tox1.public_key)
273274
friend = self.tox2.friends[friend_number]
274-
self.assertEqual(self.tox1.name, b"")
275+
self.assertEqual(self.tox1.name, b"tox1")
275276
self.tox1.name = b"Now that's a name I haven't heard in a long time"
276277
self.assertEqual(self.tox1.name,
277278
b"Now that's a name I haven't heard in a long time")
278-
self._iterate(100, lambda: friend.name == b"")
279+
self._iterate(100, lambda: friend.name == b"tox1")
279280
self.assertEqual(friend.name,
280281
b"Now that's a name I haven't heard in a long time")
281282
self.assertEqual(
@@ -318,14 +319,103 @@ def test_read_receipt(self) -> None:
318319
def test_conference_invite(self) -> None:
319320
self._wait_for_friend_online()
320321
# tox1 creates conference.
321-
cnum = self.tox1.conference_new()
322-
self.assertListEqual(self.tox1.conference_chatlist, [cnum])
322+
cnum1 = self.tox1.conference_new()
323+
self.assertListEqual(self.tox1.conference_chatlist, [cnum1])
323324
# tox1 invites tox2 to conference.
324325
self.tox1.conference_invite(
325-
self.tox1.friend_by_public_key(self.tox2.public_key), cnum)
326+
self.tox1.friend_by_public_key(self.tox2.public_key), cnum1)
326327
# wait for tox2 to join conference.
327328
self._iterate(100, lambda: not self.tox2.conference_chatlist)
328329
self.assertEqual(len(self.tox2.conference_chatlist), 1)
330+
# wait for group connection.
331+
cnum2 = self.tox2.conference_chatlist[0]
332+
self._iterate(100, lambda: not self.tox2.conferences[cnum2].connected)
333+
# tox2 invites tox3 to conference.
334+
self.tox2.conference_invite(
335+
self.tox2.friend_by_public_key(self.tox3.public_key), cnum2)
336+
# wait for tox3 to join conference.
337+
self._iterate(100, lambda: not self.tox3.conference_chatlist)
338+
self.assertEqual(len(self.tox3.conference_chatlist), 1)
339+
# test conference_by_id.
340+
self.assertEqual(
341+
self.tox1.conference_by_id(self.tox1.conference_get_id(cnum1)),
342+
cnum1)
343+
self.assertEqual(self.tox1.conference_get_type(cnum1),
344+
core.TOX_CONFERENCE_TYPE_TEXT)
345+
346+
def test_conference_message(self) -> None:
347+
self._wait_for_friend_online()
348+
cnum1 = self.tox1.conference_chatlist[0]
349+
cnum2 = self.tox2.conference_chatlist[0]
350+
cnum3 = self.tox3.conference_chatlist[0]
351+
# wait for all toxes to see all 3 peers.
352+
self._iterate(
353+
100,
354+
lambda: any(
355+
len(tox.conferences[tox.conference_chatlist[0]].peers) < 2
356+
for tox in (self.tox1, self.tox2, self.tox3)),
357+
)
358+
# wait for group connection.
359+
self._iterate(100, lambda: not self.tox2.conferences[cnum2].connected)
360+
# check that none of the toxes have messages, yet.
361+
self.assertFalse(self.tox1.conferences[cnum1].messages)
362+
self.assertFalse(self.tox2.conferences[cnum2].messages)
363+
self.assertFalse(self.tox3.conferences[cnum3].messages)
364+
# tox2 sends message to conference.
365+
self.tox2.conference_send_message(cnum2, core.TOX_MESSAGE_TYPE_NORMAL,
366+
b"hello there!")
367+
# wait for toxes to receive message.
368+
self._iterate(
369+
100,
370+
lambda: any(not tox.conferences[tox.conference_chatlist[0]].
371+
messages for tox in (self.tox1, self.tox2, self.tox3)),
372+
)
373+
# check message contents.
374+
self.assertEqual(
375+
self.tox1.conferences[cnum1].messages[0],
376+
(1, core.TOX_MESSAGE_TYPE_NORMAL, b"hello there!"),
377+
)
378+
self.assertEqual(
379+
self.tox2.conferences[cnum2].messages[0],
380+
(1, core.TOX_MESSAGE_TYPE_NORMAL, b"hello there!"),
381+
)
382+
self.assertEqual(
383+
self.tox3.conferences[cnum3].messages[0],
384+
(1, core.TOX_MESSAGE_TYPE_NORMAL, b"hello there!"),
385+
)
386+
387+
def test_conference_peer_name(self) -> None:
388+
self._wait_for_friend_online()
389+
cnum1 = self.tox1.conference_chatlist[0]
390+
cnum2 = self.tox2.conference_chatlist[0]
391+
cnum3 = self.tox3.conference_chatlist[0]
392+
# check peer names.
393+
self.assertEqual(self.tox1.conferences[cnum1].peers[1].name, b"tox2")
394+
self.assertEqual(self.tox2.conferences[cnum2].peers[1].name, b"tox2")
395+
self.assertEqual(self.tox2.conferences[cnum2].peers[2].name, b"tox3")
396+
self.assertEqual(self.tox3.conferences[cnum3].peers[1].name, b"tox2")
397+
398+
def test_conference_title(self) -> None:
399+
self._wait_for_friend_online()
400+
cnum1 = self.tox1.conference_chatlist[0]
401+
cnum2 = self.tox2.conference_chatlist[0]
402+
cnum3 = self.tox3.conference_chatlist[0]
403+
# check title isn't set yet.
404+
self.assertEqual(self.tox1.conferences[cnum1].title, (0, b""))
405+
self.assertEqual(self.tox2.conferences[cnum2].title, (0, b""))
406+
self.assertEqual(self.tox3.conferences[cnum3].title, (0, b""))
407+
# tox2 sets title.
408+
self.tox2.conference_set_title(cnum1, b"TokTok dev chat")
409+
# wait for title to be set for tox1 and tox3.
410+
self._iterate(
411+
100,
412+
lambda: any(tox.conferences[tox.conference_chatlist[0]].title[1] ==
413+
b"" for tox in (self.tox1, self.tox3)),
414+
)
415+
self.assertEqual(self.tox1.conferences[cnum2].title,
416+
(1, b"TokTok dev chat"))
417+
self.assertEqual(self.tox3.conferences[cnum3].title,
418+
(1, b"TokTok dev chat"))
329419

330420

331421
if __name__ == "__main__":

0 commit comments

Comments
 (0)