Files
pdns_dnssec/tests/unit/test_02_api.py
2025-05-15 09:31:02 +02:00

86 lines
2.3 KiB
Python

#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_api_get_servers():
global api
setup_api()
result = api.get('servers')
assert type(result) is list
assert result[0]['daemon_type'] == 'authoritative'
print()
print(f"{result=}")
def test_api_get_testzone():
global api, domain
setup_api()
result = api.get('servers/localhost/zones/' + domain)
assert type(result) is dict
assert result['name'] == domain + '.'
def test_api_CRUD_TXT():
global api, domain
setup_api()
# Create
data = {
"rrsets": [
{
"name": "testcrud.test1.nhn.no.",
"type": "TXT",
"ttl": 60,
"changetype": "REPLACE",
"records": [
{
"content": f'"testing CRUD {datetime.datetime.now().strftime('%d.%m.%Y %H:%M')}"',
"disabled": False,
"name": "testcrud.test1.nhn.no",
"ttl": 60,
"type": "TXT"
}
]
}
]
}
result = api.patch('servers/localhost/zones/' + domain, {}, data)
assert type(result) is type(None)
# assert result == 201
result = api.get('servers/localhost/zones/' + domain)
print(f"{result=}")
# assert result["rrset"][0]["records"][0]["type"] == "TXT"
assert type(result) is dict
data["rrsets"][0]["records"][0]["content"] = '"testing CRUD (update)"'
result = api.patch('servers/localhost/zones/' + domain, {}, data)
assert type(result) is type(None)
data["rrsets"][0]["changetype"] = "DELETE"
result = api.patch('servers/localhost/zones/' + domain, {}, data)
assert type(result) is type(None)