python312Packages.millheater: 0.11.8 -> 0.12.0
[NixPkgs.git] / nixos / tests / nextcloud / basic.nix
blobbea08e32311046cac4aedbb1c6576355a2403c26
1 { name, pkgs, testBase, system,... }:
3 with import ../../lib/testing-python.nix { inherit system pkgs; };
4 runTest ({ config, ... }: {
5   inherit name;
6   meta = with pkgs.lib.maintainers; {
7     maintainers = [ globin eqyiel ma27 ];
8   };
10   imports = [ testBase ];
12   nodes = {
13     # The only thing the client needs to do is download a file.
14     client = { ... }: {
15       services.davfs2.enable = true;
16       systemd.tmpfiles.settings.nextcloud = {
17         "/tmp/davfs2-secrets"."f+" = {
18           mode = "0600";
19           argument = "http://nextcloud/remote.php/dav/files/${config.adminuser} ${config.adminuser} ${config.adminpass}";
20         };
21       };
22       virtualisation.fileSystems = {
23         "/mnt/dav" = {
24           device = "http://nextcloud/remote.php/dav/files/${config.adminuser}";
25           fsType = "davfs";
26           options = let
27             davfs2Conf = (pkgs.writeText "davfs2.conf" "secrets /tmp/davfs2-secrets");
28           in [ "conf=${davfs2Conf}" "x-systemd.automount" "noauto"];
29         };
30       };
31     };
33     nextcloud = { config, pkgs, ... }: {
34       systemd.tmpfiles.rules = [
35         "d /var/lib/nextcloud-data 0750 nextcloud nginx - -"
36       ];
38       services.nextcloud = {
39         enable = true;
40         datadir = "/var/lib/nextcloud-data";
41         autoUpdateApps = {
42           enable = true;
43           startAt = "20:00";
44         };
45         phpExtraExtensions = all: [ all.bz2 ];
46       };
48       specialisation.withoutMagick.configuration = {
49         services.nextcloud.enableImagemagick = false;
50       };
51     };
52   };
54   test-helpers.extraTests = { nodes, ... }: let
55     findInClosure = what: drv: pkgs.runCommand "find-in-closure" { exportReferencesGraph = [ "graph" drv ]; inherit what; } ''
56       test -e graph
57       grep "$what" graph >$out || true
58     '';
59     nexcloudWithImagick = findInClosure "imagick" nodes.nextcloud.system.build.vm;
60     nextcloudWithoutImagick = findInClosure "imagick" nodes.nextcloud.specialisation.withoutMagick.configuration.system.build.vm;
61   in ''
62     with subtest("File is in proper nextcloud home"):
63         nextcloud.succeed("test -f ${nodes.nextcloud.services.nextcloud.datadir}/data/root/files/test-shared-file")
65     with subtest("Closure checks"):
66         assert open("${nexcloudWithImagick}").read() != ""
67         assert open("${nextcloudWithoutImagick}").read() == ""
69     with subtest("Davfs2"):
70         assert "hi" in client.succeed("cat /mnt/dav/test-shared-file")
72     with subtest("Ensure SSE is disabled by default"):
73         nextcloud.succeed("grep -vE '^HBEGIN:oc_encryption_module' /var/lib/nextcloud-data/data/root/files/test-shared-file")
74   '';