mirror of
https://github.com/NixOS/nixpkgs.git
synced 2026-10-02 21:10:08 +00:00
nixos/nextcloud: add test verifying that bind-mounts and special places of /var/lib/nextcloud are OK (#548403)
This commit is contained in:
@@ -136,6 +136,8 @@ let
|
||||
map callNextcloudTest (
|
||||
[
|
||||
./basic.nix
|
||||
./home-bindmount.nix
|
||||
./home-mount.nix
|
||||
./with-declarative-redis-and-secrets.nix
|
||||
./with-mysql-and-memcached.nix
|
||||
./with-postgresql-and-redis.nix
|
||||
|
||||
68
nixos/tests/nextcloud/home-bindmount.nix
Normal file
68
nixos/tests/nextcloud/home-bindmount.nix
Normal file
@@ -0,0 +1,68 @@
|
||||
{
|
||||
name,
|
||||
pkgs,
|
||||
testBase,
|
||||
system,
|
||||
...
|
||||
}:
|
||||
|
||||
with import ../../lib/testing-python.nix { inherit system pkgs; };
|
||||
runTest (
|
||||
{ lib, ... }:
|
||||
{
|
||||
inherit name;
|
||||
meta.maintainers = lib.teams.nextcloud.members;
|
||||
|
||||
imports = [ testBase ];
|
||||
|
||||
nodes.nextcloud = { pkgs, ... }: {
|
||||
# Make sure that inside our tmpfs mount an actual directory for Nextcloud exists.
|
||||
boot.initrd.systemd.tmpfiles.settings."nextcloud"."/sysroot/mnt/nextcloud".d = { };
|
||||
|
||||
boot.initrd.systemd.mounts = [
|
||||
# Create a mocked /mnt/nextcloud. Only a tmpfs here, but in reality this could e.g.
|
||||
# be the mount of a larger disk.
|
||||
{
|
||||
unitConfig.DefaultDependencies = "no";
|
||||
conflicts = [ "umount.target" ];
|
||||
wantedBy = [ "initrd.target" ];
|
||||
before = [ "systemd-tmpfiles-setup-sysroot.service" ];
|
||||
options = "x-initrd.mount";
|
||||
where = "/sysroot/mnt";
|
||||
what = "tmpfs";
|
||||
type = "tmpfs";
|
||||
}
|
||||
# Bind some directory to /var/lib/nextcloud, the place that the Nextcloud module expects
|
||||
# by default.
|
||||
{
|
||||
conflicts = [ "umount.target" ];
|
||||
wantedBy = [ "initrd.target" ];
|
||||
before = [ "systemd-tmpfiles-setup-sysroot.service" ];
|
||||
options = "x-initrd.mount,bind";
|
||||
where = "/sysroot/var/lib/nextcloud";
|
||||
what = "/sysroot/mnt/nextcloud";
|
||||
type = "none";
|
||||
}
|
||||
];
|
||||
environment.systemPackages = [
|
||||
pkgs.util-linux
|
||||
];
|
||||
services.nextcloud = {
|
||||
config.dbtype = "sqlite";
|
||||
};
|
||||
};
|
||||
|
||||
test-helpers.init = ''
|
||||
import json
|
||||
mnts = json.loads(nextcloud.succeed("findmnt /var/lib/nextcloud -J"))["filesystems"]
|
||||
t.assertEqual(1, len(mnts))
|
||||
mnt = mnts[0]
|
||||
t.assertEqual("tmpfs[/nextcloud]", mnt["source"])
|
||||
t.assertEqual("/var/lib/nextcloud", mnt["target"])
|
||||
'';
|
||||
|
||||
test-helpers.extraTests = ''
|
||||
nextcloud.succeed("test -d /mnt/nextcloud/data/root")
|
||||
'';
|
||||
}
|
||||
)
|
||||
32
nixos/tests/nextcloud/home-mount.nix
Normal file
32
nixos/tests/nextcloud/home-mount.nix
Normal file
@@ -0,0 +1,32 @@
|
||||
{
|
||||
name,
|
||||
pkgs,
|
||||
testBase,
|
||||
system,
|
||||
...
|
||||
}:
|
||||
|
||||
with import ../../lib/testing-python.nix { inherit system pkgs; };
|
||||
runTest (
|
||||
{ config, lib, ... }:
|
||||
{
|
||||
inherit name;
|
||||
meta.maintainers = lib.teams.nextcloud.members;
|
||||
|
||||
imports = [ testBase ];
|
||||
|
||||
nodes.nextcloud = { pkgs, ... }: {
|
||||
system.activationScripts.nc-mock-mount = {
|
||||
deps = [ "users" ];
|
||||
text = ''
|
||||
${pkgs.coreutils}/bin/mkdir -p /mnt
|
||||
${pkgs.util-linux}/bin/mount -t tmpfs tmpfs /mnt
|
||||
'';
|
||||
};
|
||||
services.nextcloud = {
|
||||
config.dbtype = "sqlite";
|
||||
home = "/mnt/nextcloud";
|
||||
};
|
||||
};
|
||||
}
|
||||
)
|
||||
Reference in New Issue
Block a user