summary refs log tree commit diff
path: root/nixos/tests/udisks2.nix
diff options
context:
space:
mode:
authorEelco Dolstra <eelco.dolstra@logicblox.com>2014-04-19 14:37:05 +0200
committerEelco Dolstra <eelco.dolstra@logicblox.com>2014-04-19 14:37:05 +0200
commit894e2dfb258bfefb4080c89f94ac6cf253174ec6 (patch)
treeee0165fed2ab230dfd3e932993a431afaf88c528 /nixos/tests/udisks2.nix
parentfa9ed04997cc07d0782b79ec1929af2ac24e0045 (diff)
downloadnixpkgs-894e2dfb258bfefb4080c89f94ac6cf253174ec6.tar
nixpkgs-894e2dfb258bfefb4080c89f94ac6cf253174ec6.tar.gz
nixpkgs-894e2dfb258bfefb4080c89f94ac6cf253174ec6.tar.bz2
nixpkgs-894e2dfb258bfefb4080c89f94ac6cf253174ec6.tar.lz
nixpkgs-894e2dfb258bfefb4080c89f94ac6cf253174ec6.tar.xz
nixpkgs-894e2dfb258bfefb4080c89f94ac6cf253174ec6.tar.zst
nixpkgs-894e2dfb258bfefb4080c89f94ac6cf253174ec6.zip
Add a test for udisks2
Diffstat (limited to 'nixos/tests/udisks2.nix')
-rw-r--r--nixos/tests/udisks2.nix56
1 files changed, 56 insertions, 0 deletions
diff --git a/nixos/tests/udisks2.nix b/nixos/tests/udisks2.nix
new file mode 100644
index 00000000000..e0c57d7c34d
--- /dev/null
+++ b/nixos/tests/udisks2.nix
@@ -0,0 +1,56 @@
+import ./make-test.nix ({ pkgs, ... }:
+
+let
+
+  stick = pkgs.fetchurl {
+    url = http://nixos.org/~eelco/nix/udisks-test.img.xz;
+    sha256 = "0was1xgjkjad91nipzclaz5biv3m4b2nk029ga6nk7iklwi19l8b";
+  };
+
+in
+
+{
+
+  machine =
+    { config, pkgs, ... }:
+    { services.udisks2.enable = true;
+      imports = [ ./common/user-account.nix ];
+
+      security.polkit.extraConfig =
+        ''
+          polkit.addRule(function(action, subject) {
+            if (subject.user == "alice") return "yes";
+          });
+        '';
+    };
+
+  testScript =
+    ''
+      my $stick = $machine->stateDir . "/usbstick.img";
+      system("xz -d < ${stick} > $stick") == 0 or die;
+
+      $machine->succeed("udisksctl info -b /dev/vda >&2");
+      $machine->fail("udisksctl info -b /dev/sda1");
+
+      # Attach a USB stick and wait for it to show up.
+      $machine->sendMonitorCommand("usb_add disk:$stick");
+      $machine->waitUntilSucceeds("udisksctl info -b /dev/sda1");
+      $machine->succeed("udisksctl info -b /dev/sda1 | grep 'IdLabel:.*USBSTICK'");
+
+      # Mount the stick as a non-root user and do some stuff with it.
+      $machine->succeed("su - alice -c 'udisksctl info -b /dev/sda1'");
+      $machine->succeed("su - alice -c 'udisksctl mount -b /dev/sda1'");
+      $machine->succeed("su - alice -c 'cat /run/media/alice/USBSTICK/test.txt'") =~ /Hello World/ or die;
+      $machine->succeed("su - alice -c 'echo foo > /run/media/alice/USBSTICK/bar.txt'");
+
+      # Unmounting the stick should make the mountpoint disappear.
+      $machine->succeed("su - alice -c 'udisksctl unmount -b /dev/sda1'");
+      $machine->fail("[ -d /run/media/alice/USBSTICK ]");
+
+      # Remove the USB stick.
+      $machine->sendMonitorCommand("usb_del 0.3"); # FIXME
+      $machine->waitUntilFails("udisksctl info -b /dev/sda1");
+      $machine->fail("[ -e /dev/sda ]");
+    '';
+
+})