diff --git a/.gitignore b/.gitignore index 63fe6a58d3c6fd295595d6f82088fa983cf5edee..d63065fe6460c5661f699c8b9531ea02a3db3aad 100644 --- a/.gitignore +++ b/.gitignore @@ -31,4 +31,5 @@ slack.cfg localhost.port *.a core.* +*.pyc diff --git a/spectrum/src/tests/muc_change_topic.py b/spectrum/src/tests/muc_change_topic.py new file mode 100644 index 0000000000000000000000000000000000000000..e10d803c66c6cc8fe0c83a4a8a72352c3565c2d2 --- /dev/null +++ b/spectrum/src/tests/muc_change_topic.py @@ -0,0 +1,49 @@ +import optparse +import sys +import time +import subprocess +import os + +import sleekxmpp + + +class Responder(sleekxmpp.ClientXMPP): + def __init__(self, jid, password, room, nick): + sleekxmpp.ClientXMPP.__init__(self, jid, password) + self.room = room + self.nick = nick + self.finished = False + self.add_event_handler("session_start", self.start) + self.add_event_handler("groupchat_message", self.muc_message) + + self.tests = {} + + def muc_message(self, msg): + if msg['body'] == "ready": + self.send_message(mto=self.room, mbody=None, msubject='The new subject', mtype='groupchat') + + def start(self, event): + self.plugin['xep_0045'].joinMUC(self.room, self.nick, wait=True) + +class Client(sleekxmpp.ClientXMPP): + def __init__(self, jid, password, room, nick): + sleekxmpp.ClientXMPP.__init__(self, jid, password) + self.room = room + self.nick = nick + self.add_event_handler("session_start", self.start) + self.add_event_handler("groupchat_subject", self.muc_subject) + self.finished = False + + self.tests = {} + self.tests["subject_changed"] = ["libcommuni: Change topic", False] + + def muc_subject(self, msg): + if msg['subject'] == "The new subject": + self.tests["subject_changed"][1] = True + self.finished = True + + def start(self, event): + self.getRoster() + self.sendPresence() + self.plugin['xep_0045'].joinMUC(self.room, self.nick, wait=True) + self.send_message(mto=self.room, mbody="ready", mtype='groupchat') diff --git a/spectrum/src/tests/muc_echo.py b/spectrum/src/tests/muc_echo.py index 0075a9c0a807413aa7408c313882fa2f4925b22a..bc4e97363725e80e7b8e5c6d301e3e8f06a7eaa9 100644 --- a/spectrum/src/tests/muc_echo.py +++ b/spectrum/src/tests/muc_echo.py @@ -12,6 +12,7 @@ class Responder(sleekxmpp.ClientXMPP): sleekxmpp.ClientXMPP.__init__(self, jid, password) self.room = room self.nick = nick + self.finished = False self.add_event_handler("session_start", self.start) self.add_event_handler("groupchat_message", self.muc_message) diff --git a/spectrum/src/tests/muc_join_leave.py b/spectrum/src/tests/muc_join_leave.py new file mode 100644 index 0000000000000000000000000000000000000000..5276d13d68ae5409976737eab39880cdb2902870 --- /dev/null +++ b/spectrum/src/tests/muc_join_leave.py @@ -0,0 +1,50 @@ +import optparse +import sys +import time +import subprocess +import os + +import sleekxmpp + + +class Responder(sleekxmpp.ClientXMPP): + def __init__(self, jid, password, room, nick): + sleekxmpp.ClientXMPP.__init__(self, jid, password) + self.room = room + self.nick = nick + self.finished = False + self.add_event_handler("session_start", self.start) + self.add_event_handler("muc::" + room + "::got_online", self.muc_got_online) + self.add_event_handler("muc::" + room + "::got_offline", self.muc_got_offline) + + self.tests = {} + self.tests["online_received"] = ["libcommuni: Received available presence", False] + self.tests["offline_received"] = ["libcommuni: Received unavailable presence", False] + + def muc_got_online(self, presence): + if presence['muc']['nick'] == "client": + self.tests["online_received"][1] = True + + def muc_got_offline(self, presence): + if presence['muc']['nick'] == "client": + self.tests["offline_received"][1] = True + self.finished = True + + def start(self, event): + self.plugin['xep_0045'].joinMUC(self.room, self.nick, wait=True) + +class Client(sleekxmpp.ClientXMPP): + def __init__(self, jid, password, room, nick): + sleekxmpp.ClientXMPP.__init__(self, jid, password) + self.room = room + self.nick = nick + self.add_event_handler("session_start", self.start) + self.finished = False + + self.tests = {} + + def start(self, event): + self.getRoster() + self.sendPresence() + self.plugin['xep_0045'].joinMUC(self.room, self.nick, wait=True) + self.plugin['xep_0045'].leaveMUC(self.room, self.nick) diff --git a/spectrum/src/tests/start.py b/spectrum/src/tests/start.py index 55b9d419cdf8f32b4c61e164d475a93ba85ec6f1..be61caa61b00a08d5adb24f16edae132715df85a 100644 --- a/spectrum/src/tests/start.py +++ b/spectrum/src/tests/start.py @@ -38,7 +38,7 @@ def single_test(Client, Responder): sys.exit(1) max_time = 60 - while not client.finished and max_time > 0: + while not client.finished and not responder.finished and max_time > 0: time.sleep(1) max_time -= 1 client.disconnect() @@ -49,7 +49,10 @@ def single_test(Client, Responder): os.system("killall spectrum2_libcommuni_backend 2>/dev/null") ret = True - for v in client.tests.values(): + tests = [] + tests += client.tests.values() + tests += responder.tests.values() + for v in tests: if v[1]: print v[0] + ": PASSED" else: