from yaml import load, SafeLoader
from os import environ

from execute import run

EXTERNAL_DOMAIN = 'google.fr'


def test_dns_local():
    conf_file = f'{environ["MACHINE_TEST_DIR"]}/dns-local.yml'
    with open(conf_file) as yaml:
        data = load(yaml, Loader=SafeLoader)
    if 'addresses' not in data:
        return
    for address in data['addresses']:
        result = run(data['address'],
                     ['/bin/resolvectl', 'query', address['dns_address']],
                     )
        first = next(result)
        search = f"{address['dns_address']}: {address['dns_ip']}"
        assert first == search or first.startswith(search + " "), f'dns return "{first}" instead of "{search}"'


def test_dns_external():
    conf_file = f'{environ["MACHINE_TEST_DIR"]}/dns-local.yml'
    with open(conf_file) as yaml:
        data = load(yaml, Loader=SafeLoader)
    if data['dns_is_only_local']:
        result = run(data['address'],
                     ['/bin/resolvectl', 'query', EXTERNAL_DOMAIN],
                     )
        assert 'resolve call failed' in next(result), f'should not resolved {EXTERNAL_DOMAIN}'