Exemplo n.º 1
0
    def test_get_merged_key_renamed(self) -> None:
        """
        Tests the method which let us get the (clean) merged configuration
        for the case that we renamed some keys.
        """

        old2new = {
            "hello_world": "cli_testing",
        }

        given_local = copy.deepcopy(self.our_config)
        given_upstream = copy.deepcopy(self.our_config)

        for old, new in old2new.items():
            given_local[old] = copy.deepcopy(given_local[new])

            del given_local[new]

        config_comparison = ConfigComparison(local_config=given_local,
                                             upstream_config=given_upstream)

        expected = self.our_config
        expected["hello_world"] = self.our_config["cli_testing"]
        actual = config_comparison.get_merged()

        self.assertEqual(expected, actual)
Exemplo n.º 2
0
    def test_set_upstream_config_return(self) -> None:
        """
        Tests the response of the method which let us set the upstream configuration
        to work with.
        """

        given = copy.deepcopy(self.our_config)

        config_comparison = ConfigComparison()
        actual = config_comparison.set_upstream_config(given)

        self.assertIsInstance(actual, ConfigComparison)
Exemplo n.º 3
0
    def test_set_local_config_return(self) -> None:
        """
        Tests the response of the method which let us set the local configuration
        to work with.
        """

        given = self.our_config

        config_comparison = ConfigComparison()
        actual = config_comparison.set_local_config(given)

        self.assertIsInstance(actual, ConfigComparison)
Exemplo n.º 4
0
    def test_set_upstream_config_not_dict(self) -> None:
        """
        Tests the method which let us set the upstream configuration to work with
        for the case that the given upstream configuration is not a dict.
        """

        given = ["Hello", "World"]

        config_comparison = ConfigComparison()

        self.assertRaises(TypeError,
                          lambda: config_comparison.set_upstream_config(given))
Exemplo n.º 5
0
    def test_set_local_config_method(self) -> None:
        """
        Tests the method which let us set the local configuration to work with.
        """

        given = self.our_config
        expected = self.our_config

        config_comparison = ConfigComparison()
        config_comparison.set_local_config(given)

        actual = config_comparison.local_config

        self.assertEqual(expected, actual)
Exemplo n.º 6
0
    def test_get_merged_no_changed(self) -> None:
        """
        Tests the method which let us get the (clean) merged configuration.
        """

        given_local = copy.deepcopy(self.our_config)
        given_upstream = copy.deepcopy(self.our_config)

        config_comparison = ConfigComparison(local_config=given_local,
                                             upstream_config=given_upstream)

        expected = self.our_config
        actual = config_comparison.get_merged()

        self.assertEqual(expected, actual)
Exemplo n.º 7
0
    def test_is_local_identical(self) -> None:
        """
        Tests the method which let us check if the given local configuration
        is identical to the upstream one.
        """

        given_local = copy.deepcopy(self.our_config)
        given_upstream = copy.deepcopy(self.our_config)

        config_comparison = ConfigComparison(local_config=given_local,
                                             upstream_config=given_upstream)

        expected = True
        actual = config_comparison.is_local_identical()

        self.assertEqual(expected, actual)
Exemplo n.º 8
0
    def test_set_upstream_config_attribute(self) -> None:
        """
        Tests the method which let us set the upstream configuraiton to work with.

        In this case, we try to overwrite the attribute.
        """

        given = self.our_config
        expected = self.our_config

        config_comparison = ConfigComparison()
        config_comparison.upstream_config = given

        actual = config_comparison.upstream_config

        self.assertEqual(expected, actual)
Exemplo n.º 9
0
    def test_get_merged_empty_local(self) -> None:
        """
        Tests the method which let us get the (clean) merged configuration
        for the case that the given local configuration is empty -- which should
        never happens.
        """

        given_local = dict()  # pylint: disable=use-dict-literal
        given_upstream = copy.deepcopy(self.our_config)

        config_comparison = ConfigComparison(local_config=given_local,
                                             upstream_config=given_upstream)

        expected = self.our_config
        actual = config_comparison.get_merged()

        self.assertEqual(expected, actual)
