587713944a
GitOrigin-RevId: 6143fc5eeb9c4f00163267708e26191d1e918932
102 lines
3 KiB
Nix
102 lines
3 KiB
Nix
import ../../make-test-python.nix ({ lib, pkgs, ... }:
|
|
|
|
let
|
|
movim = {
|
|
domain = "movim.local";
|
|
info = "No ToS in tests";
|
|
description = "NixOS testing server";
|
|
};
|
|
xmpp = {
|
|
domain = "xmpp.local";
|
|
admin = rec {
|
|
JID = "${username}@${xmpp.domain}";
|
|
username = "romeo";
|
|
password = "juliet";
|
|
};
|
|
};
|
|
in
|
|
{
|
|
name = "movim-standard";
|
|
|
|
meta = {
|
|
maintainers = with pkgs.lib.maintainers; [ toastal ];
|
|
};
|
|
|
|
nodes = {
|
|
server = { pkgs, ... }: {
|
|
services.movim = {
|
|
inherit (movim) domain;
|
|
enable = true;
|
|
verbose = true;
|
|
podConfig = {
|
|
inherit (movim) description info;
|
|
xmppdomain = xmpp.domain;
|
|
};
|
|
nginx = { };
|
|
};
|
|
|
|
services.prosody = {
|
|
enable = true;
|
|
xmppComplianceSuite = false;
|
|
disco_items = [
|
|
{ url = "upload.${xmpp.domain}"; description = "File Uploads"; }
|
|
];
|
|
virtualHosts."${xmpp.domain}" = {
|
|
inherit (xmpp) domain;
|
|
enabled = true;
|
|
extraConfig = ''
|
|
Component "pubsub.${xmpp.domain}" "pubsub"
|
|
pubsub_max_items = 10000
|
|
expose_publisher = true
|
|
|
|
Component "upload.${xmpp.domain}" "http_file_share"
|
|
http_external_url = "http://upload.${xmpp.domain}"
|
|
http_file_share_expires_after = 300 * 24 * 60 * 60
|
|
http_file_share_size_limit = 1024 * 1024 * 1024
|
|
http_file_share_daily_quota = 4 * 1024 * 1024 * 1024
|
|
'';
|
|
};
|
|
extraConfig = ''
|
|
pep_max_items = 10000
|
|
|
|
http_paths = {
|
|
file_share = "/";
|
|
}
|
|
'';
|
|
};
|
|
|
|
networking.extraHosts = ''
|
|
127.0.0.1 ${movim.domain}
|
|
127.0.0.1 ${xmpp.domain}
|
|
'';
|
|
};
|
|
};
|
|
|
|
testScript = /* python */ ''
|
|
server.wait_for_unit("phpfpm-movim.service")
|
|
server.wait_for_unit("nginx.service")
|
|
server.wait_for_open_port(80)
|
|
|
|
server.wait_for_unit("prosody.service")
|
|
server.succeed('prosodyctl status | grep "Prosody is running"')
|
|
server.succeed("prosodyctl register ${xmpp.admin.username} ${xmpp.domain} ${xmpp.admin.password}")
|
|
|
|
server.wait_for_unit("movim.service")
|
|
|
|
# Test unauthenticated
|
|
server.fail("curl -L --fail-with-body --max-redirs 0 http://${movim.domain}/chat")
|
|
|
|
# Test basic Websocket
|
|
server.succeed("echo \"\" | ${lib.getExe pkgs.websocat} 'ws://${movim.domain}/ws/?path=login&offset=0' --origin 'http://${movim.domain}'")
|
|
|
|
# Test login + create cookiejar
|
|
login_html = server.succeed("curl --fail-with-body -c /tmp/cookies http://${movim.domain}/login")
|
|
assert "${movim.description}" in login_html
|
|
assert "${movim.info}" in login_html
|
|
|
|
# Test authentication POST
|
|
server.succeed("curl --fail-with-body -b /tmp/cookies -X POST --data-urlencode 'username=${xmpp.admin.JID}' --data-urlencode 'password=${xmpp.admin.password}' http://${movim.domain}/login")
|
|
|
|
server.succeed("curl -L --fail-with-body --max-redirs 1 -b /tmp/cookies http://${movim.domain}/chat")
|
|
'';
|
|
})
|