-
Notifications
You must be signed in to change notification settings - Fork 53
Expand file tree
/
Copy pathtest_derivation.py
More file actions
76 lines (64 loc) · 2.82 KB
/
Copy pathtest_derivation.py
File metadata and controls
76 lines (64 loc) · 2.82 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
import unittest
from sns_sdk import (
HASH_PREFIX,
NAME_PROGRAM_ID,
RECORDS_PROGRAM_ID,
REVERSE_LOOKUP_CLASS,
ROOT_DOMAIN_ACCOUNT,
CENTRAL_STATE_DOMAIN_RECORDS,
RecordVersion,
get_domain_key,
get_hashed_name,
get_name_account_key,
get_record_key,
get_reverse_key,
)
from sns_sdk.public_key import b58decode, b58encode
class DerivationTest(unittest.TestCase):
def test_constants_match_js_sdk(self):
self.assertEqual(HASH_PREFIX, "SPL Name Service")
self.assertEqual(NAME_PROGRAM_ID, "namesLPneVptA9Z5rqUDD9tMTWEJwofgaYwp8cawRkX")
self.assertEqual(ROOT_DOMAIN_ACCOUNT, "58PwtjSDuFHuUkYjH9BYnnQKHfwo9reZhC2zMJv9JPkx")
self.assertEqual(REVERSE_LOOKUP_CLASS, "33m47vH6Eav6jr5Ry86XjhRft2jRBLDnDgPSHoquXi2Z")
self.assertEqual(RECORDS_PROGRAM_ID, "HP3D4D1ZCmohQGFVms2SS4LCANgJyksBf5s1F77FuFjZ")
self.assertEqual(CENTRAL_STATE_DOMAIN_RECORDS, "2pMnqHvei2N5oDcVGCRdZx48gqti199wr5CsyTTafsbo")
def test_base58_roundtrip(self):
for value in [NAME_PROGRAM_ID, ROOT_DOMAIN_ACCOUNT, REVERSE_LOOKUP_CLASS]:
self.assertEqual(b58encode(b58decode(value)), value)
def test_domain_derivation_matches_js_fixtures(self):
fixtures = [
("bonfida", "Crf8hzfthWGbGbLTVCiqRqV5MVnbpHB1L9KQMd6gsinb"),
("bonfida.sol", "Crf8hzfthWGbGbLTVCiqRqV5MVnbpHB1L9KQMd6gsinb"),
("dex.bonfida", "HoFfFXqFHAC8RP3duuQNzag1ieUwJRBv1HtRNiWFq4Qu"),
("dex.bonfida.sol", "HoFfFXqFHAC8RP3duuQNzag1ieUwJRBv1HtRNiWFq4Qu"),
]
for domain, expected in fixtures:
with self.subTest(domain=domain):
self.assertEqual(get_domain_key(domain).pubkey, expected)
def test_get_name_account_key_rebuilds_domain_key(self):
hashed = get_hashed_name("bonfida")
actual = get_name_account_key(hashed, name_parent=ROOT_DOMAIN_ACCOUNT)
self.assertEqual(actual, "Crf8hzfthWGbGbLTVCiqRqV5MVnbpHB1L9KQMd6gsinb")
def test_record_derivation_is_stable(self):
self.assertEqual(
get_record_key("bonfida.sol", "SOL"),
"5WCZ6uhXPXJ7UrzBvXBnE9biZykq1ezJ6JhYe6CHgA7d",
)
self.assertEqual(
get_domain_key("SOL.bonfida.sol", RecordVersion.V2).pubkey,
"ETARvCjLwjyM6Jux1ndxuXuYEYy56Nf5uvU3abL1WyW6",
)
def test_reverse_derivation_is_stable(self):
self.assertEqual(
get_reverse_key("bonfida.sol"),
"DqgmWxe2PPrfy45Ja3UPyFGwcbRzkRuwXt3NyxjX8krg",
)
self.assertEqual(
get_reverse_key("dex.bonfida.sol", is_sub=True),
"6tAdEpjsrzHuRqJW3XMXEV7DFyCWW4giW6mW4bgvhcYV",
)
def test_malformed_domain_raises(self):
with self.assertRaises(ValueError):
get_domain_key("a.b.c.sol")
if __name__ == "__main__":
unittest.main()