Since 8aea5288
xmpp-sendmessage.nix tests MUC and HTTP upload,
change the test to reflect this.
93 lines
2.9 KiB
Nix
93 lines
2.9 KiB
Nix
import ../make-test-python.nix {
|
|
name = "prosody-mysql";
|
|
|
|
nodes = {
|
|
client = { nodes, pkgs, ... }: {
|
|
environment.systemPackages = [
|
|
(pkgs.callPackage ./xmpp-sendmessage.nix { connectTo = nodes.server.config.networking.primaryIPAddress; })
|
|
];
|
|
networking.extraHosts = ''
|
|
${nodes.server.config.networking.primaryIPAddress} example.com
|
|
${nodes.server.config.networking.primaryIPAddress} conference.example.com
|
|
${nodes.server.config.networking.primaryIPAddress} uploads.example.com
|
|
'';
|
|
};
|
|
server = { config, pkgs, ... }: {
|
|
nixpkgs.overlays = [
|
|
(self: super: {
|
|
prosody = super.prosody.override {
|
|
withDBI = true;
|
|
withExtraLibs = [ pkgs.luaPackages.luadbi-mysql ];
|
|
};
|
|
})
|
|
];
|
|
networking.extraHosts = ''
|
|
${config.networking.primaryIPAddress} example.com
|
|
${config.networking.primaryIPAddress} conference.example.com
|
|
${config.networking.primaryIPAddress} uploads.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;
|
|
};
|
|
muc = [
|
|
{
|
|
domain = "conference.example.com";
|
|
}
|
|
];
|
|
uploadHttp = {
|
|
domain = "uploads.example.com";
|
|
};
|
|
};
|
|
};
|
|
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.wait_for_unit("mysql.service")
|
|
server.wait_for_unit("prosody.service")
|
|
server.succeed('prosodyctl status | grep "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")
|
|
'';
|
|
}
|
|
|