|
1 | | -from _pytest.logging import LogCaptureFixture |
2 | 1 | import pytest |
3 | 2 |
|
4 | | -from pytest_mock import MockerFixture |
5 | | - |
6 | | -from mock import Mock |
7 | | - |
8 | | -import dns.resolver |
9 | | -import dns.rdatatype |
10 | | -import dns.rdataclass |
11 | | -import dns.message |
12 | | -import dns.rrset |
13 | | -import dns.flags |
14 | | - |
15 | 3 | from pythclient.utils import get_key |
16 | 4 |
|
17 | 5 |
|
18 | | -@pytest.fixture() |
19 | | -def answer_program() -> dns.resolver.Answer: |
20 | | - qname = dns.name.Name(labels=(b'devnet-program-v2', b'pyth', b'network', b'')) |
21 | | - rdtype = dns.rdatatype.TXT |
22 | | - rdclass = dns.rdataclass.IN |
23 | | - response = dns.message.QueryMessage(id=0) |
24 | | - response.flags = dns.flags.QR |
25 | | - rrset_qn = dns.rrset.from_text(qname, 100, rdclass, rdtype) |
26 | | - rrset_ans = dns.rrset.from_text(qname, 100, rdclass, rdtype, '"program=gSbePebfvPy7tRqimPoVecS2UsBvYv46ynrzWocc92s"') |
27 | | - response.question = [rrset_qn] |
28 | | - response.answer = [rrset_ans] |
29 | | - answer = dns.resolver.Answer( |
30 | | - qname=qname, rdtype=rdtype, rdclass=rdclass, response=response) |
31 | | - answer.rrset = rrset_ans |
32 | | - return answer |
33 | | - |
34 | | - |
35 | | -@pytest.fixture() |
36 | | -def answer_mapping() -> dns.resolver.Answer: |
37 | | - qname = dns.name.Name(labels=(b'devnet-mapping-v2', b'pyth', b'network', b'')) |
38 | | - rdtype = dns.rdatatype.TXT |
39 | | - rdclass = dns.rdataclass.IN |
40 | | - response = dns.message.QueryMessage(id=0) |
41 | | - response.flags = dns.flags.QR |
42 | | - rrset_qn = dns.rrset.from_text(qname, 100, rdclass, rdtype) |
43 | | - rrset_ans = dns.rrset.from_text(qname, 100, rdclass, rdtype, '"mapping=BmA9Z6FjioHJPpjT39QazZyhDRUdZy2ezwx4GiDdE2u2"') |
44 | | - response.question = [rrset_qn] |
45 | | - response.answer = [rrset_ans] |
46 | | - answer = dns.resolver.Answer( |
47 | | - qname=qname, rdtype=rdtype, rdclass=rdclass, response=response) |
48 | | - answer.rrset = rrset_ans |
49 | | - return answer |
50 | | - |
51 | | - |
52 | | -@pytest.fixture() |
53 | | -def mock_dns_resolver_resolve(mocker: MockerFixture) -> Mock: |
54 | | - mock = Mock() |
55 | | - mocker.patch('dns.resolver.resolve', side_effect=mock) |
56 | | - return mock |
57 | | - |
58 | | - |
59 | | -def test_utils_get_program_key(mock_dns_resolver_resolve: Mock, answer_program: dns.resolver.Answer) -> None: |
60 | | - mock_dns_resolver_resolve.return_value = answer_program |
| 6 | +def test_utils_get_program_key() -> None: |
61 | 7 | program_key = get_key("devnet", "program") |
62 | 8 | assert program_key == "gSbePebfvPy7tRqimPoVecS2UsBvYv46ynrzWocc92s" |
63 | 9 |
|
64 | 10 |
|
65 | | -def test_utils_get_mapping_key(mock_dns_resolver_resolve: Mock, answer_mapping: dns.resolver.Answer) -> None: |
66 | | - mock_dns_resolver_resolve.return_value = answer_mapping |
| 11 | +def test_utils_get_mapping_key() -> None: |
67 | 12 | mapping_key = get_key("devnet", "mapping") |
68 | 13 | assert mapping_key == "BmA9Z6FjioHJPpjT39QazZyhDRUdZy2ezwx4GiDdE2u2" |
69 | 14 |
|
70 | 15 |
|
71 | | -def test_utils_get_mapping_key_not_found(mock_dns_resolver_resolve: Mock, |
72 | | - answer_mapping: dns.resolver.Answer, |
73 | | - caplog: LogCaptureFixture) -> None: |
74 | | - mock_dns_resolver_resolve.side_effect = dns.resolver.NXDOMAIN |
75 | | - exc_message = f'TXT record for {str(answer_mapping.response.canonical_name())[:-1]} not found' |
76 | | - key = get_key("devnet", "mapping") |
77 | | - assert exc_message in caplog.text |
78 | | - assert key == "" |
| 16 | +def test_utils_invalid_network() -> None: |
| 17 | + with pytest.raises(Exception) as e: |
| 18 | + get_key("testdevnet", "mapping") |
| 19 | + assert str(e.value) == "Unknown network or type: testdevnet, mapping" |
79 | 20 |
|
80 | 21 |
|
81 | | -def test_utils_get_mapping_key_invalid_number(mock_dns_resolver_resolve: Mock, |
82 | | - answer_mapping: dns.resolver.Answer, |
83 | | - caplog: LogCaptureFixture) -> None: |
84 | | - answer_mapping.rrset = None |
85 | | - mock_dns_resolver_resolve.return_value = answer_mapping |
86 | | - exc_message = f'Invalid number of records returned for {str(answer_mapping.response.canonical_name())[:-1]}!' |
87 | | - key = get_key("devnet", "mapping") |
88 | | - assert exc_message in caplog.text |
89 | | - assert key == "" |
| 22 | +def test_utils_get_invalid_type() -> None: |
| 23 | + with pytest.raises(Exception) as e: |
| 24 | + get_key("devnet", "mappingprogram") |
| 25 | + assert str(e.value) == "Unknown network or type: devnet, mappingprogram" |
0 commit comments