X-Git-Url: http://git.scottworley.com/syncthing-autoregister/blobdiff_plain/64eaba73071fd33f2c824b9d5bc38f3a113eeb90..fc02e299c578d5c3fc581426b5f84aae244cbb87:/tests/automatic-enrollment.nix?ds=inline diff --git a/tests/automatic-enrollment.nix b/tests/automatic-enrollment.nix index 870e6ee..4ff3670 100644 --- a/tests/automatic-enrollment.nix +++ b/tests/automatic-enrollment.nix @@ -1,5 +1,6 @@ import ({ pkgs, lib, ... }: let + deviceIDFilename = "/tmp/syncthing-auto-register-test-device-ids.nix"; configuration = pkgs.writeText "configuration.nix" '' { pkgs, ... }: { imports = [ @@ -11,26 +12,75 @@ import ({ pkgs, lib, ... }: openDefaultPorts = true; autoRegister = { enable = true; - path = "/tmp/syncthing-auto-register-test-device-ids.nix"; + path = "${deviceIDFilename}"; }; }; environment.systemPackages = with pkgs; [ nix ]; } ''; + initialConfiguration = pkgs.writeText "initial-configuration.nix" '' + { + imports = [ "${configuration}" ]; + system.activationScripts.installInitialConfiguration = { + text = ''' + mkdir -p /etc/nixos + cp "${configuration}" /etc/nixos/configuration.nix + '''; + deps = [ ]; + }; + } + ''; + configurationWithDeviceIDs = + pkgs.writeText "configuration-with-device-ids.nix" '' + { + imports = [ + ${configuration} + ${deviceIDFilename} + ]; + } + ''; in { name = "syncthing"; - machine = "${configuration}"; + nodes = { + a = "${initialConfiguration}"; + b = "${initialConfiguration}"; + }; testScript = '' - machine.copy_from_host( - "${configuration}", - "/etc/nixos/configuration.nix", + import os + + + def setConfig(machine, config): + machine.copy_from_host(config, "/etc/nixos/configuration.nix") + + + def verifyDeviceIDSet(machine, expectedDevice): + machine.succeed( + '(( "$(nix eval --raw -f "" config.services.syncthing.declarative.devices.%s.id | wc -c)" == 63 ))' + % expectedDevice + ) + + + configurationWithDeviceIDs = ( + "${configurationWithDeviceIDs}" ) - machine.wait_for_unit("syncthing-autoregister.service") - machine.succeed( - '(( "$(nix eval --raw -f /tmp/syncthing-auto-register-test-device-ids.nix services.syncthing.declarative.devices.machine.id | wc -c)" == 63 ))' + + a.wait_for_unit("syncthing-autoregister.service") + setConfig(a, configurationWithDeviceIDs) + verifyDeviceIDSet(a, "a") + a.copy_from_vm("${deviceIDFilename}") + + b.copy_from_host( + os.path.join( + os.environ["out"], + os.path.basename("${deviceIDFilename}"), + ), + "${deviceIDFilename}", ) + b.succeed("chown syncthing ${deviceIDFilename}") + setConfig(b, configurationWithDeviceIDs) + verifyDeviceIDSet(b, "a") ''; })