57 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
		
		
			
		
	
	
			57 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
|   | import ../make-test.nix ({ pkgs, ...}: let | ||
|  |   adminpass = "notproduction"; | ||
|  |   adminuser = "root"; | ||
|  | in { | ||
|  |   name = "nextcloud-basic"; | ||
|  |   meta = with pkgs.stdenv.lib.maintainers; { | ||
|  |     maintainers = [ globin eqyiel ]; | ||
|  |   }; | ||
|  | 
 | ||
|  |   nodes = { | ||
|  |     # The only thing the client needs to do is download a file. | ||
|  |     client = { ... }: {}; | ||
|  | 
 | ||
|  |     nextcloud = { config, pkgs, ... }: { | ||
|  |       networking.firewall.allowedTCPPorts = [ 80 ]; | ||
|  | 
 | ||
|  |       services.nextcloud = { | ||
|  |         enable = true; | ||
|  |         nginx.enable = true; | ||
|  |         hostName = "nextcloud"; | ||
|  |         config = { | ||
|  |           # Don't inherit adminuser since "root" is supposed to be the default | ||
|  |           inherit adminpass; | ||
|  |         }; | ||
|  |       }; | ||
|  |     }; | ||
|  |   }; | ||
|  | 
 | ||
|  |   testScript = let | ||
|  |     withRcloneEnv = pkgs.writeScript "with-rclone-env" ''
 | ||
|  |       #!${pkgs.stdenv.shell} | ||
|  |       export RCLONE_CONFIG_NEXTCLOUD_TYPE=webdav | ||
|  |       export RCLONE_CONFIG_NEXTCLOUD_URL="http://nextcloud/remote.php/webdav/" | ||
|  |       export RCLONE_CONFIG_NEXTCLOUD_VENDOR="nextcloud" | ||
|  |       export RCLONE_CONFIG_NEXTCLOUD_USER="${adminuser}" | ||
|  |       export RCLONE_CONFIG_NEXTCLOUD_PASS="$(${pkgs.rclone}/bin/rclone obscure ${adminpass})" | ||
|  |       "''${@}" | ||
|  |     '';
 | ||
|  |     copySharedFile = pkgs.writeScript "copy-shared-file" ''
 | ||
|  |       #!${pkgs.stdenv.shell} | ||
|  |       echo 'hi' | ${withRcloneEnv} ${pkgs.rclone}/bin/rclone rcat nextcloud:test-shared-file | ||
|  |     '';
 | ||
|  | 
 | ||
|  |     diffSharedFile = pkgs.writeScript "diff-shared-file" ''
 | ||
|  |       #!${pkgs.stdenv.shell} | ||
|  |       diff <(echo 'hi') <(${pkgs.rclone}/bin/rclone cat nextcloud:test-shared-file) | ||
|  |     '';
 | ||
|  |   in ''
 | ||
|  |     startAll(); | ||
|  |     $nextcloud->waitForUnit("multi-user.target"); | ||
|  |     $nextcloud->succeed("curl -sSf http://nextcloud/login"); | ||
|  |     $nextcloud->succeed("${withRcloneEnv} ${copySharedFile}"); | ||
|  |     $client->waitForUnit("multi-user.target"); | ||
|  |     $client->succeed("${withRcloneEnv} ${diffSharedFile}"); | ||
|  |   '';
 | ||
|  | }) |