summaryrefslogtreecommitdiffstats
path: root/nixos/tests/matter-server.nix
blob: ca4d55a161cec15086c1da7c1693aa0c0cae0594 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
{ pkgs, lib, ... }:

let
  chipVersion = pkgs.python3Packages.home-assistant-chip-core.version;
in

{
  name = "matter-server";
  meta.maintainers = with lib.maintainers; [ leonm1 ];
  meta.timeout = 120; # Timeout after two minutes

  nodes = {
    machine =
      { config, ... }:
      {
        services.matter-server = {
          enable = true;
          port = 1234;
          openFirewall = true;
        };
      };
  };

  testScript = # python
    ''
      @polling_condition
      def matter_server_running():
        machine.succeed("systemctl status matter-server")

      start_all()

      machine.wait_for_unit("matter-server.service", timeout=20)
      machine.wait_for_open_port(1234, timeout=100)

      with matter_server_running: # type: ignore[union-attr]
        with subtest("Check websocket server initialized"):
            output = machine.succeed("echo \"\" | ${pkgs.websocat}/bin/websocat ws://localhost:1234/ws")
            machine.log(output)

        assert '"fabric_id": 1' in output, (
          "fabric_id not propagated to server"
        )

        with subtest("Check storage directory is created"):
            machine.succeed("ls /var/lib/matter-server/chip.json")

        with subtest("Check dashboard loads"):
            machine.succeed("curl -f 127.0.0.1:1234")

        with subtest("Check systemd hardening"):
            _, output = machine.execute("systemd-analyze security matter-server.service | grep -v '✓'")
            machine.log(output)
    '';
}