# test_utils.py # # author: deng # date: 20251129 import base64 import tempfile from pathlib import Path import pytest class TestConvertImageToBase64: """Test cases for convert_image_to_base64 function.""" @pytest.fixture def temp_image_file(self): """Create a temporary image file for testing.""" with tempfile.NamedTemporaryFile(mode='wb', suffix='.jpg', delete=False) as f: # Create a simple test image (1x1 red pixel) f.write(b'\xff\xd8\xff\xe0\x00\x10JFIF') # JPEG header temp_path = f.name yield temp_path # Cleanup Path(temp_path).unlink(missing_ok=True) def test_convert_image_to_base64_returns_string(self, temp_image_file): """Test that function returns a string.""" from hiking_assistant.utils import convert_image_to_base64 result = convert_image_to_base64(temp_image_file) assert isinstance(result, str) def test_convert_image_to_base64_returns_valid_base64(self, temp_image_file): """Test that returned string is valid base64.""" from hiking_assistant.utils import convert_image_to_base64 result = convert_image_to_base64(temp_image_file) # Try to decode - should not raise exception decoded = base64.b64decode(result) assert isinstance(decoded, bytes) def test_convert_image_to_base64_roundtrip(self, temp_image_file): """Test roundtrip conversion (file -> base64 -> binary).""" from hiking_assistant.utils import convert_image_to_base64 # Read original file with open(temp_image_file, 'rb') as f: original_data = f.read() # Convert to base64 and back base64_str = convert_image_to_base64(temp_image_file) decoded_data = base64.b64decode(base64_str) assert decoded_data == original_data def test_convert_image_to_base64_nonexistent_file_raises_error(self): """Test that function raises error for non-existent file.""" from hiking_assistant.utils import convert_image_to_base64 with pytest.raises(FileNotFoundError): convert_image_to_base64('/nonexistent/path/to/image.jpg')