mirror of
				https://github.com/deepset-ai/haystack.git
				synced 2025-10-31 17:59:27 +00:00 
			
		
		
		
	 b772c1127c
			
		
	
	
		b772c1127c
		
			
		
	
	
	
	
		
			
			* feat: Implement `AuthPolicy` for structured authentication * Rename `AuthPolicy` to `Secret` * Update release notes, fix typo
		
			
				
	
	
		
			64 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			64 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| import os
 | |
| 
 | |
| import pytest
 | |
| 
 | |
| from haystack.utils.auth import Secret, EnvVarSecret, SecretType, TokenSecret
 | |
| 
 | |
| 
 | |
| def test_secret_type():
 | |
|     for e in SecretType:
 | |
|         assert e == SecretType.from_str(e.value)
 | |
| 
 | |
|     with pytest.raises(ValueError, match="Unknown secret type"):
 | |
|         SecretType.from_str("disk")
 | |
| 
 | |
| 
 | |
| def test_token_secret():
 | |
|     secret = Secret.from_token("test-token")
 | |
|     assert secret._type == SecretType.TOKEN
 | |
|     assert isinstance(secret, TokenSecret)
 | |
|     assert secret._token == "test-token"
 | |
|     assert secret.resolve_value() == "test-token"
 | |
| 
 | |
|     with pytest.raises(ValueError, match="Cannot serialize token-based secret"):
 | |
|         secret.to_dict()
 | |
| 
 | |
|     with pytest.raises(ValueError, match="cannot be empty"):
 | |
|         Secret.from_token("")
 | |
| 
 | |
| 
 | |
| def test_env_var_secret():
 | |
|     secret = Secret.from_env_var("TEST_ENV_VAR1")
 | |
|     os.environ["TEST_ENV_VAR1"] = "test-token"
 | |
| 
 | |
|     assert secret._type == SecretType.ENV_VAR
 | |
|     assert isinstance(secret, EnvVarSecret)
 | |
|     assert secret._env_vars == ["TEST_ENV_VAR1"]
 | |
|     assert secret._strict is True
 | |
|     assert secret.resolve_value() == "test-token"
 | |
| 
 | |
|     del os.environ["TEST_ENV_VAR1"]
 | |
|     with pytest.raises(ValueError, match="None of the following .* variables are set"):
 | |
|         secret.resolve_value()
 | |
| 
 | |
|     secret = Secret.from_env_var("TEST_ENV_VAR2", strict=False)
 | |
|     assert secret._strict is False
 | |
|     assert secret.resolve_value() == None
 | |
| 
 | |
|     secret = Secret.from_env_var(["TEST_ENV_VAR2", "TEST_ENV_VAR1"], strict=True)
 | |
|     assert secret._env_vars == ["TEST_ENV_VAR2", "TEST_ENV_VAR1"]
 | |
|     with pytest.raises(ValueError, match="None of the following .* variables are set"):
 | |
|         secret.resolve_value()
 | |
|     os.environ["TEST_ENV_VAR1"] = "test-token-2"
 | |
|     assert secret.resolve_value() == "test-token-2"
 | |
|     os.environ["TEST_ENV_VAR2"] = "test-token"
 | |
|     assert secret.resolve_value() == "test-token"
 | |
| 
 | |
|     with pytest.raises(ValueError, match="One or more environment variables"):
 | |
|         Secret.from_env_var([])
 | |
| 
 | |
|     assert secret.to_dict() == {"type": "env_var", "env_vars": ["TEST_ENV_VAR2", "TEST_ENV_VAR1"], "strict": True}
 | |
|     assert (
 | |
|         Secret.from_dict({"type": "env_var", "env_vars": ["TEST_ENV_VAR2", "TEST_ENV_VAR1"], "strict": True}) == secret
 | |
|     )
 |