1import ./make-test-python.nix (
2 { lib, pkgs, ... }:
3 {
4 name = "endlessh";
5 meta.maintainers = with lib.maintainers; [ azahi ];
6
7 nodes = {
8 server =
9 { ... }:
10 {
11 services.endlessh = {
12 enable = true;
13 openFirewall = true;
14 };
15
16 specialisation = {
17 unprivileged.configuration.services.endlessh.port = 2222;
18
19 privileged.configuration.services.endlessh.port = 22;
20 };
21 };
22
23 client =
24 { pkgs, ... }:
25 {
26 environment.systemPackages = with pkgs; [
27 curl
28 netcat
29 ];
30 };
31 };
32
33 testScript = ''
34 def activate_specialisation(name: str):
35 server.succeed(f"/run/booted-system/specialisation/{name}/bin/switch-to-configuration test >&2")
36
37 start_all()
38
39 with subtest("Unprivileged"):
40 activate_specialisation("unprivileged")
41 server.wait_for_unit("endlessh.service")
42 server.wait_for_open_port(2222)
43 client.succeed("nc -dvW5 server 2222")
44
45 with subtest("Privileged"):
46 activate_specialisation("privileged")
47 server.wait_for_unit("endlessh.service")
48 server.wait_for_open_port(22)
49 client.succeed("nc -dvW5 server 22")
50 '';
51 }
52)