basic testing framework
This commit is contained in:
		
							
								
								
									
										0
									
								
								tests/__init__.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								tests/__init__.py
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										0
									
								
								tests/unit/__init__.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								tests/unit/__init__.py
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										23
									
								
								tests/unit/test_01_basics.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								tests/unit/test_01_basics.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,23 @@
 | 
			
		||||
from pdnsapi import PdnsRestAdapter
 | 
			
		||||
import dns.resolver
 | 
			
		||||
import dns.nameserver
 | 
			
		||||
 | 
			
		||||
global api
 | 
			
		||||
global domain
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def test_api_initialized():
 | 
			
		||||
    global api, domain
 | 
			
		||||
 | 
			
		||||
    server = "localhost:8081"
 | 
			
		||||
    apikey = "pdns-supersecret"
 | 
			
		||||
    api = PdnsRestAdapter(server, apikey)
 | 
			
		||||
    domain = 'test1.nhn.no'
 | 
			
		||||
    assert api is not None
 | 
			
		||||
 | 
			
		||||
def test_pdns_running():
 | 
			
		||||
    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
 | 
			
		||||
							
								
								
									
										85
									
								
								tests/unit/test_02_api.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										85
									
								
								tests/unit/test_02_api.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,85 @@
 | 
			
		||||
#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)
 | 
			
		||||
		Reference in New Issue
	
	Block a user