mirror of
				https://github.com/esphome/esphome.git
				synced 2025-10-25 13:13:48 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			54 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			54 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| """Integration test for Host mode with noise encryption."""
 | |
| 
 | |
| from __future__ import annotations
 | |
| 
 | |
| from aioesphomeapi import InvalidEncryptionKeyAPIError
 | |
| import pytest
 | |
| 
 | |
| from .types import APIClientConnectedFactory, RunCompiledFunction
 | |
| 
 | |
| # The API key for noise encryption
 | |
| NOISE_KEY = "N4Yle5YirwZhPiHHsdZLdOA73ndj/84veVaLhTvxCuU="
 | |
| 
 | |
| 
 | |
| @pytest.mark.asyncio
 | |
| async def test_host_mode_noise_encryption(
 | |
|     yaml_config: str,
 | |
|     run_compiled: RunCompiledFunction,
 | |
|     api_client_connected: APIClientConnectedFactory,
 | |
| ) -> None:
 | |
|     """Test Host mode with noise encryption enabled."""
 | |
|     # Write, compile and run the ESPHome device, then connect to API
 | |
|     # The API client should handle noise encryption automatically
 | |
|     async with (
 | |
|         run_compiled(yaml_config),
 | |
|         api_client_connected(noise_psk=NOISE_KEY) as client,
 | |
|     ):
 | |
|         # If we can get device info, the encryption is working
 | |
|         device_info = await client.device_info()
 | |
|         assert device_info is not None
 | |
|         assert device_info.name == "host-noise-test"
 | |
| 
 | |
|         # List entities to ensure the encrypted connection is fully functional
 | |
|         entities = await client.list_entities_services()
 | |
|         assert entities is not None
 | |
| 
 | |
| 
 | |
| @pytest.mark.asyncio
 | |
| async def test_host_mode_noise_encryption_wrong_key(
 | |
|     yaml_config: str,
 | |
|     run_compiled: RunCompiledFunction,
 | |
|     api_client_connected: APIClientConnectedFactory,
 | |
| ) -> None:
 | |
|     """Test that connection fails with wrong encryption key."""
 | |
|     # Write, compile and run the ESPHome device
 | |
|     async with run_compiled(yaml_config):
 | |
|         # Try to connect with wrong key - should fail with InvalidEncryptionKeyAPIError
 | |
|         with pytest.raises(InvalidEncryptionKeyAPIError):
 | |
|             async with api_client_connected(
 | |
|                 noise_psk="wrong_key_that_should_not_work",
 | |
|                 timeout=5,  # Shorter timeout for expected failure
 | |
|             ) as client:
 | |
|                 # This should not be reached
 | |
|                 await client.device_info()
 |