diff options
author | Florian Jacob <projects+git@florianjacob.de> | 2018-03-21 14:27:20 +0100 |
---|---|---|
committer | Florian Jacob <projects+git@florianjacob.de> | 2018-03-21 15:33:58 +0100 |
commit | 88f06c5ce9800d661fa85c019838fe67635aa64f (patch) | |
tree | 51e0b2cce4672e9d3352e30942a2499697204d4d | |
parent | 2c0b230330b3292e31f1de2392a293db6bede69e (diff) | |
download | nixlib-88f06c5ce9800d661fa85c019838fe67635aa64f.tar nixlib-88f06c5ce9800d661fa85c019838fe67635aa64f.tar.gz nixlib-88f06c5ce9800d661fa85c019838fe67635aa64f.tar.bz2 nixlib-88f06c5ce9800d661fa85c019838fe67635aa64f.tar.lz nixlib-88f06c5ce9800d661fa85c019838fe67635aa64f.tar.xz nixlib-88f06c5ce9800d661fa85c019838fe67635aa64f.tar.zst nixlib-88f06c5ce9800d661fa85c019838fe67635aa64f.zip |
nixos/prosody: add a basic test
-rw-r--r-- | nixos/tests/prosody.nix | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/nixos/tests/prosody.nix b/nixos/tests/prosody.nix new file mode 100644 index 000000000000..fcebfaf74e12 --- /dev/null +++ b/nixos/tests/prosody.nix @@ -0,0 +1,75 @@ +import ./make-test.nix { + name = "prosody"; + + machine = { config, pkgs, ... }: { + services.prosody = { + enable = true; + # TODO: use a self-signed certificate + c2sRequireEncryption = false; + }; + environment.systemPackages = let + sendMessage = pkgs.writeScriptBin "send-message" '' + #!/usr/bin/env python3 + # Based on the sleekxmpp send_client example, look there for more details: + # https://github.com/fritzy/SleekXMPP/blob/develop/examples/send_client.py + import sleekxmpp + + class SendMsgBot(sleekxmpp.ClientXMPP): + """ + A basic SleekXMPP bot that will log in, send a message, + and then log out. + """ + def __init__(self, jid, password, recipient, message): + sleekxmpp.ClientXMPP.__init__(self, jid, password) + + self.recipient = recipient + self.msg = message + + self.add_event_handler("session_start", self.start, threaded=True) + + def start(self, event): + self.send_presence() + self.get_roster() + + self.send_message(mto=self.recipient, + mbody=self.msg, + mtype='chat') + + self.disconnect(wait=True) + + + if __name__ == '__main__': + xmpp = SendMsgBot("test1@localhost", "test1", "test2@localhost", "Hello World!") + xmpp.register_plugin('xep_0030') # Service Discovery + xmpp.register_plugin('xep_0199') # XMPP Ping + + # TODO: verify certificate + # If you want to verify the SSL certificates offered by a server: + # xmpp.ca_certs = "path/to/ca/cert" + + if xmpp.connect(('localhost', 5222)): + xmpp.process(block=True) + else: + print("Unable to connect.") + sys.exit(1) + ''; + in [ (pkgs.python3.withPackages (ps: [ ps.sleekxmpp ])) sendMessage ]; + }; + + testScript = '' + $machine->waitForUnit('prosody.service'); + $machine->succeed('prosodyctl status') =~ /Prosody is running/; + + # set password to 'test' (it's asked twice) + $machine->succeed('yes test1 | prosodyctl adduser test1@localhost'); + # set password to 'y' + $machine->succeed('yes | prosodyctl adduser test2@localhost'); + # correct password to 'test2' + $machine->succeed('yes test2 | prosodyctl passwd test2@localhost'); + + $machine->succeed("send-message"); + + $machine->succeed('prosodyctl deluser test1@localhost'); + $machine->succeed('prosodyctl deluser test2@localhost'); + ''; +} |