python312Packages.millheater: 0.11.8 -> 0.12.0
[NixPkgs.git] / nixos / tests / gns3-server.nix
blobe37d751f5f6400cd6e310c312e38776229d2b61e
1 import ./make-test-python.nix ({ pkgs, lib, ... }: {
2   name = "gns3-server";
3   meta.maintainers = [ lib.maintainers.anthonyroussel ];
5   nodes.machine =
6     { ... }:
7     let
8       tls-cert = pkgs.runCommand "selfSignedCerts" { buildInputs = [ pkgs.openssl ]; } ''
9         openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -nodes -days 365 \
10           -subj '/CN=localhost'
11         install -D -t $out key.pem cert.pem
12       '';
13     in {
14       services.gns3-server = {
15         enable = true;
16         auth = {
17           enable = true;
18           user = "user";
19           passwordFile = pkgs.writeText "gns3-auth-password-file" "password";
20         };
21         ssl = {
22           enable = true;
23           certFile = "${tls-cert}/cert.pem";
24           keyFile = "${tls-cert}/key.pem";
25         };
26         dynamips.enable = true;
27         ubridge.enable = true;
28         vpcs.enable = true;
29       };
31       security.pki.certificateFiles = [ "${tls-cert}/cert.pem" ];
32     };
34   testScript = let
35     createProject = pkgs.writeText "createProject.json" (builtins.toJSON {
36       name = "test_project";
37     });
38   in
39   ''
40     start_all()
42     machine.wait_for_unit("gns3-server.service")
43     machine.wait_for_open_port(3080)
45     with subtest("server is listening"):
46       machine.succeed("curl -sSfL -u user:password https://localhost:3080/v2/version")
48     with subtest("create dummy project"):
49       machine.succeed("curl -sSfL -u user:password https://localhost:3080/v2/projects -d @${createProject}")
51     with subtest("logging works"):
52       log_path = "/var/log/gns3/server.log"
53       machine.wait_for_file(log_path)
54   '';