Integration tests
This commit is contained in:
		
							parent
							
								
									64edeb8d40
								
							
						
					
					
						commit
						672575022d
					
				
					 15 changed files with 527 additions and 21 deletions
				
			
		
							
								
								
									
										0
									
								
								tests/integration/__init__.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								tests/integration/__init__.py
									
										
									
									
									
										Normal file
									
								
							
							
								
								
									
										33
									
								
								tests/integration/test_api.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								tests/integration/test_api.py
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,33 @@ | |||
| from fastapi.testclient import TestClient | ||||
| 
 | ||||
| from tests.factories import SecretFactory | ||||
| 
 | ||||
| 
 | ||||
| def test_store_secret_returns_key(client: TestClient): | ||||
|     response = client.post("/secret", json=dict(SecretFactory().build())) | ||||
| 
 | ||||
|     assert response.json()["key"] | ||||
| 
 | ||||
| 
 | ||||
| def test_stored_secret_could_be_retrieved(client: TestClient): | ||||
|     secret = SecretFactory().build() | ||||
|     response = client.post("/secret", json=dict(secret)) | ||||
| 
 | ||||
|     retrieval_key: str = response.json()["key"] | ||||
| 
 | ||||
|     response = client.get(f"/secret/{retrieval_key}") | ||||
| 
 | ||||
|     assert response.json()["data"] == secret.data | ||||
| 
 | ||||
| 
 | ||||
| def test_stored_secret_could_be_retrieved_only_once(client: TestClient): | ||||
|     secret = SecretFactory().build() | ||||
|     response = client.post("/secret", json=dict(secret)) | ||||
| 
 | ||||
|     retrieval_key: str = response.json()["key"] | ||||
| 
 | ||||
|     client.get(f"/secret/{retrieval_key}") | ||||
|     response = client.get(f"/secret/{retrieval_key}") | ||||
| 
 | ||||
|     assert response.status_code == 404 | ||||
|     assert secret.data not in response.text | ||||
							
								
								
									
										35
									
								
								tests/integration/test_utils.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								tests/integration/test_utils.py
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,35 @@ | |||
| from unittest.mock import patch | ||||
| 
 | ||||
| from redis.asyncio import Redis | ||||
| 
 | ||||
| from pssecret.utils import get_new_key, save_secret_data | ||||
| 
 | ||||
| from ..factories import SecretFactory | ||||
| 
 | ||||
| 
 | ||||
| async def test_get_new_key_returns_key(redis_server: Redis) -> None: | ||||
|     assert isinstance(await get_new_key(redis_server), str) | ||||
| 
 | ||||
| 
 | ||||
| async def test_get_new_key_returns_free_key(redis_server: Redis) -> None: | ||||
|     new_key = await get_new_key(redis_server) | ||||
|     res = not await redis_server.exists(new_key) | ||||
|     assert res | ||||
| 
 | ||||
| 
 | ||||
| @patch("pssecret.utils.uuid4", side_effect=("used", "free")) | ||||
| async def test_get_new_key_skips_used_keys(_, redis_server: Redis) -> None: | ||||
|     await redis_server.set("used", "") | ||||
| 
 | ||||
|     assert await get_new_key(redis_server) == "free" | ||||
| 
 | ||||
| 
 | ||||
| async def test_save_secret_data(redis_server: Redis) -> None: | ||||
|     secret = SecretFactory.build() | ||||
| 
 | ||||
|     key = await save_secret_data(secret, redis_server) | ||||
| 
 | ||||
|     redis_data: bytes | None = await redis_server.get(key) | ||||
| 
 | ||||
|     assert redis_data is not None | ||||
|     assert redis_data.decode() == secret.data | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue