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