import ./make-test-python.nix ( { lib, pkgs, ... }: { name = "doh-proxy-rust"; meta.maintainers = with lib.maintainers; [ stephank ]; nodes = { machine = { pkgs, lib, ... }: { services.bind = { enable = true; extraOptions = "empty-zones-enable no;"; zones = lib.singleton { name = "."; master = true; file = pkgs.writeText "root.zone" '' $TTL 3600 . IN SOA ns.example.org. admin.example.org. ( 1 3h 1h 1w 1d ) . IN NS ns.example.org. ns.example.org. IN A 192.168.0.1 ''; }; }; services.doh-proxy-rust = { enable = true; flags = [ "--server-address=127.0.0.1:53" ]; }; }; }; testScript = { nodes, ... }: '' url = "http://localhost:3000/dns-query" query = "AAABAAABAAAAAAAAAm5zB2V4YW1wbGUDb3JnAAABAAE=" # IN A ns.example.org. bin_ip = r"$'\xC0\xA8\x00\x01'" # 192.168.0.1, as shell binary string machine.wait_for_unit("bind.service") machine.wait_for_unit("doh-proxy-rust.service") machine.wait_for_open_port(53) machine.wait_for_open_port(3000) machine.succeed(f"curl --fail -H 'Accept: application/dns-message' '{url}?dns={query}' | grep -F {bin_ip}") ''; } )