diff --git a/pdnsapi/__init__.py b/pdnsapi/__init__.py index 6c0a727..82093cc 100644 --- a/pdnsapi/__init__.py +++ b/pdnsapi/__init__.py @@ -49,3 +49,15 @@ class PdnsRestAdapter: # if response.status.code >= 200 and response.status.code <= 299: # return # raise Exception(data_out['message']) # TODO: raise custom exception later + + def get_record(self, name=None, type=None): + domain = '.'.join(name.split('.')[1:]) + if name[:-1] != '.': + name += '.' + result = self.get('servers/localhost/zones/' + domain) + record = None + for r in result["rrsets"]: + if r['name'] == name and r['type'] == type: + rrset = r + print(f"PdnsRestAdapter::get_record(): {rrset=}") + return rrset diff --git a/tests/unit/test_03_mid.py b/tests/unit/test_03_mid.py new file mode 100644 index 0000000..4055791 --- /dev/null +++ b/tests/unit/test_03_mid.py @@ -0,0 +1,39 @@ +#import pytest +from pdnsapi import PdnsRestAdapter +import dns.resolver +import dns.nameserver +import datetime + + +global api +global domain +global resolv + + +def setup_api(): + global api, domain + + server = "localhost:8081" + apikey = "pdns-supersecret" + api = PdnsRestAdapter(server, apikey) + domain = 'test1.nhn.no' + assert api is not None + +def setup_resolver(): + global resolv + + resolv = dns.resolver.Resolver() + assert resolv is not None + resolv.nameservers = [dns.nameserver.Do53Nameserver('127.0.0.1', 10053)] + answer = resolv.resolve(domain, 'SOA') + assert answer is not None + +def test_mid_get_record(): + global api + + setup_api() + output = api.get_record('test.test1.nhn.no', 'TXT') + print(f"{output=}") + assert type(output) is dict + assert output['name'] == 'test.test1.nhn.no.' + assert output['type'] == 'TXT'