apigateway / tests /test_gmail_service.py
jebin2's picture
refactor
e39877e
import unittest
from unittest.mock import MagicMock, patch
from services.email_service import GmailService
class TestGmailService(unittest.TestCase):
@patch('services.email_service.build')
@patch('services.email_service.Credentials')
def test_send_email_success(self, mock_credentials, mock_build):
# Mock the service and its methods
mock_service = MagicMock()
mock_build.return_value = mock_service
# Mock the send method
mock_messages = mock_service.users.return_value.messages.return_value
mock_messages.send.return_value.execute.return_value = {'id': '12345'}
# Initialize service
service = GmailService()
service.client_id = "dummy_id"
service.client_secret = "dummy_secret"
service.refresh_token = "dummy_token"
# Test authenticate
self.assertTrue(service.authenticate())
# Test send_email
result = service.send_email("test@example.com", "Test Subject", "Test Body")
self.assertTrue(result)
# Verify calls
mock_messages.send.assert_called_once()
def test_missing_credentials(self):
service = GmailService()
# Ensure credentials are None
service.client_id = None
self.assertFalse(service.authenticate())
if __name__ == '__main__':
unittest.main()