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
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)
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