isset(ZONE_NAME in resp, "zone content")
isset("A" not in resp[ZONE_NAME][ZONE_NAME], "zone A presence")
+# Test removing whole rrset and whole node.
+
+ctl.send_block(cmd="zone-begin")
+resp = ctl.receive_block()
+
+ctl.send_block(cmd="zone-set", zone=ZONE_NAME, owner=ZONE_NAME, ttl="3600", rtype="TXT",
+ data="text")
+resp = ctl.receive_block()
+
+ctl.send_block(cmd="zone-set", zone=ZONE_NAME, owner="rrset", ttl="3600", rtype="A",
+ data="192.168.0.2")
+resp = ctl.receive_block()
+
+ctl.send_block(cmd="zone-set", zone=ZONE_NAME, owner="rrset", ttl="3600", rtype="A",
+ data="192.168.0.3")
+resp = ctl.receive_block()
+
+ctl.send_block(cmd="zone-set", zone=ZONE_NAME, owner="rrset", ttl="3600", rtype="AAAA",
+ data="3::4")
+resp = ctl.receive_block()
+
+ctl.send_block(cmd="zone-set", zone=ZONE_NAME, owner="node", ttl="3600", rtype="A",
+ data="192.168.0.2")
+resp = ctl.receive_block()
+
+ctl.send_block(cmd="zone-set", zone=ZONE_NAME, owner="node", ttl="3600", rtype="AAAA",
+ data="1::2")
+resp = ctl.receive_block()
+
+ctl.send_block(cmd="zone-commit")
+resp = ctl.receive_block()
+
+ctl.send_block(cmd="zone-read", zone=ZONE_NAME)
+resp = ctl.receive_block()
+
+isset("\"text\"" in resp[ZONE_NAME][ZONE_NAME]["TXT"]["data"], "rrset TXT presence")
+isset("A" in resp[ZONE_NAME]["rrset." + ZONE_NAME], "rrset A presence")
+isset("192.168.0.2" in resp[ZONE_NAME]["rrset." + ZONE_NAME]["A"]["data"], "rrset A rdata 1")
+isset("192.168.0.3" in resp[ZONE_NAME]["rrset." + ZONE_NAME]["A"]["data"], "rrset A rdata 2")
+isset("A" in resp[ZONE_NAME]["node." + ZONE_NAME], "node A presence")
+isset("AAAA" in resp[ZONE_NAME]["node." + ZONE_NAME], "node AAAA presence")
+
+ctl.send_block(cmd="zone-begin")
+resp = ctl.receive_block()
+
+ctl.send_block(cmd="zone-unset", zone=ZONE_NAME, owner=ZONE_NAME, rtype="SOA")
+resp = ctl.receive_block()
+
+ctl.send_block(cmd="zone-unset", zone=ZONE_NAME, owner=ZONE_NAME)
+resp = ctl.receive_block()
+
+ctl.send_block(cmd="zone-unset", zone=ZONE_NAME, owner="rrset", rtype="A")
+resp = ctl.receive_block()
+
+ctl.send_block(cmd="zone-unset", zone=ZONE_NAME, owner="node")
+resp = ctl.receive_block()
+
+ctl.send_block(cmd="zone-commit")
+resp = ctl.receive_block()
+
+ctl.send_block(cmd="zone-read", zone=ZONE_NAME)
+resp = ctl.receive_block()
+
+isset("SOA" in resp[ZONE_NAME][ZONE_NAME], "rrset SOA presence in apex") # SOA must be preserved
+isset("TXT" not in resp[ZONE_NAME][ZONE_NAME], "rrset TXT absence in apex")
+isset("A" not in resp[ZONE_NAME]["rrset." + ZONE_NAME], "rrset A absence")
+isset(("node." + ZONE_NAME) not in resp[ZONE_NAME], "node absence")
+
# Purge the zone data.
ctl.send_block(cmd="zone-purge")
resp = ctl.receive_block()