Skip to main content
Glama
leeguooooo
by leeguooooo
test_utils.py4.98 kB
""" Unit tests for utility functions - no external dependencies """ import unittest from datetime import datetime from pathlib import Path # Add parent directory to path import sys sys.path.insert(0, str(Path(__file__).parent.parent)) from src.legacy_operations import decode_mime_words from src.operations.email_operations import EmailOperations class TestUtils(unittest.TestCase): """Test utility functions""" def test_decode_mime_words_ascii(self): """Test decoding plain ASCII text""" result = decode_mime_words("Hello World") self.assertEqual(result, "Hello World") def test_decode_mime_words_encoded(self): """Test decoding MIME encoded text""" # UTF-8 encoded Chinese text encoded = "=?UTF-8?B?5L2g5aW9?=" result = decode_mime_words(encoded) self.assertEqual(result, "你好") # ISO-8859-1 encoded text encoded = "=?ISO-8859-1?Q?Caf=E9?=" result = decode_mime_words(encoded) self.assertEqual(result, "Café") def test_decode_mime_words_mixed(self): """Test decoding mixed encoded and plain text""" encoded = "=?UTF-8?B?5L2g5aW9?= Hello =?UTF-8?B?5LiW55WM?=" result = decode_mime_words(encoded) self.assertEqual(result, "你好 Hello 世界") def test_decode_mime_words_empty(self): """Test decoding empty or None""" self.assertEqual(decode_mime_words(""), "") self.assertEqual(decode_mime_words(None), "") def test_format_size(self): """Test file size formatting""" email_ops = EmailOperations(None) self.assertEqual(email_ops._format_size(0), "0.0 B") self.assertEqual(email_ops._format_size(512), "512.0 B") self.assertEqual(email_ops._format_size(1024), "1.0 KB") self.assertEqual(email_ops._format_size(1536), "1.5 KB") self.assertEqual(email_ops._format_size(1048576), "1.0 MB") self.assertEqual(email_ops._format_size(1073741824), "1.0 GB") class TestSearchCriteria(unittest.TestCase): """Test search criteria building""" def setUp(self): from src.operations.search_operations import SearchOperations self.search_ops = SearchOperations(None) def test_empty_criteria(self): """Test empty search criteria""" criteria = self.search_ops._build_search_criteria( None, "all", None, None, False ) self.assertEqual(criteria, "ALL") def test_subject_search(self): """Test subject search criteria""" criteria = self.search_ops._build_search_criteria( "meeting", "subject", None, None, False ) self.assertEqual(criteria, 'SUBJECT "meeting"') def test_from_search(self): """Test from search criteria""" criteria = self.search_ops._build_search_criteria( "john@example.com", "from", None, None, False ) self.assertEqual(criteria, 'FROM "john@example.com"') def test_unread_only(self): """Test unread only criteria""" criteria = self.search_ops._build_search_criteria( None, "all", None, None, True ) self.assertEqual(criteria, "UNSEEN") def test_date_range(self): """Test date range criteria""" criteria = self.search_ops._build_search_criteria( None, "all", "2024-01-01", "2024-01-31", False ) self.assertIn("SINCE", criteria) self.assertIn("BEFORE", criteria) def test_combined_criteria(self): """Test combined search criteria""" criteria = self.search_ops._build_search_criteria( "important", "subject", "2024-01-01", None, True ) self.assertIn('SUBJECT "important"', criteria) self.assertIn("SINCE", criteria) self.assertIn("UNSEEN", criteria) class TestConfigValidation(unittest.TestCase): """Test configuration validation""" def test_provider_config(self): """Test email provider configurations""" from src.connection_manager import ConnectionManager # Test known provider config = {'email': 'test@gmail.com', 'password': 'pass', 'provider': 'gmail'} conn_mgr = ConnectionManager(config) self.assertEqual(conn_mgr.config['imap_server'], 'imap.gmail.com') self.assertEqual(conn_mgr.config['smtp_server'], 'smtp.gmail.com') # Test custom provider config = { 'email': 'test@company.com', 'password': 'pass', 'provider': 'custom', 'imap_server': 'mail.company.com', 'smtp_server': 'smtp.company.com' } conn_mgr = ConnectionManager(config) self.assertEqual(conn_mgr.config['imap_server'], 'mail.company.com') self.assertEqual(conn_mgr.config['smtp_server'], 'smtp.company.com') if __name__ == '__main__': unittest.main()

Latest Blog Posts

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/leeguooooo/email-mcp-service'

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