nixpkgs/nixos/tests/nextcloud/with-mysql-and-memcached.nix
Maximilian Bosch 0b31ada92b
nixos/nextcloud: refactor tests
The tests had very much duplication and some if it was even wrong! For
instance, `withRcloneEnv` in the MySQL test didn't have the `"$@"` at
the bottom to execute commands passed to it. Because of that, the MySQL
testcase never checked whether files can be uploaded.

Since tests are just another module-system I decided to abstract away
common things by using it:

* Define a base module with
  * an empty `client` node and a `nextcloud` node with defaults
    shared among all tests.
  * rclone scripts that are used by all tests.
  * a `testScript` checking upload/download. Additional checks can be
    added via `test-helpers.extraTests`.

* Make common information such as admin user & password shared via
  options.

Also, changed the following things:

* The `name` of the final derivation also includes the Nextcloud major
  it was tested against.

* Improved the objecstore test by making sure the file was actually
  uploaded into the bucket.
2024-06-12 10:55:26 +02:00

38 lines
1.1 KiB
Nix

{ pkgs, testBase, system, ... }:
with import ../../lib/testing-python.nix { inherit system pkgs; };
runTest ({ config, ... }: {
name = "nextcloud-with-mysql-and-memcached";
meta = with pkgs.lib.maintainers; {
maintainers = [ eqyiel ];
};
imports = [ testBase ];
nodes = {
nextcloud = { config, pkgs, ... }: {
services.nextcloud = {
caching = {
apcu = true;
redis = false;
memcached = true;
};
config.dbtype = "mysql";
};
services.memcached.enable = true;
};
};
test-helpers.init = let
configureMemcached = pkgs.writeScript "configure-memcached" ''
nextcloud-occ config:system:set memcached_servers 0 0 --value 127.0.0.1 --type string
nextcloud-occ config:system:set memcached_servers 0 1 --value 11211 --type integer
nextcloud-occ config:system:set memcache.local --value '\OC\Memcache\APCu' --type string
nextcloud-occ config:system:set memcache.distributed --value '\OC\Memcache\Memcached' --type string
'';
in ''
nextcloud.succeed("${configureMemcached}")
'';
})