Пример #1
0
 def test_get_validated_root_domain_multiple_subdomains(self):
     with self.subTest():
         root_domain = DuckDNSClient.__get_validated_root_domain__("test1.test2." + TEST_DOMAIN)
         self.assertEqual(root_domain, TEST_DOMAIN)
     with self.subTest():
         root_domain = DuckDNSClient.__get_validated_root_domain__("test1.test2.test3." + TEST_DOMAIN)
         self.assertEqual(root_domain, TEST_DOMAIN)
Пример #2
0
    def test_add_txt(self):
        assert DOMAIN is not None and len(DOMAIN) > 0
        assert DUCKDNS_TOKEN is not None and len(DUCKDNS_TOKEN) > 0

        duckdns_client = DuckDNSClient(DUCKDNS_TOKEN)

        txt_record_text = "simple text"
        duckdns_client.set_txt_record(DOMAIN, txt_record_text)
        # wait sometime for propagation of the txt update
        print("wait for the txt record update to propagate...")
        time.sleep(DEFAULT_PROPAGATION_SECONDS)
        txt_value = duckdns_client.get_txt_record(DOMAIN)

        self.assertEqual(txt_record_text, txt_value)
Пример #3
0
    def test_add_txt(self):
        txt_record_text = "simple text"

        duckdns_client = DuckDNSClient(TEST_DUCKDNS_TOKEN)

        duckdns_client.set_txt_record(TEST_DOMAIN, txt_record_text)
        # wait sometime for propagation of the txt update
        print("wait for the txt record update to propagate...")
        time.sleep(DEFAULT_PROPAGATION_SECONDS)
        # get the set txt record from the specified nameserver
        custom_resolver = Resolver()
        custom_resolver.nameservers = NAMESERVER
        txt_value = custom_resolver.resolve(TEST_DOMAIN, "TXT").response.answer[0][0].strings[0].decode("utf-8")

        self.assertEqual(txt_record_text, txt_value)
Пример #4
0
    def _get_duckdns_client(self) -> DuckDNSClient:
        """
        Create a new DuckDNSClient with the provided API token.

        :return: the created DuckDNSClient object
        """
        token = self.conf("token") or self.credentials.conf("token")
        return DuckDNSClient(token)
Пример #5
0
    def test_none_token(self):
        with self.subTest():
            with self.assertRaises(NotValidDuckdnsTokenError):
                duckdns_client = DuckDNSClient(None)

        # explicitly set the token to None
        duckdns_client = DuckDNSClient("test")
        duckdns_client._token = None

        with self.subTest():
            # test set txt record
            with self.assertRaises(TXTUpdateError):
                duckdns_client.set_txt_record(TEST_DOMAIN, "simple text")

        with self.subTest():
            # test clear txt record
            with self.assertRaises(TXTUpdateError):
                duckdns_client.clear_txt_record(TEST_DOMAIN)
Пример #6
0
    def test_empty_domain(self):
        duckdns_client = DuckDNSClient(TEST_DUCKDNS_TOKEN)

        with self.assertRaises(AssertionError):
            duckdns_client.set_txt_record("", "simple text")

        with self.assertRaises(AssertionError):
            duckdns_client.clear_txt_record("")
Пример #7
0
    def test_invalid_domain(self):
        duckdns_client = DuckDNSClient(TEST_DUCKDNS_TOKEN)

        with self.assertRaises(TXTUpdateError):
            duckdns_client.set_txt_record("thisdomainsisnotvalid",
                                          "simple text")

        with self.assertRaises(TXTUpdateError):
            duckdns_client.clear_txt_record("thisdomainsisnotvalid")
Пример #8
0
    def test_wrong_domain(self):
        duckdns_client = DuckDNSClient(TEST_DUCKDNS_TOKEN)

        with self.subTest():
            with self.assertRaises(TXTUpdateError):
                duckdns_client.set_txt_record("thisdomainsiswrong", "simple text")

        with self.subTest():
            with self.assertRaises(TXTUpdateError):
                duckdns_client.clear_txt_record("thisdomainsiswrong")
Пример #9
0
    def test_empty_domain(self):
        assert DOMAIN is not None and len(DOMAIN) > 0
        assert DUCKDNS_TOKEN is not None and len(DUCKDNS_TOKEN) > 0

        duckdns_client = DuckDNSClient(DUCKDNS_TOKEN)

        with self.assertRaises(AssertionError):
            duckdns_client.set_txt_record("", "simple text")

        with self.assertRaises(AssertionError):
            duckdns_client.clear_txt_record("")
Пример #10
0
    def test_invalid_domain(self):
        assert DOMAIN is not None and len(DOMAIN) > 0
        assert DUCKDNS_TOKEN is not None and len(DUCKDNS_TOKEN) > 0

        duckdns_client = DuckDNSClient(DUCKDNS_TOKEN)

        with self.assertRaises(TXTUpdateError):
            duckdns_client.set_txt_record("thisdomainsisnotvalid",
                                          "simple text")

        with self.assertRaises(TXTUpdateError):
            duckdns_client.clear_txt_record("thisdomainsisnotvalid")
