aboutsummaryrefslogtreecommitdiff
path: root/nixpkgs/nixos/tests/ncdns.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/nixos/tests/ncdns.nix')
-rw-r--r--nixpkgs/nixos/tests/ncdns.nix77
1 files changed, 77 insertions, 0 deletions
diff --git a/nixpkgs/nixos/tests/ncdns.nix b/nixpkgs/nixos/tests/ncdns.nix
new file mode 100644
index 00000000000..507e20fe7cc
--- /dev/null
+++ b/nixpkgs/nixos/tests/ncdns.nix
@@ -0,0 +1,77 @@
+import ./make-test-python.nix ({ pkgs, ... }:
+let
+ fakeReply = pkgs.writeText "namecoin-reply.json" ''
+ { "error": null,
+ "id": 1,
+ "result": {
+ "address": "T31q8ucJ4dI1xzhxQ5QispfECld5c7Xw",
+ "expired": false,
+ "expires_in": 2248,
+ "height": 438155,
+ "name": "d/test",
+ "txid": "db61c0b2540ba0c1a2c8cc92af703a37002e7566ecea4dbf8727c7191421edfb",
+ "value": "{\"ip\": \"1.2.3.4\", \"email\": \"root@test.bit\",\"info\": \"Fake record\"}",
+ "vout": 0
+ }
+ }
+ '';
+in
+
+{
+ name = "ncdns";
+
+ nodes.server = { ... }: {
+ networking.nameservers = [ "127.0.0.1" ];
+
+ services.namecoind.rpc = {
+ address = "127.0.0.1";
+ user = "namecoin";
+ password = "secret";
+ port = 8332;
+ };
+
+ # Fake namecoin RPC server because we can't
+ # run a full node in a test.
+ systemd.services.namecoind = {
+ wantedBy = [ "multi-user.target" ];
+ script = ''
+ while true; do
+ echo -e "HTTP/1.1 200 OK\n\n $(<${fakeReply})\n" \
+ | ${pkgs.netcat}/bin/nc -N -l 127.0.0.1 8332
+ done
+ '';
+ };
+
+ services.ncdns = {
+ enable = true;
+ dnssec.enable = true;
+ };
+
+ services.pdns-recursor = {
+ enable = true;
+ dns.allowFrom = [ "127.0.0.0/8" ];
+ settings.loglevel = 8;
+ resolveNamecoin = true;
+ };
+
+ environment.systemPackages = [ pkgs.dnsutils ];
+
+ };
+
+ testScript = ''
+ with subtest("DNSSEC keys have been generated"):
+ server.wait_for_unit("ncdns")
+ server.wait_for_file("/var/lib/ncdns/bit.key")
+ server.wait_for_file("/var/lib/ncdns/bit-zone.key")
+
+ with subtest("DNSKEY bit record is present"):
+ server.wait_for_unit("pdns-recursor")
+ server.wait_for_open_port("53")
+ server.succeed("host -t DNSKEY bit")
+
+ with subtest("can resolve a .bit name"):
+ server.wait_for_unit("namecoind")
+ server.wait_for_open_port("8332")
+ assert "1.2.3.4" in server.succeed("host -t A test.bit")
+ '';
+})