Exemplo n.º 10
0
    def test_get_merged_wrong_user_agent(self) -> None:
        """
        Tests the method which let us get the (clean) merged configuration
        for the case that we still have the old user agent format.
        """

        given_local = copy.deepcopy(self.our_config)
        given_upstream = copy.deepcopy(self.our_config)

        given_local["user_agent"] = "Hello, World!"

        config_comparison = ConfigComparison(local_config=given_local,
                                             upstream_config=given_upstream)

        expected = self.our_config
        actual = config_comparison.get_merged()

        self.assertEqual(expected, actual)
Exemplo n.º 11
0
    def test_get_merged_3_x_dns_over_tcp(self) -> None:
        """
        Tests the method which let us get the (clean) merged configuration
        for the case that we still have the old dns_over_tcp index.
        """

        given_local = copy.deepcopy(self.our_config)
        given_upstream = copy.deepcopy(self.our_config)

        given_local["dns_lookup_over_tcp"] = True

        config_comparison = ConfigComparison(local_config=given_local,
                                             upstream_config=given_upstream)

        expected = self.our_config
        expected["dns"]["protocol"] = "TCP"
        actual = config_comparison.get_merged()

        self.assertEqual(expected, actual)
Exemplo n.º 12
0
    def test_get_merged_3_x_http_codes(self) -> None:
        """
        Tests the method which let us get the (clean) merged configuration
        for the case that we still have some of the old http_codes indexes.
        """

        given_local = copy.deepcopy(self.our_config)
        given_upstream = copy.deepcopy(self.our_config)

        given_local["http_codes"]["active"] = True
        given_local["http_codes"]["not_found_default"] = "XXXX"

        config_comparison = ConfigComparison(local_config=given_local,
                                             upstream_config=given_upstream)

        expected = self.our_config
        actual = config_comparison.get_merged()

        self.assertEqual(expected, actual)
Exemplo n.º 13
0
    def test_get_merged_3_x_json2csv(self) -> None:
        """
        Tests the method which let us get the (clean) merged configuration
        for the case that we still have the old db type index.
        """

        given_local = copy.deepcopy(self.our_config)
        given_upstream = copy.deepcopy(self.our_config)

        # Just to trigger the merge.
        given_local["http_codes"]["not_found_default"] = "XXXX"

        given_local["cli_testing"]["db_type"] = "json"

        config_comparison = ConfigComparison(local_config=given_local,
                                             upstream_config=given_upstream)

        expected = self.our_config
        actual = config_comparison.get_merged()

        self.assertEqual(expected, actual)
Exemplo n.º 14
0
    def test_is_local_identical_missing_key(self) -> None:
        """
        Tests the method which let us check if the given local configuration
        is identical to the upstream one for the case that a key is missing.
        """

        given_upstream = copy.deepcopy(self.our_config)

        to_delete = ["links", "http_codes", "user_agent"]

        for index in to_delete:
            given_local = copy.deepcopy(self.our_config)
            del given_local[index]

            config_comparison = ConfigComparison(
                local_config=given_local, upstream_config=given_upstream)

            expected = False
            actual = config_comparison.is_local_identical()

            self.assertEqual(expected, actual)
Exemplo n.º 15
0
    def get_config_file_content(self) -> dict:
        """
        Provides the content of the configuration file or the one already loaded.
        """

        def is_3_x_version(config: dict) -> bool:
            """
            Checks if the given configuration is an old one.

            :param config:
                The config to work with.
            """

            return config and "days_between_inactive_db_clean" in config

        if not self.is_already_loaded():
            self.install_missing_infrastructure_files()
            self.download_dynamic_infrastructure_files()

        try:
            config = self.dict_helper.from_yaml_file(self.path_to_config)
        except ConstructorError:
            self.file_helper.set_path(self.path_to_default_config).copy(
                self.path_to_config
            )
            config = self.dict_helper.from_yaml_file(self.path_to_config)

        if (
            not config or self.merge_upstream or is_3_x_version(config)
        ):  # pragma: no cover ## Testing the underlying comparison method is sufficent

            config = ConfigComparison(
                local_config=config,
                upstream_config=self.dict_helper.from_yaml_file(
                    self.path_to_default_config
                ),
            ).get_merged()

            self.dict_helper.set_subject(config).to_yaml_file(self.path_to_config)

        if self.file_helper.set_path(self.path_to_overwrite_config).exists():
            overwrite_data = self.dict_helper.from_yaml_file(
                self.path_to_overwrite_config
            )

            if overwrite_data:
                config = Merge(
                    self.dict_helper.from_yaml_file(self.path_to_overwrite_config)
                ).into(config)
        else:  # pragma: no cover  ## Just make it visible to end-user.
            self.file_helper.write("")

        return config
