add tests for onedns.server (now at 100% coverage)

master
Justin Riley 2016-09-28 11:35:07 -04:00
parent 4c245819ce
commit 5475be37f2
2 changed files with 89 additions and 1 deletions

View File

@ -3,6 +3,7 @@ import dnslib
from IPy import IP
from onedns import zone
from onedns import server
from onedns import resolver
from onedns.tests import vcr
from onedns.clients import one
@ -39,7 +40,16 @@ def dns(request):
@pytest.fixture(scope="function")
def oneclient(request):
def one_dns(request, oneclient):
dns = server.OneDNS(domain=DOMAIN)
dns._one = oneclient
dns.start(dns_address=INTERFACE, dns_port=PORT, tcp=True)
request.addfinalizer(dns.close)
return dns
@pytest.fixture(scope="function")
def oneclient():
"""
NOTE: All fixtures must be function scope to work with VCRPY cassettes
"""

View File

@ -0,0 +1,78 @@
import pytest
from onedns import exception
from onedns.tests import vcr
from onedns.tests import utils
def _get_vm_with_nics(one_dns, vms):
for vm in vms:
try:
one_dns._check_for_networks(vm)
return vm
except exception.NoNetworksError:
continue
def _add_and_verify(one_dns, vm, by_id=False, dns_entries=None):
if by_id:
one_dns.add_vm_by_id(vm)
else:
one_dns.add_vm(vm)
dns_entries = dns_entries or one_dns._get_vm_dns_entries(vm)
utils.verify_vm_dns(dns_entries)
def test_onedns_sync(one_dns, vms):
one_dns.sync(vms=vms)
uniq_names = []
uniq_ips = []
for vm in vms:
try:
dns_entries = one_dns._get_vm_dns_entries(vm)
except exception.NoNetworksError:
continue
if vm.name not in uniq_names:
for name, ip in dns_entries.items():
dns_entry = {name: ip}
if ip not in uniq_ips:
uniq_ips.append(ip)
utils.verify_vm_dns(dns_entry)
else:
with pytest.raises(AssertionError):
utils.verify_vm_dns(dns_entry)
uniq_names.append(vm.name)
else:
with pytest.raises(AssertionError):
utils.verify_vm_dns(dns_entries)
def test_onedns_add_vm(one_dns, vms):
vm = _get_vm_with_nics(one_dns, vms)
_add_and_verify(one_dns, vm)
def test_onedns_remove_vm(one_dns, vms):
vm = _get_vm_with_nics(one_dns, vms)
dns_entries = one_dns._get_vm_dns_entries(vm)
_add_and_verify(one_dns, vm)
one_dns.remove_vm(vm)
utils.verify_vm_dns_absent(dns_entries)
@vcr.use_cassette()
def test_onedns_add_vm_by_id(oneclient, one_dns):
vms = oneclient.vms()
vm = _get_vm_with_nics(one_dns, vms)
dns_entries = one_dns._get_vm_dns_entries(vm)
_add_and_verify(one_dns, vm.id, by_id=True, dns_entries=dns_entries)
@vcr.use_cassette()
def test_onedns_remove_vm_by_id(oneclient, one_dns):
vms = oneclient.vms()
vm = _get_vm_with_nics(one_dns, vms)
dns_entries = one_dns._get_vm_dns_entries(vm)
_add_and_verify(one_dns, vm)
one_dns.remove_vm_by_id(vm.id)
utils.verify_vm_dns_absent(dns_entries)