Compare commits
2 commits
0a8af07b08
...
a072ba0dd7
Author | SHA1 | Date | |
---|---|---|---|
|
a072ba0dd7 | ||
|
b295ae9396 |
3 changed files with 73 additions and 1 deletions
|
@ -3,6 +3,7 @@
|
||||||
config,
|
config,
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
|
options,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
|
|
||||||
|
@ -30,6 +31,10 @@ with lib;
|
||||||
"nextcloud30"
|
"nextcloud30"
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
adminpassFile = options.services.nextcloud.config.adminpassFile // {
|
||||||
|
default = config.sops.secrets."nextcloud/admin".path;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
@ -59,7 +64,7 @@ with lib;
|
||||||
database.createLocally = true;
|
database.createLocally = true;
|
||||||
|
|
||||||
config = {
|
config = {
|
||||||
adminpassFile = config.sops.secrets."nextcloud/admin".path;
|
inherit (cfg) adminpassFile;
|
||||||
adminuser = "root";
|
adminuser = "root";
|
||||||
dbtype = "pgsql";
|
dbtype = "pgsql";
|
||||||
};
|
};
|
||||||
|
|
35
nixos-modules/cloud/test.nix
Normal file
35
nixos-modules/cloud/test.nix
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
{
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
# Note: This extends the default configuration from ${self}/checks/nixos-modules
|
||||||
|
nodes.webserver =
|
||||||
|
{ pkgs, lib, ... }:
|
||||||
|
let
|
||||||
|
inherit (pkgs) curl gnugrep;
|
||||||
|
inherit (lib) mkForce genAttrs const;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
qois.cloud = {
|
||||||
|
enable = true;
|
||||||
|
domain = "cloud.example.com";
|
||||||
|
package = pkgs.nextcloud31;
|
||||||
|
adminpassFile = (pkgs.writeText "nextcloud-test-adminpass-file" "super secret password").outPath;
|
||||||
|
};
|
||||||
|
|
||||||
|
qois.postgresql.package = pkgs.postgresql;
|
||||||
|
sops.secrets = mkForce { };
|
||||||
|
|
||||||
|
# Disable TLS services
|
||||||
|
services.nginx.virtualHosts = genAttrs [ "cloud.example.com" ] (const {
|
||||||
|
forceSSL = mkForce false;
|
||||||
|
enableACME = mkForce false;
|
||||||
|
});
|
||||||
|
|
||||||
|
# Test environment
|
||||||
|
environment.systemPackages = [
|
||||||
|
curl
|
||||||
|
gnugrep
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
32
nixos-modules/cloud/test.py
Normal file
32
nixos-modules/cloud/test.py
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
def test(subtest, webserver):
|
||||||
|
webserver.wait_for_unit("nginx")
|
||||||
|
webserver.wait_for_open_port(80)
|
||||||
|
|
||||||
|
# Helpers
|
||||||
|
def curl_variable_test(node, variable, expected, url):
|
||||||
|
value = node.succeed(
|
||||||
|
f"curl -s --no-location -o /dev/null -w '%{{{variable}}}' '{url}'"
|
||||||
|
)
|
||||||
|
assert value == expected, (
|
||||||
|
f"expected {variable} to be '{expected}' but got '{value}'"
|
||||||
|
)
|
||||||
|
|
||||||
|
def expect_http_code(node, code, url):
|
||||||
|
curl_variable_test(node, "http_code", code, url)
|
||||||
|
|
||||||
|
def expect_http_content_contains(node, expectedContentSnippet, url):
|
||||||
|
content = node.succeed(f"curl --no-location --silent '{url}'")
|
||||||
|
assert expectedContentSnippet in content, f"""
|
||||||
|
expected in content:
|
||||||
|
{expectedContentSnippet}
|
||||||
|
at {url} but got following content:
|
||||||
|
{content}
|
||||||
|
"""
|
||||||
|
|
||||||
|
# Tests
|
||||||
|
with subtest("website is successfully served on cloud.example.com"):
|
||||||
|
webserver.succeed("grep cloud.example.com /etc/hosts")
|
||||||
|
expect_http_code(webserver, "200", "http://cloud.example.com")
|
||||||
|
expect_http_content_contains(
|
||||||
|
webserver, "Log in to cloud.qoo.is", "http://docs.example.com"
|
||||||
|
)
|
Loading…
Add table
Add a link
Reference in a new issue