Exemplo n.º 16
0
    def test_is_local_identical_uneeded_links_key(self) -> None:
        """
        Tests the method which let us check if the given local configuration
        is identical to the upstream one for the case that a unneeded key
        inside the list of links is given.
        """

        given_upstream = copy.deepcopy(self.our_config)

        given_local = copy.deepcopy(self.our_config)
        given_local["links"].update({
            "config": "https://example.org/PyFunceble_config.yaml",
            "iana": "https://example.org/iana-db.json",
        })

        config_comparison = ConfigComparison(local_config=given_local,
                                             upstream_config=given_upstream)

        expected = False
        actual = config_comparison.is_local_identical()

        self.assertEqual(expected, actual)
Exemplo n.º 17
0
    def test_get_merged_3_x_old_to_new_nagated(self) -> None:
        """
        Tests the method which let us get the (clean) merged configuration
        for the case that we want to convert old keys to the new layout.
        """

        given_local = copy.deepcopy(self.our_config)
        given_upstream = copy.deepcopy(self.our_config)

        # Just to trigger the merge.
        given_local["http_codes"]["not_found_default"] = "XXXX"

        given_local["no_special"] = True

        config_comparison = ConfigComparison(local_config=given_local,
                                             upstream_config=given_upstream)

        expected = self.our_config
        expected["lookup"]["special"] = False
        actual = config_comparison.get_merged()

        self.assertEqual(expected, actual)
Exemplo n.º 18
0
    def test_get_merged_undeeded_links(self) -> None:
        """
        Tests the method which let us get the (clean) merged configuration
        for the case that we have some uneeded links.
        """

        uneeded_links = {
            "config": "https://example.org/PyFunceble_config.yaml",
            "iana": "https://example.org/iana-db.json",
        }

        given_local = copy.deepcopy(self.our_config)
        given_upstream = copy.deepcopy(self.our_config)

        given_local["links"].update(uneeded_links)

        config_comparison = ConfigComparison(local_config=given_local,
                                             upstream_config=given_upstream)

        expected = self.our_config
        actual = config_comparison.get_merged()

        self.assertEqual(expected, actual)
Exemplo n.º 19
0
    def test_get_merged_http_code_not_self_managed(self) -> None:
        """
        Tests the method which let us get the (clean) merged configuration
        for the case that the end-user is not managing the status code.
        """

        given_local = copy.deepcopy(self.our_config)
        given_upstream = copy.deepcopy(self.our_config)

        # Just to trigger the merge.
        given_local["http_codes"]["list"]["up"] = copy.deepcopy(
            self.our_config["http_codes"]["list"]["up"])

        # Assume end-user added this before getting away from self management.
        given_local["http_codes"]["list"]["up"].append(403)

        config_comparison = ConfigComparison(local_config=given_local,
                                             upstream_config=given_upstream)

        expected = self.our_config
        actual = config_comparison.get_merged()

        self.assertEqual(expected, actual)
Exemplo n.º 20
0
    def test_set_local_config_through_init(self) -> None:
        """
        Tests the method which let us set the local configuraiton to work with.

        In this case, we try to overwrite the attribute through the constructor.
        """

        given = self.our_config
        expected = self.our_config

        config_comparison = ConfigComparison(local_config=given)

        actual = config_comparison.local_config

        self.assertEqual(expected, actual)