server-config/tests/list-usb-drives.nix

47 lines
1.2 KiB
Nix

{
config,
lib,
pkgs,
inputs,
...
}:
let
# Create pkgs with list-usb-drives overlay
testPkgs = import inputs.nixpkgs {
system = pkgs.system;
overlays = [ (import ../overlays.nix) ];
};
in
testPkgs.testers.runNixOSTest {
name = "list-usb-drives test";
nodes.machine =
{ pkgs, ... }:
{
environment.systemPackages = [
testPkgs.list-usb-drives
];
};
testScript = ''
start_all()
machine.wait_for_unit("multi-user.target")
# Create mock USB device symlinks
machine.succeed("mkdir -p /tmp/mock-by-id")
machine.succeed("touch /tmp/mock-by-id/usb-drive1-0:0")
machine.succeed("touch /tmp/mock-by-id/usb-drive2-0:1")
machine.succeed("touch /tmp/mock-by-id/usb-drive1-0:0-part1") # Should be filtered out
# Test with mock data
mock_data = "drive1:Model1 Serial1|drive2:Model2 Serial2"
output = machine.succeed(f"LIST_USB_DRIVES_DISK_DIR=/tmp/mock-by-id LIST_USB_DRIVES_TEST_MODE=1 LIST_USB_DRIVES_MOCK_DATA='{mock_data}' list-usb-drives")
# Expected exact output
expected = 'DRIVE BAY\nModel1_Serial1 0"\nModel2_Serial2 1"\n'
assert output == expected
print(" Mock USB device test passed")
'';
}