diff --git a/flake.nix b/flake.nix index 7bb6e17..1f239de 100644 --- a/flake.nix +++ b/flake.nix @@ -242,11 +242,9 @@ inherit pkgs; tests = mergeTests (importFiles [ - ./test/modules/arr.nix ./test/modules/davfs.nix # TODO: Make this not use IFD ./test/modules/lib.nix - ./test/modules/nginx.nix ]); }; diff --git a/test/modules/arr.nix b/test/modules/arr.nix deleted file mode 100644 index 262909a..0000000 --- a/test/modules/arr.nix +++ /dev/null @@ -1,174 +0,0 @@ -{ pkgs, lib, ... }: -let - anyOpt = default: lib.mkOption { - type = lib.types.anything; - inherit default; - }; - - testConfig = m: - let - cfg = (lib.evalModules { - specialArgs = { inherit pkgs; }; - modules = [ - { - options = { - systemd = anyOpt {}; - shb.nginx = anyOpt {}; - users = anyOpt {}; - services.nginx = anyOpt {}; - services.bazarr = anyOpt {}; - services.jackett = anyOpt {}; - services.lidarr = anyOpt {}; - services.radarr = anyOpt {}; - services.readarr = anyOpt {}; - services.sonarr = anyOpt {}; - }; - } - ../../modules/services/arr.nix - m - ]; - }).config; - - systemdRedacted = lib.filterAttrsRecursive (n: v: n != "preStart") cfg.systemd; - in { - inherit (cfg) services users; - systemd = systemdRedacted; - shb = { inherit (cfg.shb) nginx; }; - }; -in -{ - testArrNoOptions = { - expected = { - systemd = {}; - shb.nginx = {}; - users = {}; - services.nginx = {}; - services.bazarr = {}; - services.jackett = {}; - services.lidarr = {}; - services.radarr = {}; - services.readarr = {}; - services.sonarr = {}; - }; - - expr = testConfig {}; - }; - - testRadarr = { - expected = { - users = {}; - systemd.services.radarr = {}; - shb.nginx.vhosts = [ - { - autheliaRules = [ - { - domain = "radarr.example.com"; - policy = "bypass"; - resources = [ - "^/api.*" - "^/feed.*" - ]; - } - { - domain = "radarr.example.com"; - policy = "two_factor"; - subject = [ - "group:arr_user" - ]; - } - ]; - domain = "example.com"; - authEndpoint = "https://oidc.example.com"; - subdomain = "radarr"; - upstream = "http://127.0.0.1:7878"; - ssl = null; - } - ]; - services.nginx.enable = true; - services.bazarr = {}; - services.jackett = {}; - services.lidarr = {}; - services.radarr = { - enable = true; - dataDir = "/var/lib/radarr"; - user = "radarr"; - group = "radarr"; - }; - services.readarr = {}; - services.sonarr = {}; - }; - expr = testConfig { - services.radarr.user = "radarr"; - services.radarr.group = "radarr"; - - shb.arr.radarr = { - subdomain = "radarr"; - domain = "example.com"; - enable = true; - authEndpoint = "https://oidc.example.com"; - settings = { - ApiKey.source = pkgs.writeText "key" "/run/radarr/apikey"; - }; - }; - }; - }; - - testRadarrWithBackup = { - expected = { - users = {}; - systemd.services.radarr = {}; - shb.nginx.vhosts = [ - { - autheliaRules = [ - { - domain = "radarr.example.com"; - policy = "bypass"; - resources = [ - "^/api.*" - "^/feed.*" - ]; - } - { - domain = "radarr.example.com"; - policy = "two_factor"; - subject = [ - "group:arr_user" - ]; - } - ]; - domain = "example.com"; - authEndpoint = "https://oidc.example.com"; - subdomain = "radarr"; - upstream = "http://127.0.0.1:7878"; - ssl = null; - } - ]; - services.nginx.enable = true; - services.bazarr = {}; - services.jackett = {}; - services.lidarr = {}; - services.radarr = { - enable = true; - dataDir = "/var/lib/radarr"; - user = "radarr"; - group = "radarr"; - }; - services.readarr = {}; - services.sonarr = {}; - }; - expr = testConfig { - services.radarr.user = "radarr"; - services.radarr.group = "radarr"; - - shb.arr.radarr = { - subdomain = "radarr"; - domain = "example.com"; - enable = true; - authEndpoint = "https://oidc.example.com"; - settings = { - ApiKey.source = pkgs.writeText "key" "/run/radarr/apikey"; - }; - }; - }; - }; -} diff --git a/test/modules/nginx.nix b/test/modules/nginx.nix deleted file mode 100644 index 1b34ad5..0000000 --- a/test/modules/nginx.nix +++ /dev/null @@ -1,77 +0,0 @@ -{ pkgs, lib, ... }: -let - anyOpt = default: lib.mkOption { - type = lib.types.anything; - inherit default; - }; - - testConfig = m: - let - cfg = (lib.evalModules { - specialArgs = { inherit pkgs; }; - modules = [ - { - options = { - assertions = anyOpt []; - networking = anyOpt {}; - security = anyOpt {}; - services = anyOpt {}; - shb.authelia = anyOpt {}; - systemd = anyOpt {}; - users = anyOpt {}; - }; - } - ../../modules/blocks/ssl.nix - ../../modules/blocks/nginx.nix - m - ]; - }).config; - in lib.attrsets.filterAttrsRecursive (n: v: n != "extraConfig") { - services = { inherit (cfg.services) nginx; }; - shb = { inherit (cfg.shb) nginx; }; - }; -in -{ - testNoOptions = { - expected = { - shb.nginx = { - accessLog = false; - vhosts = []; - debugLog = false; - }; - services.nginx.enable = true; - }; - expr = testConfig {}; - }; - - testAuth = { - expected = { - nginx.enable = true; - nginx.virtualHosts."my.example.com" = { - forceSSL = true; - locations."/" = {}; - locations."/authelia" = {}; - sslCertificate = "/var/lib/certs/selfsigned/example.com.cert"; - sslCertificateKey = "/var/lib/certs/selfsigned/example.com.key"; - }; - }; - expr = (testConfig ({ config, ... }: { - shb.certs.cas.selfsigned.myca = {}; - - shb.certs.certs.selfsigned."example.com" = { - ca = config.shb.certs.cas.selfsigned.myca; - - domain = "example.com"; - }; - - shb.nginx.vhosts = [{ - subdomain = "my"; - domain = "example.com"; - ssl = config.shb.certs.certs.selfsigned."example.com"; - upstream = "http://127.0.0.1:1234"; - authEndpoint = "hello"; - autheliaRules = [{}]; - }]; - })).services; - }; -}