0
0
mirror of https://github.com/namecoin/namecoin-core synced 2025-10-06 00:22:46 +02:00
Files
namecoin-core/test/functional/name_allowexpired.py
2024-07-29 19:49:42 +02:00

81 lines
3.0 KiB
Python
Executable File

#!/usr/bin/env python3
# Licensed under CC0 (Public domain)
# Test that name_show displays expired names if allow_expired = true,
# and otherwise throws "not found" errors (if allow_expired = false).
from test_framework.names import NameTestFramework
from test_framework.util import *
class NameExpirationTest(NameTestFramework):
def set_test_params(self):
self.num_nodes = 2
self.setup_name_test([
["-allowexpired"],
["-noallowexpired"]
])
def run_test(self):
idx_allow = 0
idx_disallow = 1
node = self.nodes[idx_allow]
node_disallow = self.nodes[idx_disallow]
self.generate (node, 200)
self.log.info("Begin registration of two names.")
# "d/active" and (2) "d/expired".
# "d/active" will be renewed.
# "d/expired" will be let to lapse.
#
# To look up "d/expired" should either succeed or throw an error,
# depending on the values of (1) the JSON option allowExpired
# and (2) the command-line parameter -allowexpired.
# Looking up "d/active" should always succeed regardless.
new_active = node.name_new("d/active")
new_expired = node.name_new("d/expired")
self.generate (node, 12)
self.log.info("Register the names.")
self.firstupdateName(0, "d/active", new_active, "value")
self.firstupdateName(0, "d/expired", new_expired, "value")
self.generate (node, 1)
# names on regtest expire after 30 blocks
self.log.info("Wait 1 block, make sure domains registered.")
self.checkName(0, "d/active", "value", 30, False)
self.checkName(0, "d/expired", "value", 30, False)
self.log.info("Let half a registration interval pass.")
self.generate (node, 15)
self.log.info("Renew d/active.")
node.name_update("d/active", "renewed")
# Don't renew d/expired.
self.log.info("Let d/expired lapse.")
self.generate (node, 16)
# 30 - 15 = 15
self.log.info("Check default behaviors.")
self.sync_blocks(self.nodes)
self.checkName(idx_allow, "d/expired", "value", -1, True)
assert_raises_rpc_error(-4, 'name expired',
node_disallow.name_show, "d/expired")
self.log.info("Check positive JSON overrides.")
# checkName only accepts one parameter, use checkNameData
self.checkNameData(
node.name_show("d/expired", {"allowExpired": True}),
"d/expired", "value", -1, True)
self.checkNameData(
node_disallow.name_show("d/expired", {"allowExpired": True}),
"d/expired", "value", -1, True)
self.log.info("Check negative JSON overrides.")
assert_raises_rpc_error(-4, 'name expired',
node.name_show, "d/expired", {"allowExpired": False})
assert_raises_rpc_error(-4, 'name expired',
node_disallow.name_show, "d/expired", {"allowExpired": False})
if __name__ == '__main__':
NameExpirationTest (__file__).main ()