mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-06-09 19:13:26 +03:00

Keepass tries to commit data to the service ca.desrt.dconf, which leads to many warnings in the test log if dconf is not enabled.
93 lines
2.5 KiB
Nix
93 lines
2.5 KiB
Nix
{ pkgs, ... }:
|
|
|
|
{
|
|
name = "keepassxc";
|
|
meta = with pkgs.lib.maintainers; {
|
|
maintainers = [ turion ];
|
|
timeout = 1800;
|
|
};
|
|
|
|
nodes.machine =
|
|
{ ... }:
|
|
|
|
{
|
|
imports = [
|
|
./common/user-account.nix
|
|
./common/x11.nix
|
|
];
|
|
|
|
services.xserver.enable = true;
|
|
programs.dconf.enable = true;
|
|
|
|
# for better OCR
|
|
environment.etc."icewm/prefoverride".text = ''
|
|
ColorActiveTitleBar = "rgb:FF/FF/FF"
|
|
'';
|
|
|
|
# Regression test for https://github.com/NixOS/nixpkgs/issues/163482
|
|
qt = {
|
|
enable = true;
|
|
platformTheme = "gnome";
|
|
style = "adwaita-dark";
|
|
};
|
|
|
|
test-support.displayManager.auto.user = "alice";
|
|
environment.systemPackages = with pkgs; [
|
|
keepassxc
|
|
xdotool
|
|
];
|
|
};
|
|
|
|
enableOCR = true;
|
|
|
|
testScript =
|
|
{ nodes, ... }:
|
|
let
|
|
aliceDo = cmd: ''machine.succeed("su - alice -c '${cmd}' >&2 &");'';
|
|
in
|
|
''
|
|
with subtest("Ensure X starts"):
|
|
start_all()
|
|
machine.wait_for_x()
|
|
|
|
with subtest("Can create database and entry with CLI"):
|
|
${aliceDo "keepassxc-cli db-create --set-key-file foo.keyfile foo.kdbx"}
|
|
${aliceDo "keepassxc-cli add --no-password -k foo.keyfile foo.kdbx bar"}
|
|
|
|
with subtest("Ensure KeePassXC starts"):
|
|
# start KeePassXC window
|
|
${aliceDo "keepassxc >&2 &"}
|
|
|
|
machine.wait_for_text("KeePassXC ${pkgs.keepassxc.version}")
|
|
machine.screenshot("KeePassXC")
|
|
|
|
with subtest("Can open existing database"):
|
|
machine.send_key("ctrl-o")
|
|
machine.sleep(5)
|
|
# Regression #163482: keepassxc did not crash
|
|
machine.succeed("ps -e | grep keepassxc")
|
|
machine.wait_for_text("Open database")
|
|
machine.send_key("ret")
|
|
|
|
# Wait for the enter password screen to appear.
|
|
machine.wait_for_text("/home/alice/foo.kdbx")
|
|
|
|
# Click on "I have key file" button to open keyfile dialog
|
|
machine.send_key("tab")
|
|
machine.send_key("tab")
|
|
machine.send_key("tab")
|
|
machine.send_key("ret")
|
|
|
|
# Select keyfile
|
|
machine.wait_for_text("Select key file")
|
|
machine.send_chars("/home/alice/foo.keyfile")
|
|
machine.send_key("ret")
|
|
|
|
# Open database
|
|
machine.wait_for_text("foo.kdbx \\[Locked] - KeePassXC")
|
|
machine.send_key("ret")
|
|
|
|
# Database is unlocked (doesn't have "[Locked]" in the title anymore)
|
|
machine.wait_for_text("foo.kdbx - KeePassXC")
|
|
'';
|
|
}
|