Merge pull request #313096 from onny/stalwart-fix-test
This commit is contained in:
commit
360221d4bf
@ -70,7 +70,9 @@ in {
|
|||||||
storage.lookup = mkDefault "db";
|
storage.lookup = mkDefault "db";
|
||||||
storage.blob = mkDefault "blob";
|
storage.blob = mkDefault "blob";
|
||||||
resolver.type = mkDefault "system";
|
resolver.type = mkDefault "system";
|
||||||
resolver.public-suffix = mkDefault ["https://publicsuffix.org/list/public_suffix_list.dat"];
|
resolver.public-suffix = lib.mkDefault [
|
||||||
|
"file://${pkgs.publicsuffix-list}/share/publicsuffix/public_suffix_list.dat"
|
||||||
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
systemd.services.stalwart-mail = {
|
systemd.services.stalwart-mail = {
|
||||||
|
@ -1,25 +1,51 @@
|
|||||||
# Rudimentary test checking that the Stalwart email server can:
|
# Rudimentary test checking that the Stalwart email server can:
|
||||||
# - receive some message through SMTP submission, then
|
# - receive some message through SMTP submission, then
|
||||||
# - serve this message through IMAP.
|
# - serve this message through IMAP.
|
||||||
|
{
|
||||||
|
system ? builtins.currentSystem,
|
||||||
|
config ? { },
|
||||||
|
pkgs ? import ../../.. { inherit system config; },
|
||||||
|
|
||||||
|
lib ? pkgs.lib,
|
||||||
|
}:
|
||||||
let
|
let
|
||||||
certs = import ./common/acme/server/snakeoil-certs.nix;
|
certs = import ./common/acme/server/snakeoil-certs.nix;
|
||||||
domain = certs.domain;
|
domain = certs.domain;
|
||||||
|
makeTest = import ./make-test-python.nix;
|
||||||
|
mkTestName =
|
||||||
|
pkg: "${pkg.pname}_${pkg.version}";
|
||||||
|
stalwartPackages = {
|
||||||
|
inherit (pkgs) stalwart-mail_0_6 stalwart-mail;
|
||||||
|
};
|
||||||
|
stalwartAtLeast = lib.versionAtLeast;
|
||||||
|
makeStalwartTest =
|
||||||
|
{
|
||||||
|
package,
|
||||||
|
name ? mkTestName package,
|
||||||
|
}:
|
||||||
|
makeTest {
|
||||||
|
inherit name;
|
||||||
|
meta.maintainers = with lib.maintainers; [
|
||||||
|
happysalada pacien onny
|
||||||
|
];
|
||||||
|
|
||||||
in import ./make-test-python.nix ({ lib, ... }: {
|
nodes.machine = { lib, ... }: {
|
||||||
name = "stalwart-mail";
|
|
||||||
|
|
||||||
nodes.main = { pkgs, ... }: {
|
|
||||||
security.pki.certificateFiles = [ certs.ca.cert ];
|
security.pki.certificateFiles = [ certs.ca.cert ];
|
||||||
|
|
||||||
services.stalwart-mail = {
|
services.stalwart-mail = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
inherit package;
|
||||||
settings = {
|
settings = {
|
||||||
server.hostname = domain;
|
server.hostname = domain;
|
||||||
|
|
||||||
certificate."snakeoil" = {
|
# TODO: Remove backwards compatibility as soon as we drop legacy version 0.6.0
|
||||||
cert = "file://${certs.${domain}.cert}";
|
certificate."snakeoil" = let
|
||||||
private-key = "file://${certs.${domain}.key}";
|
certPath = if stalwartAtLeast package.version "0.7.0" then "%{file://${certs.${domain}.cert}}%" else "file://${certs.${domain}.cert}";
|
||||||
|
keyPath = if stalwartAtLeast package.version "0.7.0" then "%{file:${certs.${domain}.key}}%" else "file://${certs.${domain}.key}";
|
||||||
|
in {
|
||||||
|
cert = certPath;
|
||||||
|
private-key = keyPath;
|
||||||
};
|
};
|
||||||
|
|
||||||
server.tls = {
|
server.tls = {
|
||||||
@ -40,8 +66,6 @@ in import ./make-test-python.nix ({ lib, ... }: {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
resolver.public-suffix = [ ]; # do not fetch from web in sandbox
|
|
||||||
|
|
||||||
session.auth.mechanisms = "[plain]";
|
session.auth.mechanisms = "[plain]";
|
||||||
session.auth.directory = "'in-memory'";
|
session.auth.directory = "'in-memory'";
|
||||||
storage.directory = "in-memory";
|
storage.directory = "in-memory";
|
||||||
@ -51,15 +75,16 @@ in import ./make-test-python.nix ({ lib, ... }: {
|
|||||||
|
|
||||||
directory."in-memory" = {
|
directory."in-memory" = {
|
||||||
type = "memory";
|
type = "memory";
|
||||||
principals = [
|
# TODO: Remove backwards compatibility as soon as we drop legacy version 0.6.0
|
||||||
|
principals = let
|
||||||
|
condition = if stalwartAtLeast package.version "0.7.0" then "class" else "type";
|
||||||
|
in builtins.map (p: p // { ${condition} = "individual"; }) [
|
||||||
{
|
{
|
||||||
type = "individual";
|
|
||||||
name = "alice";
|
name = "alice";
|
||||||
secret = "foobar";
|
secret = "foobar";
|
||||||
email = [ "alice@${domain}" ];
|
email = [ "alice@${domain}" ];
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
type = "individual";
|
|
||||||
name = "bob";
|
name = "bob";
|
||||||
secret = "foobar";
|
secret = "foobar";
|
||||||
email = [ "bob@${domain}" ];
|
email = [ "bob@${domain}" ];
|
||||||
@ -105,18 +130,18 @@ in import ./make-test-python.nix ({ lib, ... }: {
|
|||||||
assert msg[0][1].strip() == b'This is a test message.'
|
assert msg[0][1].strip() == b'This is a test message.'
|
||||||
'')
|
'')
|
||||||
];
|
];
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
testScript = /* python */ ''
|
testScript = ''
|
||||||
main.wait_for_unit("stalwart-mail.service")
|
start_all()
|
||||||
main.wait_for_open_port(587)
|
machine.wait_for_unit("stalwart-mail.service")
|
||||||
main.wait_for_open_port(143)
|
machine.wait_for_open_port(587)
|
||||||
|
machine.wait_for_open_port(143)
|
||||||
|
|
||||||
main.succeed("test-smtp-submission")
|
machine.succeed("test-smtp-submission")
|
||||||
main.succeed("test-imap-read")
|
machine.succeed("test-imap-read")
|
||||||
'';
|
'';
|
||||||
|
|
||||||
meta = {
|
|
||||||
maintainers = with lib.maintainers; [ happysalada pacien ];
|
|
||||||
};
|
};
|
||||||
})
|
in
|
||||||
|
lib.mapAttrs (_: package: makeStalwartTest { inherit package; }) stalwartPackages
|
||||||
|
Loading…
Reference in New Issue
Block a user