dovecot module: test dovecot's LDA

That's apparently not enough to catch the bug I ran into with the update
to 2.3.1, but at least it will check the LDA appears to work.

Changed files
+16 -3
nixos
tests
+16 -3
nixos/tests/dovecot.nix
···
MAIL
'';
testImap = pkgs.writeScriptBin "test-imap" ''
#!${pkgs.python3.interpreter}
import imaplib
···
pop = poplib.POP3('localhost')
try:
-
pop.user('alice')
pop.pass_('foobar')
assert len(pop.list()[1]) == 1
status, fullmail, size = pop.retr(1)
assert status.startswith(b'+OK ')
body = b"".join(fullmail[fullmail.index(b""):]).strip()
-
assert body == b'Hello world!'
finally:
pop.quit()
'';
-
in [ sendTestMail testImap testPop ];
};
testScript = ''
$machine->waitForUnit('postfix.service');
$machine->waitForUnit('dovecot2.service');
$machine->succeed('send-testmail');
$machine->waitUntilFails('[ "$(postqueue -p)" != "Mail queue is empty" ]');
$machine->succeed('test-imap');
$machine->succeed('test-pop');
···
MAIL
'';
+
sendTestMailViaDeliveryAgent = pkgs.writeScriptBin "send-lda" ''
+
#!${pkgs.stdenv.shell}
+
+
exec ${pkgs.dovecot}/libexec/dovecot/deliver -d bob <<MAIL
+
From: root@localhost
+
To: bob@localhost
+
Subject: Something else...
+
+
I'm running short of ideas!
+
MAIL
+
'';
+
testImap = pkgs.writeScriptBin "test-imap" ''
#!${pkgs.python3.interpreter}
import imaplib
···
pop = poplib.POP3('localhost')
try:
+
pop.user('bob')
pop.pass_('foobar')
assert len(pop.list()[1]) == 1
status, fullmail, size = pop.retr(1)
assert status.startswith(b'+OK ')
body = b"".join(fullmail[fullmail.index(b""):]).strip()
+
assert body == b"I'm running short of ideas!"
finally:
pop.quit()
'';
+
in [ sendTestMail sendTestMailViaDeliveryAgent testImap testPop ];
};
testScript = ''
$machine->waitForUnit('postfix.service');
$machine->waitForUnit('dovecot2.service');
$machine->succeed('send-testmail');
+
$machine->succeed('send-lda');
$machine->waitUntilFails('[ "$(postqueue -p)" != "Mail queue is empty" ]');
$machine->succeed('test-imap');
$machine->succeed('test-pop');