at 23.05-pre 1.8 kB view raw
1import ./make-test-python.nix ({ pkgs, ... }: { 2 name = "maddy"; 3 meta = with pkgs.lib.maintainers; { maintainers = [ onny ]; }; 4 5 nodes = { 6 server = { ... }: { 7 services.maddy = { 8 enable = true; 9 hostname = "server"; 10 primaryDomain = "server"; 11 openFirewall = true; 12 }; 13 }; 14 15 client = { ... }: { 16 environment.systemPackages = [ 17 (pkgs.writers.writePython3Bin "send-testmail" { } '' 18 import smtplib 19 from email.mime.text import MIMEText 20 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 31 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 }; 45 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) 51 52 server.succeed("maddyctl creds create --password test postmaster@server") 53 server.succeed("maddyctl imap-acct create postmaster@server") 54 55 client.succeed("send-testmail") 56 client.succeed("test-imap") 57 ''; 58})