python310Packages.pydeconz: 104 -> 105
[NixPkgs.git] / nixos / tests / maddy.nix
blobb9d0416482da1ddd548dfc8fef5d380b16061f36
1 import ./make-test-python.nix ({ pkgs, ... }: {
2   name = "maddy";
3   meta = with pkgs.lib.maintainers; { maintainers = [ onny ]; };
5   nodes = {
6     server = { ... }: {
7       services.maddy = {
8         enable = true;
9         hostname = "server";
10         primaryDomain = "server";
11         openFirewall = true;
12       };
13     };
15     client = { ... }: {
16       environment.systemPackages = [
17         (pkgs.writers.writePython3Bin "send-testmail" { } ''
18           import smtplib
19           from email.mime.text import MIMEText
21           msg = MIMEText("Hello World")
22           msg['Subject'] = 'Test'
23           msg['From'] = "postmaster@server"
24           msg['To'] = "postmaster@server"
25           with smtplib.SMTP('server', 587) as smtp:
26               smtp.login('postmaster@server', 'test')
27               smtp.sendmail('postmaster@server', 'postmaster@server', msg.as_string())
28         '')
29         (pkgs.writers.writePython3Bin "test-imap" { } ''
30           import imaplib
32           with imaplib.IMAP4('server') as imap:
33               imap.login('postmaster@server', 'test')
34               imap.select()
35               status, refs = imap.search(None, 'ALL')
36               assert status == 'OK'
37               assert len(refs) == 1
38               status, msg = imap.fetch(refs[0], 'BODY[TEXT]')
39               assert status == 'OK'
40               assert msg[0][1].strip() == b"Hello World"
41         '')
42       ];
43     };
44   };
46   testScript = ''
47     start_all()
48     server.wait_for_unit("maddy.service")
49     server.wait_for_open_port(143)
50     server.wait_for_open_port(587)
52     server.succeed("maddyctl creds create --password test postmaster@server")
53     server.succeed("maddyctl imap-acct create postmaster@server")
55     client.succeed("send-testmail")
56     client.succeed("test-imap")
57   '';