"""Test validators.""" import pytest import voluptuous as vol from supervisor import validate DNS_GOOD_V4 = [ "dns://10.0.0.1", # random local "dns://254.254.254.254", # random high numbers "DNS://1.1.1.1", # cloudflare "dns://9.9.9.9", # quad-9 ] DNS_GOOD_V6 = [ "dns://2606:4700:4700::1111", # cloudflare "DNS://2606:4700:4700::1001", # cloudflare ] DNS_BAD = ["hello world", "https://foo.bar", "", "dns://example.com"] async def test_dns_url_v4_good(): """Test the DNS validator with known-good ipv6 DNS URLs.""" for url in DNS_GOOD_V4: assert validate.dns_url(url) def test_dns_url_v6_good(): """Test the DNS validator with known-good ipv6 DNS URLs.""" with pytest.raises(vol.error.Invalid): for url in DNS_GOOD_V6: assert validate.dns_url(url) def test_dns_server_list_v4(): """Test a list with v4 addresses.""" assert validate.dns_server_list(DNS_GOOD_V4) def test_dns_server_list_v6(): """Test a list with v6 addresses.""" with pytest.raises(vol.error.Invalid): assert validate.dns_server_list(DNS_GOOD_V6) def test_dns_server_list_combined(): """Test a list with both v4 and v6 addresses.""" combined = DNS_GOOD_V4 + DNS_GOOD_V6 # test the matches with pytest.raises(vol.error.Invalid): validate.dns_server_list(combined) # test max_length is OK still with pytest.raises(vol.error.Invalid): validate.dns_server_list(combined) # test that it fails when the list is too long with pytest.raises(vol.error.Invalid): validate.dns_server_list(combined + combined + combined + combined) def test_dns_server_list_bad(): """Test the bad list.""" # test the matches with pytest.raises(vol.error.Invalid): assert validate.dns_server_list(DNS_BAD) def test_dns_server_list_bad_combined(): """Test the bad list, combined with the good.""" combined = DNS_GOOD_V4 + DNS_GOOD_V6 + DNS_BAD with pytest.raises(vol.error.Invalid): # bad list assert validate.dns_server_list(combined) def test_version_complex(): """Test version simple with good version.""" for version in ( "landingpage", "dev", "1c002dd", "1.1.1", "1.0", "0.150.1", "0.150.1b1", "0.150.1.dev20200715", "1", "alpine-5.4", 1, 1.1, ): assert validate.version_tag(version) == str(version) assert validate.version_tag(None) is None