diff options
author | mathieui <mathieui@mathieui.net> | 2020-12-05 17:37:50 +0100 |
---|---|---|
committer | mathieui <mathieui@mathieui.net> | 2020-12-05 17:37:50 +0100 |
commit | 73cc2a40082cf936221adb09cfe208bd06cd4b60 (patch) | |
tree | b6460caabba875c04bb5f680aa29954037b8ba09 /slixmpp/test/integration.py | |
parent | aa5d422f38889edf2131d840ca50e3fb8a603420 (diff) | |
parent | 77587a48432901b5a43441f3e41fe26c02aeb8ed (diff) | |
download | slixmpp-73cc2a40082cf936221adb09cfe208bd06cd4b60.tar.gz slixmpp-73cc2a40082cf936221adb09cfe208bd06cd4b60.tar.bz2 slixmpp-73cc2a40082cf936221adb09cfe208bd06cd4b60.tar.xz slixmpp-73cc2a40082cf936221adb09cfe208bd06cd4b60.zip |
Merge branch 'first-integration-tests' into 'master'
First integration tests
See merge request poezio/slixmpp!75
Diffstat (limited to 'slixmpp/test/integration.py')
-rw-r--r-- | slixmpp/test/integration.py | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/slixmpp/test/integration.py b/slixmpp/test/integration.py new file mode 100644 index 00000000..d15019cc --- /dev/null +++ b/slixmpp/test/integration.py @@ -0,0 +1,61 @@ +""" + Slixmpp: The Slick XMPP Library + Copyright (C) 2020 Mathieu Pasquet + This file is part of Slixmpp. + + See the file LICENSE for copying permission. +""" + +import asyncio +import os +try: + from unittest import IsolatedAsyncioTestCase +except ImportError: + # Python < 3.8 + # just to make sure the imports do not break, but + # not usable. + from unittest import TestCase as IsolatedAsyncioTestCase +from typing import ( + List, +) + +from slixmpp import JID +from slixmpp.clientxmpp import ClientXMPP + + +class SlixIntegration(IsolatedAsyncioTestCase): + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self.clients = [] + self.addAsyncCleanup(self._destroy) + + def envjid(self, name): + """Get a JID from an env var""" + value = os.getenv(name) + return JID(value) + + def envstr(self, name): + """get a str from an env var""" + return os.getenv(name) + + def register_plugins(self, plugins: List[str]): + """Register plugins on all known clients""" + for plugin in plugins: + for client in self.clients: + client.register_plugin(plugin) + + def add_client(self, jid: JID, password: str): + """Register a new client""" + self.clients.append(ClientXMPP(jid, password)) + + async def connect_clients(self): + """Connect all clients""" + for client in self.clients: + client.connect() + await client.wait_until('session_start') + + async def _destroy(self): + """Kill all clients""" + for client in self.clients: + client.abort() |