From bb4816d41c2aa43723529ef7bcf081f845c86180 Mon Sep 17 00:00:00 2001 From: Izorkin Date: Sat, 15 Jun 2019 12:58:00 +0300 Subject: nixos/tests/prosodyMysql: add check work prosody with MySQL database --- nixos/tests/all-tests.nix | 1 + nixos/tests/xmpp/prosody-mysql.nix | 69 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 70 insertions(+) create mode 100644 nixos/tests/xmpp/prosody-mysql.nix (limited to 'nixos/tests') diff --git a/nixos/tests/all-tests.nix b/nixos/tests/all-tests.nix index c00cf30e91e0..1391a537f32f 100644 --- a/nixos/tests/all-tests.nix +++ b/nixos/tests/all-tests.nix @@ -210,6 +210,7 @@ in prometheus2 = handleTest ./prometheus-2.nix {}; prometheus-exporters = handleTest ./prometheus-exporters.nix {}; prosody = handleTest ./xmpp/prosody.nix {}; + prosodyMysql = handleTest ./xmpp/prosody-mysql.nix {}; proxy = handleTest ./proxy.nix {}; quagga = handleTest ./quagga.nix {}; quake3 = handleTest ./quake3.nix {}; diff --git a/nixos/tests/xmpp/prosody-mysql.nix b/nixos/tests/xmpp/prosody-mysql.nix new file mode 100644 index 000000000000..5e9dba2abe53 --- /dev/null +++ b/nixos/tests/xmpp/prosody-mysql.nix @@ -0,0 +1,69 @@ +import ../make-test.nix { + name = "prosody-mysql"; + + nodes = { + client = { nodes, pkgs, ... }: { + environment.systemPackages = [ + (pkgs.callPackage ./xmpp-sendmessage.nix { connectTo = nodes.server.config.networking.primaryIPAddress; }) + ]; + }; + server = { config, pkgs, ... }: { + networking.extraHosts = '' + ${config.networking.primaryIPAddress} example.com + ''; + networking.firewall.enable = false; + services.prosody = { + enable = true; + # TODO: use a self-signed certificate + c2sRequireEncryption = false; + extraConfig = '' + storage = "sql" + sql = { + driver = "MySQL"; + database = "prosody"; + host = "mysql"; + port = 3306; + username = "prosody"; + password = "password123"; + }; + ''; + virtualHosts.test = { + domain = "example.com"; + enabled = true; + }; + }; + }; + mysql = { config, pkgs, ... }: { + networking.firewall.enable = false; + services.mysql = { + enable = true; + initialScript = pkgs.writeText "mysql_init.sql" '' + CREATE DATABASE prosody; + CREATE USER 'prosody'@'server' IDENTIFIED BY 'password123'; + GRANT ALL PRIVILEGES ON prosody.* TO 'prosody'@'server'; + FLUSH PRIVILEGES; + ''; + package = pkgs.mariadb; + }; + }; + }; + + testScript = { nodes, ... }: '' + $mysql->waitForUnit('mysql.service'); + $server->waitForUnit('prosody.service'); + $server->succeed('prosodyctl status') =~ /Prosody is running/; + + # set password to 'nothunter2' (it's asked twice) + $server->succeed('yes nothunter2 | prosodyctl adduser cthon98@example.com'); + # set password to 'y' + $server->succeed('yes | prosodyctl adduser azurediamond@example.com'); + # correct password to 'hunter2' + $server->succeed('yes hunter2 | prosodyctl passwd azurediamond@example.com'); + + $client->succeed("send-message"); + + $server->succeed('prosodyctl deluser cthon98@example.com'); + $server->succeed('prosodyctl deluser azurediamond@example.com'); + ''; +} + -- cgit 1.4.1