From e6c8388ba6b5a77e691ec3b08e4f459c10c6da3c Mon Sep 17 00:00:00 2001 From: Bryce Date: Tue, 5 Aug 2025 14:39:55 -0700 Subject: [PATCH] progress --- tests/test_imap_service.py | 202 ++++++++++++++----------------------- 1 file changed, 74 insertions(+), 128 deletions(-) diff --git a/tests/test_imap_service.py b/tests/test_imap_service.py index 23a735b..313cc6b 100644 --- a/tests/test_imap_service.py +++ b/tests/test_imap_service.py @@ -2,152 +2,98 @@ import pytest import imaplib from app.imap_service import IMAPService from app.models import User, db -from unittest.mock import Mock, patch, MagicMock from app import create_app class TestIMAPService: def test_init_with_user(self, app): - with app.app_context(): - user = User(email='test@example.com', first_name='Test', last_name='User') - user.imap_config = {'server': 'test.com', 'port': 993} - imap_service = IMAPService(user) - assert imap_service.user == user - assert imap_service.config == {'server': 'test.com', 'port': 993} + user = User(email='test@example.com', first_name='Test', last_name='User') + user.imap_config = {'server': 'test.com', 'port': 993} + imap_service = IMAPService(user) + assert imap_service.user == user + assert imap_service.config == {'server': 'test.com', 'port': 993} def test_init_without_config(self, app): - with app.app_context(): - user = User(email='test@example.com', first_name='Test', last_name='User') - imap_service = IMAPService(user) - assert imap_service.user == user - assert imap_service.config == {} + user = User(email='test@example.com', first_name='Test', last_name='User') + imap_service = IMAPService(user) + assert imap_service.user == user + assert imap_service.config == {} - def test_test_connection_success(self, mock_imap, app): - with app.app_context(): - # Mock successful connection - mock_connection = Mock() - mock_imap.return_value = mock_connection - mock_connection.login.return_value = None - mock_connection.select.return_value = ('OK', [b'']) - mock_connection.close.return_value = None - mock_connection.logout.return_value = None - - user = User(email='test@example.com', first_name='Test', last_name='User') - user.imap_config = {'server': 'localhost', 'port': 5143, 'username': 'user1@example.com', 'password': 'password1', 'use_ssl': False} - imap_service = IMAPService(user) - - success, message = imap_service.test_connection() - - assert message == "Connection successful" - assert success is True + def test_test_connection_success(self, app): + user = User(email='test@example.com', first_name='Test', last_name='User') + user.imap_config = {'server': 'localhost', 'port': 5143, 'username': 'user1@example.com', 'password': 'password1', 'use_ssl': False} + imap_service = IMAPService(user) + + success, message = imap_service.test_connection() + + assert message == "Connection successful" + assert success is True - def test_test_connection_failure(self, mock_imap, app): - with app.app_context(): - # Mock failed connection - mock_imap.side_effect = Exception("Connection failed") - - user = User(email='test@example.com', first_name='Test', last_name='User') - user.imap_config = {'server': 'test.com', 'port': 993, 'username': 'user', 'password': 'pass'} - imap_service = IMAPService(user) - - success, message = imap_service.test_connection() - - assert success is False - assert "Connection error" in message + def test_test_connection_failure(self, app): + user = User(email='test@example.com', first_name='Test', last_name='User') + user.imap_config = {'server': 'test.com', 'port': 993, 'username': 'user', 'password': 'pass'} + imap_service = IMAPService(user) + + success, message = imap_service.test_connection() + + assert success is False + assert "Connection error" in message - @patch('app.imap_service.imaplib.IMAP4_SSL') def test_test_connection_imap_error(self, mock_imap, app): - with app.app_context(): - # Mock IMAP4.error - mock_imap.side_effect = imaplib.IMAP4.error("IMAP error") - - user = User(email='test@example.com', first_name='Test', last_name='User') - user.imap_config = {'server': 'test.com', 'port': 993, 'username': 'user', 'password': 'pass'} - imap_service = IMAPService(user) - - success, message = imap_service.test_connection() - - assert success is False - assert "IMAP connection error" in message + user = User(email='test@example.com', first_name='Test', last_name='User') + user.imap_config = {'server': 'test.com', 'port': 993, 'username': 'user', 'password': 'pass'} + imap_service = IMAPService(user) + + success, message = imap_service.test_connection() + + assert success is False + assert "IMAP connection error" in message def test_test_connection_no_config(self, app): - with app.app_context(): - user = User(email='test@example.com', first_name='Test', last_name='User') - imap_service = IMAPService(user) - - success, message = imap_service.test_connection() - - assert success is False - assert message == "No IMAP configuration found" + user = User(email='test@example.com', first_name='Test', last_name='User') + imap_service = IMAPService(user) + + success, message = imap_service.test_connection() + + assert success is False + assert message == "No IMAP configuration found" - @patch('app.imap_service.imaplib.IMAP4_SSL') - def test_get_folders_success(self, mock_imap, app): - with app.app_context(): - # Mock successful connection and folder listing - mock_connection = Mock() - mock_imap.return_value = mock_connection - mock_connection.login.return_value = None - mock_connection.list.return_value = ('OK', [b'(\\HasNoChildren) "INBOX"', b'(\\HasNoChildren) "Sent"', b'(\\HasNoChildren) "Drafts"']) - mock_connection.close.return_value = None - mock_connection.logout.return_value = None - - user = User(email='test@example.com', first_name='Test', last_name='User') - user.imap_config = {'server': 'test.com', 'port': 993, 'username': 'user', 'password': 'pass'} - imap_service = IMAPService(user) - - folders = imap_service.get_folders() - - assert len(folders) == 3 - assert folders[0]['name'] == 'INBOX' - assert folders[1]['name'] == 'Sent' - assert folders[2]['name'] == 'Drafts' + def test_get_folders_success(self, app): + user = User(email='test@example.com', first_name='Test', last_name='User') + user.imap_config = {'server': 'test.com', 'port': 993, 'username': 'user', 'password': 'pass'} + imap_service = IMAPService(user) + + folders = imap_service.get_folders() + + assert len(folders) == 3 + assert folders[0]['name'] == 'INBOX' + assert folders[1]['name'] == 'Sent' + assert folders[2]['name'] == 'Drafts' - @patch('app.imap_service.imaplib.IMAP4_SSL') def test_get_folders_empty(self, mock_imap, app): - with app.app_context(): - # Mock empty folder listing - mock_connection = Mock() - mock_imap.return_value = mock_connection - mock_connection.login.return_value = None - mock_connection.list.return_value = ('OK', []) - mock_connection.close.return_value = None - mock_connection.logout.return_value = None - - user = User(email='test@example.com', first_name='Test', last_name='User') - user.imap_config = {'server': 'test.com', 'port': 993, 'username': 'user', 'password': 'pass'} - imap_service = IMAPService(user) - - folders = imap_service.get_folders() - - assert len(folders) == 0 + user = User(email='test@example.com', first_name='Test', last_name='User') + user.imap_config = {'server': 'test.com', 'port': 993, 'username': 'user', 'password': 'pass'} + imap_service = IMAPService(user) + + folders = imap_service.get_folders() + + assert len(folders) == 0 - @patch('app.imap_service.imaplib.IMAP4_SSL') - def test_get_folders_error(self, mock_imap, app): - with app.app_context(): - # Mock error in folder listing - mock_connection = Mock() - mock_imap.return_value = mock_connection - mock_connection.login.return_value = None - mock_connection.list.return_value = ('NO', [b'Error']) - mock_connection.close.return_value = None - mock_connection.logout.return_value = None - - user = User(email='test@example.com', first_name='Test', last_name='User') - user.imap_config = {'server': 'test.com', 'port': 993, 'username': 'user', 'password': 'pass'} - imap_service = IMAPService(user) - - folders = imap_service.get_folders() - - assert len(folders) == 0 + def test_get_folders_error(self, app): + user = User(email='test@example.com', first_name='Test', last_name='User') + user.imap_config = {'server': 'test.com', 'port': 993, 'username': 'user', 'password': 'pass'} + imap_service = IMAPService(user) + + folders = imap_service.get_folders() + + assert len(folders) == 0 - @patch('app.imap_service.imaplib.IMAP4_SSL') def test_get_folders_no_config(self, app): - with app.app_context(): - user = User(email='test@example.com', first_name='Test', last_name='User') - imap_service = IMAPService(user) - - folders = imap_service.get_folders() - - assert len(folders) == 0 + user = User(email='test@example.com', first_name='Test', last_name='User') + imap_service = IMAPService(user) + + folders = imap_service.get_folders() + + assert len(folders) == 0 def test_sync_folders_success(self, app): user = User(email='test@example.com', first_name='Test', last_name='User')