1
0
Fork 0

Adding basic integration tests.

This commit is contained in:
Adam Coddington 2015-04-11 23:42:14 -07:00
parent e5d36cbabf
commit 634f2f4b26
3 changed files with 92 additions and 13 deletions

View file

@ -1,24 +1,27 @@
language: python
python:
- "2.6"
- "2.7"
- "3.3"
- '2.6'
- '2.7'
- '3.3'
env:
matrix:
- DJANGO=1.4.14
- DJANGO=1.5.9
- DJANGO=1.6.8
- DJANGO=1.7.1
global:
- secure: aswHU7pQroGM+GHoYlhXzzk2FYfqxXJORjqXPsbgoHAIu4Bssaj8+YAzIcdy3j9kSt4I8VBpjnn8H/wzQXki75JBZOosQrIeMK018+uR+ZMONBLqDYW/N7EJHLgZt9QXxQNKeZygrD4GN/Dc4gLHGvPQC/RfPuuHcnF0Liaahoo=
- secure: RZ6M6984P885GRoyx9n/WCCWGoFAzYpS8sZkXu3e/HK9oPXfaM2IEHjkq03jIC/FcWn/QMtFjOUBqQU94rnqdivFdFkeZHk1WUQgC0hztH3Qhh9zu2PNIrYUDpVD5dJqBpprWbSwFP8yNsJlP9A2RUubTlZblKHuaBhhiuNN+kU=
- secure: gsAAl/RaTodLJDHWOuHZWtooa9/psyXBONF7ElZOTki3WvH+KugtjuXn3pXBGbUhvGqd5qfgPqX7WQOFP9KTdkXBbkU20rCHLh3SV8V2vRkGFAFiGPBTFfSA83zFNMvmgEnTww4OzYsfs4wHTEyxBeQkggnB5bXEvqkFVrHBjuQ=
- secure: mMa7UUt+CQDB52fGM1T3oRL67OzQzRIc+BQCOqUEUhBV7p5g7Y1Hv6NTdVZTvK16x3DsP+5kFNd1v7rsTFw2qzP3hOxIv2BtMPuSzZdnN85Zd/nGwnztxzj/rqw7TMBaYvIdEZZbpRF/K0p0Xr6LJK2s9UkPXPUaLqly7kNi360=
matrix:
exclude:
- env: DJANGO=1.4.14
python: "3.3"
- env: DJANGO=1.7.1
python: "2.6"
- env: DJANGO=1.4.14
python: '3.3'
- env: DJANGO=1.7.1
python: '2.6'
install:
- pip install -q Django==$DJANGO --use-mirrors
- pip install -q -e . --use-mirrors
- pip install -q Django==$DJANGO --use-mirrors
- pip install -q -e . --use-mirrors
script:
- python setup.py test
- python setup.py test

View file

@ -1,13 +1,20 @@
import email
import os.path
import time
import six
from django.conf import settings
from django.test import TestCase
from django_mailbox import models
from django_mailbox.models import Mailbox, Message
class EmailIntegrationTimeout(Exception):
pass
def get_email_as_text(name):
with open(
os.path.join(
@ -32,8 +39,32 @@ class EmailMessageTestCase(TestCase):
self._TEXT_STORED_MIMETYPES = models.TEXT_STORED_MIMETYPES
self.mailbox = Mailbox.objects.create(from_email='from@example.com')
self.test_account = os.environ['EMAIL_ACCOUNT']
self.test_password = os.environ['EMAIL_PASSWORD']
self.test_smtp_server = os.environ['EMAIL_SMTP_SERVER']
self.test_from_email = 'nobody@nowhere.com'
self.maximum_wait_seconds = 60 * 5
settings.EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
settings.EMAIL_HOST = self.test_smtp_server
settings.EMAIL_PORT = 587
settings.EMAIL_HOST_USER = self.test_account
settings.EMAIL_HOST_PASSWORD = self.test_password
settings.EMAIL_USE_TLS = True
super(EmailMessageTestCase, self).setUp()
def _get_new_messages(self, mailbox):
maximum_wait = time.time() + self.maximum_wait_seconds
while True:
if time.time() > maximum_wait:
raise EmailIntegrationTimeout()
messages = self.mailbox.get_new_mail()
if messages:
return messages
time.sleep(5)
def _get_email_as_text(self, name):
with open(
os.path.join(

View file

@ -0,0 +1,45 @@
import os
import urllib
import uuid
from django.core.mail import EmailMultiAlternatives
from django_mailbox.models import Mailbox
from django_mailbox.tests.base import EmailMessageTestCase
class TestImap(EmailMessageTestCase):
def setUp(self):
self.test_imap_server = (
os.environ['EMAIL_IMAP_SERVER']
)
self.mailbox = Mailbox.objects.create(
name='Integration Test Imap',
uri=self.get_connection_string()
)
def get_connection_string(self):
return "imap+ssl://{account}:{password}@{server}".format(
account=urllib.quote(self.test_account),
password=urllib.quote(self.test_password),
server=self.test_imap_server,
)
def test_get_imap_message(self):
arbitrary_identifier = uuid.uuid4()
text_content = 'This is some content'
msg = EmailMultiAlternatives(
arbitrary_identifier,
text_content,
self.test_from_email,
[
self.test_account,
]
)
msg.send()
messages = self.get_new_messages()
self.assertEqual(1, len(messages))
self.assertEqual(messages[0].subject, arbitrary_identifier)
self.assertEqual(messages[0].text, text_content)