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