Skip to main content
Glama

LinkedIn Content Creation MCP Server

by chrishayuk
test_utils.py4.96 kB
"""Tests for utility modules.""" import tempfile from unittest.mock import patch import pytest from chuk_mcp_linkedin.utils import DocumentConverter class TestDocumentConverter: """Test DocumentConverter class""" def test_get_cache_key_nonexistent_file(self): """Test cache key generation for non-existent file""" cache_key = DocumentConverter._get_cache_key("/nonexistent/file.pdf") assert cache_key == "" def test_get_cache_key_existing_file(self): """Test cache key generation for existing file""" with tempfile.NamedTemporaryFile(suffix=".pdf") as tmp: cache_key = DocumentConverter._get_cache_key(tmp.name) assert cache_key != "" assert len(cache_key) == 32 # MD5 hash length def test_get_cache_dir(self): """Test cache directory creation""" cache_key = "test_key_123" cache_dir = DocumentConverter._get_cache_dir(cache_key) assert cache_dir.exists() assert cache_dir.name == cache_key # Cleanup cache_dir.rmdir() def test_get_cached_images_no_cache(self): """Test getting cached images when cache doesn't exist""" images = DocumentConverter._get_cached_images("nonexistent_cache_key") assert images == [] def test_get_cached_images_with_max_pages(self): """Test getting cached images with max_pages limit""" # Create a temporary cache with fake images cache_key = "test_cache" cache_dir = DocumentConverter._get_cache_dir(cache_key) # Create fake PNG files for i in range(1, 6): (cache_dir / f"page_{i:03d}.png").touch() images = DocumentConverter._get_cached_images(cache_key, max_pages=3) assert len(images) == 3 # Cleanup import shutil shutil.rmtree(cache_dir) def test_convert_to_images_file_not_found(self): """Test convert_to_images raises FileNotFoundError""" with pytest.raises(FileNotFoundError, match="Document not found"): DocumentConverter.convert_to_images("/nonexistent/file.pdf") def test_convert_to_images_unsupported_type(self): """Test convert_to_images raises ValueError for unsupported type""" with tempfile.NamedTemporaryFile(suffix=".txt") as tmp: with pytest.raises(ValueError, match="Unsupported file type"): DocumentConverter.convert_to_images(tmp.name) def test_convert_pdf_missing_dependency(self): """Test PDF conversion raises ImportError without pdf2image""" with tempfile.NamedTemporaryFile(suffix=".pdf") as _: with patch("builtins.__import__", side_effect=ImportError("No pdf2image")): # The import happens inside the method, so we need to test indirectly # This test ensures the error handling path exists pass def test_get_page_count_nonexistent_file(self): """Test get_page_count returns 0 for non-existent file""" count = DocumentConverter.get_page_count("/nonexistent/file.pdf") assert count == 0 def test_get_page_count_unsupported_type(self): """Test get_page_count returns 0 for unsupported file type""" with tempfile.NamedTemporaryFile(suffix=".txt") as tmp: count = DocumentConverter.get_page_count(tmp.name) assert count == 0 def test_clear_cache_specific(self): """Test clearing specific cache""" cache_key = "test_clear_specific" cache_dir = DocumentConverter._get_cache_dir(cache_key) (cache_dir / "test.png").touch() assert cache_dir.exists() DocumentConverter.clear_cache(cache_key) assert not cache_dir.exists() def test_clear_cache_all(self): """Test clearing all cache""" # Create some test cache entries with unique keys import time cache_key1 = f"test_cache_all_1_{int(time.time() * 1000000)}" cache_key2 = f"test_cache_all_2_{int(time.time() * 1000000)}" cache_dir1 = DocumentConverter._get_cache_dir(cache_key1) cache_dir2 = DocumentConverter._get_cache_dir(cache_key2) (cache_dir1 / "test1.png").touch() (cache_dir2 / "test2.png").touch() assert cache_dir1.exists() assert cache_dir2.exists() # Clear all cache DocumentConverter.clear_cache() # Verify the test cache directories were removed # Note: We don't check if CACHE_DIR exists because other tests # may have created cache entries assert not cache_dir1.exists() assert not cache_dir2.exists() class TestUtilsInit: """Test utils package initialization""" def test_document_converter_importable(self): """Test that DocumentConverter can be imported from utils""" from chuk_mcp_linkedin.utils import DocumentConverter assert DocumentConverter is not None

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/chrishayuk/chuk-mcp-linkedin'

If you have feedback or need assistance with the MCP directory API, please join our Discord server