]> git.scottworley.com Git - syncthing-autoregister/blobdiff - tests/automatic-enrollment.nix
Copy a's file over to b
[syncthing-autoregister] / tests / automatic-enrollment.nix
index 92c90b72d0ba90b795061e9907b4d63e6357bc07..4ff3670a3df0c35a53522b48f2c3ffe1730cfaa3 100644 (file)
@@ -1,5 +1,6 @@
 import <nixpkgs/nixos/tests/make-test-python.nix> ({ pkgs, lib, ... }:
   let
+    deviceIDFilename = "/tmp/syncthing-auto-register-test-device-ids.nix";
     configuration = pkgs.writeText "configuration.nix" ''
       { pkgs, ... }: {
         imports = [
@@ -11,38 +12,75 @@ import <nixpkgs/nixos/tests/make-test-python.nix> ({ pkgs, lib, ... }:
           openDefaultPorts = true;
           autoRegister = {
             enable = true;
-            path = "/tmp/syncthing-auto-register-test-device-ids.nix";
+            path = "${deviceIDFilename}";
           };
         };
         environment.systemPackages = with pkgs; [ nix ];
       }
     '';
-    configurationWithDeviceIDs = pkgs.writeText "configuration-with-device-ids.nix" ''
+    initialConfiguration = pkgs.writeText "initial-configuration.nix" ''
       {
-        imports = [
-          ${configuration}
-          /tmp/syncthing-auto-register-test-device-ids.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",
-      )
-      machine.wait_for_unit("syncthing-autoregister.service")
-      machine.copy_from_host(
-          "${configurationWithDeviceIDs}",
-          "/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 "<nixos/nixos>" config.services.syncthing.declarative.devices.%s.id | wc -c)" == 63 ))'
+              % expectedDevice
+          )
+
+
+      configurationWithDeviceIDs = (
+          "${configurationWithDeviceIDs}"
       )
-      machine.succeed(
-          '(( "$(nix eval --raw -f "<nixos/nixos>" config.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")
     '';
   })