at 24.11-pre 1.6 kB view raw
1import ./make-test-python.nix ({ pkgs, lib, ... }: { 2 name = "gns3-server"; 3 meta.maintainers = [ lib.maintainers.anthonyroussel ]; 4 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 }; 30 31 security.pki.certificateFiles = [ "${tls-cert}/cert.pem" ]; 32 }; 33 34 testScript = let 35 createProject = pkgs.writeText "createProject.json" (builtins.toJSON { 36 name = "test_project"; 37 }); 38 in 39 '' 40 start_all() 41 42 machine.wait_for_unit("gns3-server.service") 43 machine.wait_for_open_port(3080) 44 45 with subtest("server is listening"): 46 machine.succeed("curl -sSfL -u user:password https://localhost:3080/v2/version") 47 48 with subtest("create dummy project"): 49 machine.succeed("curl -sSfL -u user:password https://localhost:3080/v2/projects -d @${createProject}") 50 51 with subtest("logging works"): 52 log_path = "/var/log/gns3/server.log" 53 machine.wait_for_file(log_path) 54 ''; 55})