aboutsummaryrefslogtreecommitdiff
path: root/infra/libkookie/nixpkgs/nixos/tests/rss2email.nix
diff options
context:
space:
mode:
Diffstat (limited to 'infra/libkookie/nixpkgs/nixos/tests/rss2email.nix')
-rw-r--r--infra/libkookie/nixpkgs/nixos/tests/rss2email.nix66
1 files changed, 66 insertions, 0 deletions
diff --git a/infra/libkookie/nixpkgs/nixos/tests/rss2email.nix b/infra/libkookie/nixpkgs/nixos/tests/rss2email.nix
new file mode 100644
index 000000000000..d62207a417b8
--- /dev/null
+++ b/infra/libkookie/nixpkgs/nixos/tests/rss2email.nix
@@ -0,0 +1,66 @@
+import ./make-test-python.nix {
+ name = "opensmtpd";
+
+ nodes = {
+ server = { pkgs, ... }: {
+ imports = [ common/user-account.nix ];
+ services.nginx = {
+ enable = true;
+ virtualHosts."127.0.0.1".root = ./common/webroot;
+ };
+ services.rss2email = {
+ enable = true;
+ to = "alice@localhost";
+ interval = "1";
+ config.from = "test@example.org";
+ feeds = {
+ nixos = { url = "http://127.0.0.1/news-rss.xml"; };
+ };
+ };
+ services.opensmtpd = {
+ enable = true;
+ extraServerArgs = [ "-v" ];
+ serverConfiguration = ''
+ listen on 127.0.0.1
+ action dovecot_deliver mda \
+ "${pkgs.dovecot}/libexec/dovecot/deliver -d %{user.username}"
+ match from any for local action dovecot_deliver
+ '';
+ };
+ services.dovecot2 = {
+ enable = true;
+ enableImap = true;
+ mailLocation = "maildir:~/mail";
+ protocols = [ "imap" ];
+ };
+ environment.systemPackages = let
+ checkMailLanded = pkgs.writeScriptBin "check-mail-landed" ''
+ #!${pkgs.python3.interpreter}
+ import imaplib
+
+ with imaplib.IMAP4('127.0.0.1', 143) as imap:
+ imap.login('alice', 'foobar')
+ imap.select()
+ status, refs = imap.search(None, 'ALL')
+ print("=====> Result of search for all:", status, refs)
+ assert status == 'OK'
+ assert len(refs) > 0
+ status, msg = imap.fetch(refs[0], 'BODY[TEXT]')
+ assert status == 'OK'
+ '';
+ in [ pkgs.opensmtpd checkMailLanded ];
+ };
+ };
+
+ testScript = ''
+ start_all()
+
+ server.wait_for_unit("network-online.target")
+ server.wait_for_unit("opensmtpd")
+ server.wait_for_unit("dovecot2")
+ server.wait_for_unit("nginx")
+ server.wait_for_unit("rss2email")
+
+ server.wait_until_succeeds("check-mail-landed >&2")
+ '';
+}