示例#1
0
    def test_instance_not_in_auth_config(self):
        """
        GIVEN a config with a current instance not being a valid configured instance
        WHEN reading config.api_key
        THEN it raises
        """
        if "GITGUARDIAN_API_KEY" in os.environ:
            del os.environ["GITGUARDIAN_API_KEY"]
        config = Config()
        config.current_instance = "toto"

        with pytest.raises(UnknownInstanceError,
                           match="Unknown instance: 'toto'"):
            config.api_key
示例#2
0
    def test_instance_name_priority(
        self,
        current_instance,
        env_instance,
        local_instance,
        global_instance,
        default_instance,
        expected_instance,
        local_config_path,
        global_config_path,
    ):
        """
        GIVEN different instances defined in the different possible sources:
          - manually set on the config
          - env variable
          - local user config
          - global user config
          - default instance in the auth config
        WHEN reading the config instance
        THEN it respects the expected priority
        """
        if env_instance:
            os.environ["GITGUARDIAN_URL"] = env_instance
        elif "GITGUARDIAN_URL" in os.environ:
            del os.environ["GITGUARDIAN_URL"]
        if "GITGUARDIAN_API_URL" in os.environ:
            del os.environ["GITGUARDIAN_API_URL"]

        self.set_instances(
            local_instance=local_instance,
            global_instance=global_instance,
            default_instance=default_instance,
            local_filepath=local_config_path,
            global_filepath=global_config_path,
        )
        config = Config()
        config.current_instance = current_instance

        assert config.instance_name == expected_instance
        assert config.dashboard_url == expected_instance
        assert config.api_url == dashboard_to_api_url(expected_instance)
示例#3
0
    def test_api_key_priority(
        self,
        manual_key,
        env_var_key,
        manual_instance,
        env_var_instance,
        user_config_instance,
        default_instance,
        expected_api_key,
    ):
        """
        GIVEN different instances defined, and a gitguardian api key being manually passed
        or not to the config, and the env var being manually set or not
        WHEN reading the API key to use
        THEN it respects the priority:
        - manual API key
        - env var API key
        - from manual instance
        - from env var instance
        - from user config instance (local then global)
        - from default instance
        """
        if env_var_key:
            os.environ["GITGUARDIAN_API_KEY"] = env_var_key
        elif "GITGUARDIAN_API_KEY" in os.environ:
            del os.environ["GITGUARDIAN_API_KEY"]
        if env_var_instance:
            os.environ["GITGUARDIAN_URL"] = env_var_instance
        elif "GITGUARDIAN_URL" in os.environ:
            del os.environ["GITGUARDIAN_URL"]
        if "GITGUARDIAN_API_URL" in os.environ:
            del os.environ["GITGUARDIAN_API_URL"]

        config = Config()
        if manual_key:
            config.current_token = manual_key
        if manual_instance:
            config.current_instance = manual_instance
        if not env_var_instance:
            config.user_config.dashboard_url = user_config_instance
        config.auth_config.default_instance = default_instance

        def set_instance(url):
            if url is None:
                return
            api_key = url.replace("https://", "api_key_")
            config.auth_config.instances[url] = InstanceConfig(
                url=url,
                account=AccountConfig(
                    account_id=1,
                    token=api_key,
                    type="PAT",
                    token_name="name",
                    expire_at=None,
                ),
            )

        set_instance(manual_instance)
        set_instance(env_var_instance)
        set_instance(user_config_instance)
        set_instance(default_instance)

        assert config.api_key == expected_api_key