Пример #11
0
    def test_invalid_token(self):
        duckdns_client = DuckDNSClient("42")

        with self.subTest():
            # test set txt record
            with self.assertRaises(TXTUpdateError):
                duckdns_client.set_txt_record(TEST_DOMAIN, "simple text")

        with self.subTest():
            # test clear txt record
            with self.assertRaises(TXTUpdateError):
                duckdns_client.clear_txt_record(TEST_DOMAIN)
Пример #12
0
    def test_none_token(self):
        duckdns_client = DuckDNSClient(None)

        # test set txt record
        txt_set_error = False
        try:
            duckdns_client.set_txt_record(TEST_DOMAIN, "simple text")
        except AssertionError:
            txt_set_error = True
        self.assertEqual(True, txt_set_error)

        # test clear txt record
        txt_clear_error = False
        try:
            duckdns_client.clear_txt_record(TEST_DOMAIN)
        except AssertionError:
            txt_clear_error = True
        self.assertEqual(True, txt_clear_error)
Пример #13
0
    def test_invalid_token(self):
        duckdns_client = DuckDNSClient("42")

        # test set txt record
        txt_set_error = False
        try:
            duckdns_client.set_txt_record(TEST_DOMAIN, "simple text")
        except TXTUpdateError:
            txt_set_error = True
        self.assertEqual(True, txt_set_error)

        # test clear txt record
        txt_clear_error = False
        try:
            duckdns_client.clear_txt_record(TEST_DOMAIN)
        except TXTUpdateError:
            txt_clear_error = True
        self.assertEqual(True, txt_clear_error)
Пример #14
0
    def test_none_token(self):
        assert DOMAIN is not None and len(DOMAIN) > 0
        assert DUCKDNS_TOKEN is not None and len(DUCKDNS_TOKEN) > 0

        duckdns_client = DuckDNSClient(None)

        # test set txt record
        txt_set_error = False
        try:
            duckdns_client.set_txt_record(DOMAIN, "simple text")
        except AssertionError:
            txt_set_error = True
        self.assertEqual(True, txt_set_error)

        # test clear txt record
        txt_clear_error = False
        try:
            duckdns_client.clear_txt_record(DOMAIN)
        except AssertionError:
            txt_clear_error = True
        self.assertEqual(True, txt_clear_error)
Пример #15
0
 def test_get_validated_root_domain_special_subdomains(self):
     with self.subTest():
         root_domain = DuckDNSClient.__get_validated_root_domain__(
             "test-." + TEST_DOMAIN)
         self.assertEqual(root_domain, TEST_DOMAIN)
     with self.subTest():
         root_domain = DuckDNSClient.__get_validated_root_domain__(
             "test--." + TEST_DOMAIN)
         self.assertEqual(root_domain, TEST_DOMAIN)
     with self.subTest():
         root_domain = DuckDNSClient.__get_validated_root_domain__(
             "-test." + TEST_DOMAIN)
         self.assertEqual(root_domain, TEST_DOMAIN)
     with self.subTest():
         root_domain = DuckDNSClient.__get_validated_root_domain__(
             "--test." + TEST_DOMAIN)
         self.assertEqual(root_domain, TEST_DOMAIN)
     with self.subTest():
         root_domain = DuckDNSClient.__get_validated_root_domain__(
             "-." + TEST_DOMAIN)
         self.assertEqual(root_domain, TEST_DOMAIN)
     with self.subTest():
         root_domain = DuckDNSClient.__get_validated_root_domain__(
             "--." + TEST_DOMAIN)
         self.assertEqual(root_domain, TEST_DOMAIN)
     with self.subTest():
         root_domain = DuckDNSClient.__get_validated_root_domain__(
             "-test-." + TEST_DOMAIN)
         self.assertEqual(root_domain, TEST_DOMAIN)
     with self.subTest():
         root_domain = DuckDNSClient.__get_validated_root_domain__(
             "test--test." + TEST_DOMAIN)
         self.assertEqual(root_domain, TEST_DOMAIN)
     with self.subTest():
         root_domain = DuckDNSClient.__get_validated_root_domain__(
             "12345." + TEST_DOMAIN)
         self.assertEqual(root_domain, TEST_DOMAIN)
     with self.subTest():
         root_domain = DuckDNSClient.__get_validated_root_domain__(
             "12345-." + TEST_DOMAIN)
         self.assertEqual(root_domain, TEST_DOMAIN)
     with self.subTest():
         root_domain = DuckDNSClient.__get_validated_root_domain__(
             "12345--." + TEST_DOMAIN)
         self.assertEqual(root_domain, TEST_DOMAIN)
     with self.subTest():
         root_domain = DuckDNSClient.__get_validated_root_domain__(
             "-12345." + TEST_DOMAIN)
         self.assertEqual(root_domain, TEST_DOMAIN)
     with self.subTest():
         root_domain = DuckDNSClient.__get_validated_root_domain__(
             "--12345." + TEST_DOMAIN)
         self.assertEqual(root_domain, TEST_DOMAIN)
     with self.subTest():
         root_domain = DuckDNSClient.__get_validated_root_domain__(
             "-123ad-sdas--45-as-." + TEST_DOMAIN)
         self.assertEqual(root_domain, TEST_DOMAIN)
Пример #16
0
 def test_get_validated_root_domain_hyphen_domain(self):
     domain = "test-example.duckdns.org"
     root_domain = DuckDNSClient.__get_validated_root_domain__(domain)
     self.assertEqual(root_domain, domain)