1
0
Fork 1
mirror of https://github.com/coddingtonbear/django-mailbox.git synced 2026-07-09 22:38:19 +02:00

Adding tests.

This commit is contained in:
Adam Coddington 2013-01-19 00:26:58 -08:00
parent 19f64256b6
commit 0eb63b44cf
6 changed files with 162 additions and 2 deletions

12
.travis.yml Normal file
View file

@ -0,0 +1,12 @@
language: python
python:
- "2.6"
- "2.7"
env:
- DJANGO=1.3.1
- DJANGO=1.4
install:
- pip install -q Django==$DJANGO --use-mirrors
- pip install -q -e . --use-mirrors
script:
- python setup.py test

View file

@ -0,0 +1,36 @@
#!/usr/bin/env python
import sys
from os.path import dirname, abspath
from django.conf import settings
if not settings.configured:
settings.configure(
DATABASES={
'default': {
'ENGINE': 'django.db.backends.sqlite3',
},
},
INSTALLED_APPS=[
'django.contrib.auth',
'django.contrib.contenttypes',
'django_mailbox',
]
)
from django.test.simple import DjangoTestSuiteRunner
def runtests(*test_args):
if not test_args:
test_args = ['django_mailbox']
parent = dirname(abspath(__file__))
sys.path.insert(0, parent)
runner = DjangoTestSuiteRunner(verbosity=1, interactive=True)
failures = runner.run_tests(test_args)
sys.exit(failures)
if __name__ == '__main__':
runtests(*sys.argv[1:])

View file

@ -0,0 +1,65 @@
import email
import os.path
import shutil
from django.db import models
from django.test import TestCase
from django_mailbox.models import Mailbox
class TestProcessMessage(TestCase):
def _get_email_object(self, name):
with open(os.path.join(os.path.dirname(__file__), name), 'r') as f:
return email.message_from_string(
f.read()
)
def tearDown(self):
try:
shutil.rmtree('mailbox_attachments')
except OSError:
pass
def test_message_without_attachments(self):
message = self._get_email_object('generic_message.eml')
mailbox = Mailbox.objects.create()
msg = mailbox.process_incoming_message(message)
self.assertEqual(
msg.mailbox,
mailbox
)
self.assertEqual(msg.subject, 'Message Without Attachment')
self.assertEqual(
msg.message_id,
'<CAMdmm+hGH8Dgn-_0xnXJCd=PhyNAiouOYm5zFP0z-foqTO60zA@mail.gmail.com>'
)
self.assertEqual(
msg.from_header,
'Adam Coddington <test@adamcoddington.net>',
)
self.assertEqual(
msg.to_header,
'Adam Coddington <test@adamcoddington.net>',
)
def test_message_with_attachments(self):
message = self._get_email_object('message_with_attachment.eml')
mailbox = Mailbox.objects.create()
msg = mailbox.process_incoming_message(message)
expected_count = 1
actual_count = msg.attachments.count()
self.assertEquals(
expected_count,
actual_count,
)
attachment = msg.attachments.all()[0]
self.assertEquals(
os.path.basename(attachment.document.name),
'heart.png',
)

View file

@ -0,0 +1,14 @@
MIME-Version: 1.0
Received: by 10.221.0.211 with HTTP; Sun, 20 Jan 2013 11:53:53 -0800 (PST)
X-Originating-IP: [24.22.122.177]
Date: Sun, 20 Jan 2013 11:53:53 -0800
Delivered-To: test@adamcoddington.net
Message-ID: <CAMdmm+hGH8Dgn-_0xnXJCd=PhyNAiouOYm5zFP0z-foqTO60zA@mail.gmail.com>
Subject: Message Without Attachment
From: Adam Coddington <test@adamcoddington.net>
To: Adam Coddington <test@adamcoddington.net>
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: 7bit
Hello there.

View file

@ -0,0 +1,28 @@
MIME-Version: 1.0
Received: by 10.221.0.211 with HTTP; Sun, 20 Jan 2013 12:07:07 -0800 (PST)
X-Originating-IP: [24.22.122.177]
Date: Sun, 20 Jan 2013 12:07:07 -0800
Delivered-To: test@adamcoddington.net
Message-ID: <CAMdmm+jYCgrxrekAxszmDnBjAytcBym-Ec+uM-+HEtzuKy=M_g@mail.gmail.com>
Subject: Message With Attachment
From: Adam Coddington <test@adamcoddington.net>
To: Adam Coddington <test@adamcoddington.net>
Content-Type: multipart/mixed; boundary=047d7b33dd729737fe04d3bde348
--047d7b33dd729737fe04d3bde348
Content-Type: text/plain; charset=UTF-8
This message has an attachment.
--047d7b33dd729737fe04d3bde348
Content-Type: image/png; name="heart.png"
Content-Disposition: attachment; filename="heart.png"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_hc6mair60
iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAFoTx1HAAAAzUlEQVQoz32RWxXDIBBEr4NIQEIl
ICESkFAJkRAJSIgEpEQCEqYfu6QUkn7sCcyDGQiSACKSKCAkGwBJwhDwZQNMEiYAIBdQvk7rfaHf
AO8NBJwCxTGhtFgTHVNaNaJeWFu44AXEHzKCktc7zZ0vss+bMoHSiM2b9mQoX1eZCgGqnWskY3gi
XXAAxb8BqFiUgBNY7k49Tu/kV7UKPsefrjEOT9GmghYzrk9V03pjDGYKj3d0c06dKZkpTboRaD9o
B+1m2m81d2Az948xzgdjLaFe95e83AAAAABJRU5ErkJggg==
--047d7b33dd729737fe04d3bde348--

View file

@ -1,12 +1,17 @@
from distutils.core import setup from setuptools import setup
tests_require=['django']
setup( setup(
name='django-mailbox', name='django-mailbox',
version='1.5', version='1.6',
url='http://bitbucket.org/latestrevision/django-mailbox/', url='http://bitbucket.org/latestrevision/django-mailbox/',
description='Import mail from POP3, IMAP, local mailboxes or directly from Postfix or Exim4 into your Django application automatically.', description='Import mail from POP3, IMAP, local mailboxes or directly from Postfix or Exim4 into your Django application automatically.',
author='Adam Coddington', author='Adam Coddington',
author_email='me@adamcoddington.net', author_email='me@adamcoddington.net',
tests_require=tests_require,
extras_require={'test': tests_require},
test_suite='django_mailbox.runtests.runtests',
classifiers=[ classifiers=[
'Framework :: Django', 'Framework :: Django',
'Intended Audience :: Developers', 'Intended Audience :: Developers',