Spaces:
Running
Running
| import base64 | |
| import pytest | |
| from langflow.utils.image import convert_image_to_base64, create_data_url | |
| def sample_image(tmp_path): | |
| """Create a sample image file for testing.""" | |
| image_path = tmp_path / "test_image.png" | |
| # Create a small black 1x1 pixel PNG file | |
| image_content = base64.b64decode( | |
| "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAACklEQVR4nGMAAQAABQABDQottAAAAABJRU5ErkJggg==" | |
| ) | |
| image_path.write_bytes(image_content) | |
| return image_path | |
| class TestImageUtils: | |
| def test_convert_image_to_base64_success(self, sample_image): | |
| """Test successful conversion of image to base64.""" | |
| base64_str = convert_image_to_base64(sample_image) | |
| assert isinstance(base64_str, str) | |
| # Verify it's valid base64 | |
| assert base64.b64decode(base64_str) | |
| def test_convert_image_to_base64_empty_path(self): | |
| """Test conversion with empty path.""" | |
| with pytest.raises(ValueError, match="Image path cannot be empty"): | |
| convert_image_to_base64("") | |
| def test_convert_image_to_base64_nonexistent_file(self): | |
| """Test conversion with non-existent file.""" | |
| with pytest.raises(FileNotFoundError, match="Image file not found"): | |
| convert_image_to_base64("nonexistent.png") | |
| def test_convert_image_to_base64_directory(self, tmp_path): | |
| """Test conversion with directory path instead of file.""" | |
| with pytest.raises(ValueError, match="Path is not a file"): | |
| convert_image_to_base64(tmp_path) | |
| def test_create_data_url_success(self, sample_image): | |
| """Test successful creation of data URL.""" | |
| data_url = create_data_url(sample_image) | |
| assert data_url.startswith("data:image/png;base64,") | |
| # Verify the base64 part is valid | |
| base64_part = data_url.split(",")[1] | |
| assert base64.b64decode(base64_part) | |
| def test_create_data_url_with_custom_mime(self, sample_image): | |
| """Test creation of data URL with custom MIME type.""" | |
| custom_mime = "image/custom" | |
| data_url = create_data_url(sample_image, mime_type=custom_mime) | |
| assert data_url.startswith(f"data:{custom_mime};base64,") | |
| def test_create_data_url_invalid_file(self): | |
| """Test creation of data URL with invalid file.""" | |
| with pytest.raises(FileNotFoundError): | |
| create_data_url("nonexistent.jpg") | |
| def test_create_data_url_unrecognized_extension(self, tmp_path): | |
| """Test creation of data URL with unrecognized file extension.""" | |
| invalid_file = tmp_path / "test.unknown" | |
| invalid_file.touch() | |
| with pytest.raises(ValueError, match="Could not determine MIME type"): | |
| create_data_url(invalid_file) | |