|
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