aboutsummaryrefslogtreecommitdiffstats
path: root/tests/by-name/sn/snm-email-single-server/test.nix
diff options
context:
space:
mode:
Diffstat (limited to 'tests/by-name/sn/snm-email-single-server/test.nix')
-rw-r--r--tests/by-name/sn/snm-email-single-server/test.nix83
1 files changed, 83 insertions, 0 deletions
diff --git a/tests/by-name/sn/snm-email-single-server/test.nix b/tests/by-name/sn/snm-email-single-server/test.nix
new file mode 100644
index 0000000..68c6022
--- /dev/null
+++ b/tests/by-name/sn/snm-email-single-server/test.nix
@@ -0,0 +1,83 @@
+{
+ vhack,
+ pkgs,
+ vhackPackages,
+ ...
+}: let
+ domain = "mail.server.test";
+
+ common = import ../../../common/email/functions.nix {inherit pkgs vhackPackages;};
+in
+ vhack.runTest {
+ name = "email";
+
+ serverDomains = [
+ {server = domain;}
+ ];
+
+ nodes = {
+ server = {config, ...}: {
+ systemd.tmpfiles.rules = [
+ #- path mode user group - content
+ "f /passwords/alice 777 root root - alice-password"
+ "f /passwords/bob 777 root root - bob-password"
+ ];
+
+ vhack = {
+ mail = {
+ enable = true;
+ fqdn = domain;
+ domains = [
+ domain
+ ];
+ accounts = {
+ "alice@${domain}" = {
+ passwordFile = "/passwords/alice";
+ };
+ "bob@${domain}" = {
+ passwordFile = "/passwords/bob";
+ };
+ };
+ };
+ };
+ };
+
+ alice = common.mkUser "alice" domain;
+ bob = common.mkUser "bob" domain;
+ };
+
+ services = [
+ {server = "postfix.service";}
+ ];
+
+ ports = [
+ {server = 993;} # imap
+ {server = 465;} # smtp
+ ];
+
+ testScript = {...}:
+ # Python
+ ''
+ with subtest("Both start without mail"):
+ alice.succeed("sudo -u alice ${common.scripts.expectNoNewMail}")
+ bob.succeed("sudo -u bob ${common.scripts.expectNoNewMail}")
+
+ with subtest("Alice can send an email to bob"):
+ alice.succeed("sudo -u alice ${pkgs.writeShellScript "alice-send" ''
+ set -xe
+
+ cat << EOF | msmtp --debug --account alice bob@${domain} >&2
+ Hi Bob!
+
+ This is an email.
+ It contains a subject and a body.
+
+ ALICE
+ EOF
+ ''}")
+ bob.succeed("sudo -u bob ${common.scripts.expectNewMail}")
+
+ server.copy_from_machine("/var/lib/", "server")
+ bob.copy_from_machine("/home/bob/mail", "bob")
+ '';
+ }