at master 2.0 kB view raw
1let 2 alice = "alice"; 3 bob = "bob"; 4 eve = "eve"; 5 passwd = "pass1"; 6in 7{ 8 name = "user-expiry"; 9 10 nodes = { 11 machine = { 12 users.users = { 13 ${alice} = { 14 initialPassword = passwd; 15 isNormalUser = true; 16 expires = "1990-01-01"; 17 }; 18 ${bob} = { 19 initialPassword = passwd; 20 isNormalUser = true; 21 expires = "2990-01-01"; 22 }; 23 ${eve} = { 24 initialPassword = passwd; 25 isNormalUser = true; 26 }; 27 }; 28 }; 29 }; 30 31 testScript = '' 32 def switch_to_tty(tty_number): 33 machine.fail(f"pgrep -f 'agetty.*tty{tty_number}'") 34 machine.send_key(f"alt-f{tty_number}") 35 machine.wait_until_succeeds(f"[ $(fgconsole) = {tty_number} ]") 36 machine.wait_for_unit(f"getty@tty{tty_number}.service") 37 machine.wait_until_succeeds(f"pgrep -f 'agetty.*tty{tty_number}'") 38 39 40 machine.wait_for_unit("multi-user.target") 41 machine.wait_for_unit("getty@tty1.service") 42 43 with subtest("${alice} cannot login"): 44 machine.wait_until_tty_matches("1", "login: ") 45 machine.send_chars("${alice}\n") 46 machine.wait_until_tty_matches("1", "Password: ") 47 machine.send_chars("${passwd}\n") 48 49 machine.wait_until_succeeds("journalctl --grep='account ${alice} has expired \\(account expired\\)'") 50 machine.wait_until_tty_matches("1", "login: ") 51 52 with subtest("${bob} can login"): 53 switch_to_tty(2) 54 machine.wait_until_tty_matches("2", "login: ") 55 machine.send_chars("${bob}\n") 56 machine.wait_until_tty_matches("2", "Password: ") 57 machine.send_chars("${passwd}\n") 58 59 machine.wait_until_succeeds("pgrep -u ${bob} bash") 60 61 with subtest("${eve} can login"): 62 switch_to_tty(3) 63 machine.wait_until_tty_matches("3", "login: ") 64 machine.send_chars("${eve}\n") 65 machine.wait_until_tty_matches("3", "Password: ") 66 machine.send_chars("${passwd}\n") 67 68 machine.wait_until_succeeds("pgrep -u ${eve} bash") 69 ''; 70}