1import ./make-test-python.nix ({ pkgs, lib, ... }: {
2 name = "systemd-userdbd";
3 nodes.machine = { config, pkgs, ... }: {
4 services.userdbd.enable = true;
5
6 users.users.test-user-nss = {
7 isNormalUser = true;
8 };
9
10 environment.etc."userdb/test-user-dropin.user".text = builtins.toJSON {
11 userName = "test-user-dropin";
12 };
13
14 environment.systemPackages = with pkgs; [ libvarlink ];
15 };
16 testScript = ''
17 import json
18 from shlex import quote
19
20 def getUserRecord(name):
21 Interface = "unix:/run/systemd/userdb/io.systemd.Multiplexer/io.systemd.UserDatabase"
22 payload = json.dumps({
23 "service": "io.systemd.Multiplexer",
24 "userName": name
25 })
26 return json.loads(machine.succeed(f"varlink call {Interface}.GetUserRecord {quote(payload)}"))
27
28 machine.wait_for_unit("systemd-userdbd.socket")
29 getUserRecord("test-user-nss")
30 getUserRecord("test-user-dropin")
31 '';
32})