nixosTests.rspamd: port to python
This commit is contained in:
parent
5b4908c1d6
commit
76a602dde4
|
@ -3,20 +3,20 @@
|
||||||
pkgs ? import ../.. { inherit system config; }
|
pkgs ? import ../.. { inherit system config; }
|
||||||
}:
|
}:
|
||||||
|
|
||||||
with import ../lib/testing.nix { inherit system pkgs; };
|
with import ../lib/testing-python.nix { inherit system pkgs; };
|
||||||
with pkgs.lib;
|
with pkgs.lib;
|
||||||
|
|
||||||
let
|
let
|
||||||
initMachine = ''
|
initMachine = ''
|
||||||
startAll
|
start_all()
|
||||||
$machine->waitForUnit("rspamd.service");
|
machine.wait_for_unit("rspamd.service")
|
||||||
$machine->succeed("id \"rspamd\" >/dev/null");
|
machine.succeed("id rspamd >/dev/null")
|
||||||
'';
|
'';
|
||||||
checkSocket = socket: user: group: mode: ''
|
checkSocket = socket: user: group: mode: ''
|
||||||
$machine->succeed("ls ${socket} >/dev/null");
|
machine.succeed("ls ${socket} >/dev/null")
|
||||||
$machine->succeed("[[ \"\$(stat -c %U ${socket})\" == \"${user}\" ]]");
|
machine.succeed('[[ "$(stat -c %U ${socket})" == "${user}" ]]')
|
||||||
$machine->succeed("[[ \"\$(stat -c %G ${socket})\" == \"${group}\" ]]");
|
machine.succeed('[[ "$(stat -c %G ${socket})" == "${group}" ]]')
|
||||||
$machine->succeed("[[ \"\$(stat -c %a ${socket})\" == \"${mode}\" ]]");
|
machine.succeed('[[ "$(stat -c %a ${socket})" == "${mode}" ]]')
|
||||||
'';
|
'';
|
||||||
simple = name: enableIPv6: makeTest {
|
simple = name: enableIPv6: makeTest {
|
||||||
name = "rspamd-${name}";
|
name = "rspamd-${name}";
|
||||||
|
@ -25,22 +25,23 @@ let
|
||||||
networking.enableIPv6 = enableIPv6;
|
networking.enableIPv6 = enableIPv6;
|
||||||
};
|
};
|
||||||
testScript = ''
|
testScript = ''
|
||||||
startAll
|
start_all()
|
||||||
$machine->waitForUnit("multi-user.target");
|
machine.wait_for_unit("multi-user.target")
|
||||||
$machine->waitForOpenPort(11334);
|
machine.wait_for_open_port(11334)
|
||||||
$machine->waitForUnit("rspamd.service");
|
machine.wait_for_unit("rspamd.service")
|
||||||
$machine->succeed("id \"rspamd\" >/dev/null");
|
machine.succeed("id rspamd >/dev/null")
|
||||||
${checkSocket "/run/rspamd/rspamd.sock" "rspamd" "rspamd" "660" }
|
${checkSocket "/run/rspamd/rspamd.sock" "rspamd" "rspamd" "660" }
|
||||||
sleep 10;
|
machine.sleep(10)
|
||||||
$machine->log($machine->succeed("cat /etc/rspamd/rspamd.conf"));
|
machine.log(machine.succeed("cat /etc/rspamd/rspamd.conf"))
|
||||||
$machine->log($machine->succeed("grep 'CONFDIR/worker-controller.inc' /etc/rspamd/rspamd.conf"));
|
machine.log(
|
||||||
$machine->log($machine->succeed("grep 'CONFDIR/worker-normal.inc' /etc/rspamd/rspamd.conf"));
|
machine.succeed("grep 'CONFDIR/worker-controller.inc' /etc/rspamd/rspamd.conf")
|
||||||
$machine->log($machine->succeed("systemctl cat rspamd.service"));
|
)
|
||||||
$machine->log($machine->succeed("curl http://localhost:11334/auth"));
|
machine.log(machine.succeed("grep 'CONFDIR/worker-normal.inc' /etc/rspamd/rspamd.conf"))
|
||||||
$machine->log($machine->succeed("curl http://127.0.0.1:11334/auth"));
|
machine.log(machine.succeed("systemctl cat rspamd.service"))
|
||||||
${optionalString enableIPv6 ''
|
machine.log(machine.succeed("curl http://localhost:11334/auth"))
|
||||||
$machine->log($machine->succeed("curl http://[::1]:11334/auth"));
|
machine.log(machine.succeed("curl http://127.0.0.1:11334/auth"))
|
||||||
''}
|
${optionalString enableIPv6 ''machine.log(machine.succeed("curl http://[::1]:11334/auth"))''}
|
||||||
|
# would not reformat
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
in
|
in
|
||||||
|
@ -69,14 +70,18 @@ in
|
||||||
|
|
||||||
testScript = ''
|
testScript = ''
|
||||||
${initMachine}
|
${initMachine}
|
||||||
$machine->waitForFile("/run/rspamd.sock");
|
machine.wait_for_file("/run/rspamd.sock")
|
||||||
${checkSocket "/run/rspamd.sock" "root" "root" "600" }
|
${checkSocket "/run/rspamd.sock" "root" "root" "600" }
|
||||||
${checkSocket "/run/rspamd-worker.sock" "root" "root" "666" }
|
${checkSocket "/run/rspamd-worker.sock" "root" "root" "666" }
|
||||||
$machine->log($machine->succeed("cat /etc/rspamd/rspamd.conf"));
|
machine.log(machine.succeed("cat /etc/rspamd/rspamd.conf"))
|
||||||
$machine->log($machine->succeed("grep 'CONFDIR/worker-controller.inc' /etc/rspamd/rspamd.conf"));
|
machine.log(
|
||||||
$machine->log($machine->succeed("grep 'CONFDIR/worker-normal.inc' /etc/rspamd/rspamd.conf"));
|
machine.succeed("grep 'CONFDIR/worker-controller.inc' /etc/rspamd/rspamd.conf")
|
||||||
$machine->log($machine->succeed("rspamc -h /run/rspamd-worker.sock stat"));
|
)
|
||||||
$machine->log($machine->succeed("curl --unix-socket /run/rspamd-worker.sock http://localhost/ping"));
|
machine.log(machine.succeed("grep 'CONFDIR/worker-normal.inc' /etc/rspamd/rspamd.conf"))
|
||||||
|
machine.log(machine.succeed("rspamc -h /run/rspamd-worker.sock stat"))
|
||||||
|
machine.log(
|
||||||
|
machine.succeed("curl --unix-socket /run/rspamd-worker.sock http://localhost/ping")
|
||||||
|
)
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -111,18 +116,32 @@ in
|
||||||
|
|
||||||
testScript = ''
|
testScript = ''
|
||||||
${initMachine}
|
${initMachine}
|
||||||
$machine->waitForFile("/run/rspamd.sock");
|
machine.wait_for_file("/run/rspamd.sock")
|
||||||
${checkSocket "/run/rspamd.sock" "root" "root" "600" }
|
${checkSocket "/run/rspamd.sock" "root" "root" "600" }
|
||||||
${checkSocket "/run/rspamd-worker.sock" "root" "root" "666" }
|
${checkSocket "/run/rspamd-worker.sock" "root" "root" "666" }
|
||||||
$machine->log($machine->succeed("cat /etc/rspamd/rspamd.conf"));
|
machine.log(machine.succeed("cat /etc/rspamd/rspamd.conf"))
|
||||||
$machine->log($machine->succeed("grep 'CONFDIR/worker-controller.inc' /etc/rspamd/rspamd.conf"));
|
machine.log(
|
||||||
$machine->log($machine->succeed("grep 'CONFDIR/worker-normal.inc' /etc/rspamd/rspamd.conf"));
|
machine.succeed("grep 'CONFDIR/worker-controller.inc' /etc/rspamd/rspamd.conf")
|
||||||
$machine->log($machine->succeed("grep 'LOCAL_CONFDIR/override.d/worker-controller2.inc' /etc/rspamd/rspamd.conf"));
|
)
|
||||||
$machine->log($machine->succeed("grep 'verysecretpassword' /etc/rspamd/override.d/worker-controller2.inc"));
|
machine.log(machine.succeed("grep 'CONFDIR/worker-normal.inc' /etc/rspamd/rspamd.conf"))
|
||||||
$machine->waitUntilSucceeds("journalctl -u rspamd | grep -i 'starting controller process' >&2");
|
machine.log(
|
||||||
$machine->log($machine->succeed("rspamc -h /run/rspamd-worker.sock stat"));
|
machine.succeed(
|
||||||
$machine->log($machine->succeed("curl --unix-socket /run/rspamd-worker.sock http://localhost/ping"));
|
"grep 'LOCAL_CONFDIR/override.d/worker-controller2.inc' /etc/rspamd/rspamd.conf"
|
||||||
$machine->log($machine->succeed("curl http://localhost:11335/ping"));
|
)
|
||||||
|
)
|
||||||
|
machine.log(
|
||||||
|
machine.succeed(
|
||||||
|
"grep 'verysecretpassword' /etc/rspamd/override.d/worker-controller2.inc"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
machine.wait_until_succeeds(
|
||||||
|
"journalctl -u rspamd | grep -i 'starting controller process' >&2"
|
||||||
|
)
|
||||||
|
machine.log(machine.succeed("rspamc -h /run/rspamd-worker.sock stat"))
|
||||||
|
machine.log(
|
||||||
|
machine.succeed("curl --unix-socket /run/rspamd-worker.sock http://localhost/ping")
|
||||||
|
)
|
||||||
|
machine.log(machine.succeed("curl http://localhost:11335/ping"))
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
customLuaRules = makeTest {
|
customLuaRules = makeTest {
|
||||||
|
@ -199,22 +218,34 @@ in
|
||||||
};
|
};
|
||||||
testScript = ''
|
testScript = ''
|
||||||
${initMachine}
|
${initMachine}
|
||||||
$machine->waitForOpenPort(11334);
|
machine.wait_for_open_port(11334)
|
||||||
$machine->log($machine->succeed("cat /etc/rspamd/rspamd.conf"));
|
machine.log(machine.succeed("cat /etc/rspamd/rspamd.conf"))
|
||||||
$machine->log($machine->succeed("cat /etc/rspamd/rspamd.local.lua"));
|
machine.log(machine.succeed("cat /etc/rspamd/rspamd.local.lua"))
|
||||||
$machine->log($machine->succeed("cat /etc/rspamd/local.d/groups.conf"));
|
machine.log(machine.succeed("cat /etc/rspamd/local.d/groups.conf"))
|
||||||
# Verify that redis.conf was not written
|
# Verify that redis.conf was not written
|
||||||
$machine->fail("cat /etc/rspamd/local.d/redis.conf >&2");
|
machine.fail("cat /etc/rspamd/local.d/redis.conf >&2")
|
||||||
# Verify that antivirus.conf was not written
|
# Verify that antivirus.conf was not written
|
||||||
$machine->fail("cat /etc/rspamd/local.d/antivirus.conf >&2");
|
machine.fail("cat /etc/rspamd/local.d/antivirus.conf >&2")
|
||||||
${checkSocket "/run/rspamd/rspamd.sock" "rspamd" "rspamd" "660" }
|
${checkSocket "/run/rspamd/rspamd.sock" "rspamd" "rspamd" "660" }
|
||||||
$machine->log($machine->succeed("curl --unix-socket /run/rspamd/rspamd.sock http://localhost/ping"));
|
machine.log(
|
||||||
$machine->log($machine->succeed("rspamc -h 127.0.0.1:11334 stat"));
|
machine.succeed("curl --unix-socket /run/rspamd/rspamd.sock http://localhost/ping")
|
||||||
$machine->log($machine->succeed("cat /etc/tests/no-muh.eml | rspamc -h 127.0.0.1:11334"));
|
)
|
||||||
$machine->log($machine->succeed("cat /etc/tests/muh.eml | rspamc -h 127.0.0.1:11334 symbols"));
|
machine.log(machine.succeed("rspamc -h 127.0.0.1:11334 stat"))
|
||||||
$machine->waitUntilSucceeds("journalctl -u rspamd | grep -i muh >&2");
|
machine.log(machine.succeed("cat /etc/tests/no-muh.eml | rspamc -h 127.0.0.1:11334"))
|
||||||
$machine->log($machine->fail("cat /etc/tests/no-muh.eml | rspamc -h 127.0.0.1:11334 symbols | grep NO_MUH"));
|
machine.log(
|
||||||
$machine->log($machine->succeed("cat /etc/tests/muh.eml | rspamc -h 127.0.0.1:11334 symbols | grep NO_MUH"));
|
machine.succeed("cat /etc/tests/muh.eml | rspamc -h 127.0.0.1:11334 symbols")
|
||||||
|
)
|
||||||
|
machine.wait_until_succeeds("journalctl -u rspamd | grep -i muh >&2")
|
||||||
|
machine.log(
|
||||||
|
machine.fail(
|
||||||
|
"cat /etc/tests/no-muh.eml | rspamc -h 127.0.0.1:11334 symbols | grep NO_MUH"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
machine.log(
|
||||||
|
machine.succeed(
|
||||||
|
"cat /etc/tests/muh.eml | rspamc -h 127.0.0.1:11334 symbols | grep NO_MUH"
|
||||||
|
)
|
||||||
|
)
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
postfixIntegration = makeTest {
|
postfixIntegration = makeTest {
|
||||||
|
@ -250,16 +281,24 @@ in
|
||||||
};
|
};
|
||||||
testScript = ''
|
testScript = ''
|
||||||
${initMachine}
|
${initMachine}
|
||||||
$machine->waitForOpenPort(11334);
|
machine.wait_for_open_port(11334)
|
||||||
$machine->waitForOpenPort(25);
|
machine.wait_for_open_port(25)
|
||||||
${checkSocket "/run/rspamd/rspamd-milter.sock" "rspamd" "postfix" "660" }
|
${checkSocket "/run/rspamd/rspamd-milter.sock" "rspamd" "postfix" "660" }
|
||||||
$machine->log($machine->succeed("rspamc -h 127.0.0.1:11334 stat"));
|
machine.log(machine.succeed("rspamc -h 127.0.0.1:11334 stat"))
|
||||||
$machine->log($machine->succeed("msmtp --host=localhost -t --read-envelope-from < /etc/tests/example.eml"));
|
machine.log(
|
||||||
$machine->log($machine->fail("msmtp --host=localhost -t --read-envelope-from < /etc/tests/gtube.eml"));
|
machine.succeed(
|
||||||
|
"msmtp --host=localhost -t --read-envelope-from < /etc/tests/example.eml"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
machine.log(
|
||||||
|
machine.fail(
|
||||||
|
"msmtp --host=localhost -t --read-envelope-from < /etc/tests/gtube.eml"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
$machine->waitUntilFails('[ "$(postqueue -p)" != "Mail queue is empty" ]');
|
machine.wait_until_fails('[ "$(postqueue -p)" != "Mail queue is empty" ]')
|
||||||
$machine->fail("journalctl -u postfix | grep -i error >&2");
|
machine.fail("journalctl -u postfix | grep -i error >&2")
|
||||||
$machine->fail("journalctl -u postfix | grep -i warning >&2");
|
machine.fail("journalctl -u postfix | grep -i warning >&2")
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue