78 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
		
		
			
		
	
	
			78 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
|   | 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") | ||
|  |   '';
 | ||
|  | }) |