about summary refs log tree commit diff
path: root/nixos/tests/mutable-users.nix
diff options
context:
space:
mode:
authorJanne Heß <janne@hess.ooo>2021-09-03 17:21:36 +0200
committerJanne Heß <janne@hess.ooo>2021-09-07 10:30:42 +0200
commita851b4d20ee0dad33395f85a092df47ac9b1cc3e (patch)
treef865c0ea3d15711bdb821f04dc818b9e1703ad71 /nixos/tests/mutable-users.nix
parent315673040200723568c562b68550a2f8b4fe6e6a (diff)
nixos/users-groups: Add dry mode
Diffstat (limited to 'nixos/tests/mutable-users.nix')
-rw-r--r--nixos/tests/mutable-users.nix28
1 files changed, 28 insertions, 0 deletions
diff --git a/nixos/tests/mutable-users.nix b/nixos/tests/mutable-users.nix
index e3f002d9b1988..ebe32e6487ef4 100644
--- a/nixos/tests/mutable-users.nix
+++ b/nixos/tests/mutable-users.nix
@@ -12,6 +12,7 @@ import ./make-test-python.nix ({ pkgs, ...} : {
     };
     mutable = { ... }: {
       users.mutableUsers = true;
+      users.users.dry-test.isNormalUser = true;
     };
   };
 
@@ -41,5 +42,32 @@ import ./make-test-python.nix ({ pkgs, ...} : {
             "${mutableSystem}/bin/switch-to-configuration test"
         )
         assert "/run/wrappers/" in machine.succeed("which passwd")
+
+    with subtest("dry-activation does not change files"):
+        machine.succeed('test -e /home/dry-test')  # home was created
+        machine.succeed('rm -rf /home/dry-test')
+
+        files_to_check = ['/etc/group',
+                          '/etc/passwd',
+                          '/etc/shadow',
+                          '/etc/subuid',
+                          '/etc/subgid',
+                          '/var/lib/nixos/uid-map',
+                          '/var/lib/nixos/gid-map',
+                          '/var/lib/nixos/declarative-groups',
+                          '/var/lib/nixos/declarative-users'
+                         ]
+        expected_hashes = {}
+        expected_stats = {}
+        for file in files_to_check:
+            expected_hashes[file] = machine.succeed(f"sha256sum {file}")
+            expected_stats[file] = machine.succeed(f"stat {file}")
+
+        machine.succeed("/run/current-system/bin/switch-to-configuration dry-activate")
+
+        machine.fail('test -e /home/dry-test')  # home was not recreated
+        for file in files_to_check:
+            assert machine.succeed(f"sha256sum {file}") == expected_hashes[file]
+            assert machine.succeed(f"stat {file}") == expected_stats[file]
   '';
 })