86 lines
2.3 KiB
Python
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)
|