137 lines
5.6 KiB
Python
137 lines
5.6 KiB
Python
import pytest
|
|
import imaplib
|
|
from app.imap_service import IMAPService
|
|
from app.models import User, db
|
|
from app import create_app
|
|
|
|
class TestIMAPService:
|
|
def test_init_with_user(self, app):
|
|
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):
|
|
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, 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, 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
|
|
|
|
def test_test_connection_imap_error(self, mock_imap, 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 "IMAP connection error" in message
|
|
|
|
def test_test_connection_no_config(self, app):
|
|
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"
|
|
|
|
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'
|
|
|
|
def test_get_folders_empty(self, mock_imap, 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
|
|
|
|
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
|
|
|
|
def test_get_folders_no_config(self, app):
|
|
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')
|
|
user.imap_config = {'server': 'localhost', 'port': 5143, 'username': 'user1@example.com', 'password': 'password1'}
|
|
imap_service = IMAPService(user)
|
|
|
|
success, message = imap_service.sync_folders()
|
|
|
|
assert success is True
|
|
assert "Successfully synced 2 folders" in message
|
|
|
|
def test_sync_folders_no_config(self, mock_imap, app):
|
|
user = User(email='test@example.com', first_name='Test', last_name='User')
|
|
imap_service = IMAPService(user)
|
|
|
|
success, message = imap_service.sync_folders()
|
|
|
|
assert success is False
|
|
assert message == "No IMAP configuration found"
|
|
|
|
def test_sync_folders_no_folders(self, mock_imap, 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.sync_folders()
|
|
|
|
assert success is False
|
|
assert message == "No folders found on IMAP server"
|
|
|
|
def test_sync_folders_exception(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.sync_folders()
|
|
|
|
assert success is False
|
|
assert "Sync error" in message |