summaryrefslogtreecommitdiff
path: root/tests/test_import_emails.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_import_emails.py')
-rw-r--r--tests/test_import_emails.py116
1 files changed, 80 insertions, 36 deletions
diff --git a/tests/test_import_emails.py b/tests/test_import_emails.py
index f576818..d1f57c2 100644
--- a/tests/test_import_emails.py
+++ b/tests/test_import_emails.py
@@ -6,9 +6,9 @@ import import_emails
from django.conf import settings
from django.test import TestCase
+from django.contrib.auth.models import User
from patchwork.models import Comment, Patch, Person, Project, State
from linaro_metrics.models import Team, TeamCredit, TeamMembership
-from linaro_metrics.sync_teams import get_or_create_person
import mock
@@ -42,12 +42,69 @@ class ImapFake(object):
class TestImportEmail(TestCase):
fixtures = ['default_states']
+ def tearDown(self):
+ super(TestImportEmail, self).tearDown()
+ Person.objects.all().delete()
+ User.objects.all().delete()
+
def setUp(self):
super(TestImportEmail, self).setUp()
self.tmpdir = tempfile.mkdtemp()
self.addCleanup(shutil.rmtree, self.tmpdir)
+ self.user = User.objects.create(
+ email='user.name@linaro.org',
+ username='user.name',
+ first_name='User',
+ last_name='Name',
+ is_active=True
+ )
+
+ self.user2 = User.objects.create(
+ email='peter.maydell@linaro.org',
+ username='peter.maydell',
+ first_name='Peter',
+ last_name='Maydell',
+ is_active=True
+ )
+
+ self.person = Person.objects.create(
+ email='user.name@linaro.org',
+ name='User Name',
+ user=self.user
+ )
+
+ self.person2 = Person.objects.create(
+ email='user.name@kernel.org',
+ name='User Name',
+ user=self.user
+ )
+
+ self.person3 = Person.objects.create(
+ email='peter.maydell@linaro.org',
+ name='Peter Maydell',
+ user=self.user2
+ )
+
+ self.person_other = Person.objects.create(
+ email='robh@kernel.org',
+ name='Rob Herring',
+ user=self.user
+ )
+
+ self.person_olof = Person.objects.create(
+ email='olof@lixom.net',
+ name='Olof Johansson',
+ user=self.user2
+ )
+
+ self.notlinaro_person = Person.objects.create(
+ email='not@notlinaro.org',
+ name='Not Linaro',
+ user=None
+ )
+
p = Project.objects.create(listid='lng-odp.lists.linaro.org')
self.addCleanup(p.delete)
@@ -89,21 +146,25 @@ class TestImportEmail(TestCase):
settings.PARSEMAIL_MONKEY_PATCHER = 'tests.test_import_emails.ImapFake'
self.assertEqual(ImapFake, import_emails.get_monkey_patcher())
- @mock.patch('linaro_metrics.parsemail.Crowd')
- def test_monkey_patch_linaro_only(self, crowd):
+ def test_monkey_patch_linaro_only(self):
'''Test that monkey patching rejects non-linaro patches'''
- crowd().user_valid.return_value = False
Project.objects.all().delete()
with import_emails.get_monkey_patcher()(import_emails.parser):
self._import_patch('non_linaro.mbox')
self.assertEqual(0, Patch.objects.all().count())
- @mock.patch('linaro_metrics.parsemail.Crowd')
- def test_monkey_patch_author_check_user_created(self, crowd):
+ def test_monkey_patch_author_check_user_created(self):
'''Test that we can find the author from the patch comment. The
author is linaro but doesn't exist locally'''
Project.objects.all().delete()
- crowd().get_user_no_cache.return_value = {'display-name': 'User Name'}
+ # junk
+ self.assertEqual(1, User.objects.filter(username='user.name').count())
+ self.assertEqual(
+ Person.objects.filter(email='user.name@linaro.org').first().user,
+ User.objects.filter(username='user.name').first()
+ )
+ # junk
+
with import_emails.get_monkey_patcher()(import_emails.parser):
self._import_patch('author_submitter_differ.mbox')
self.assertEqual(1, Patch.objects.all().count())
@@ -116,26 +177,22 @@ class TestImportEmail(TestCase):
p = Project.objects.get(linkname=settings.DEFAULT_PROJECT)
self.assertEqual(p, patches[0].project)
- @mock.patch('linaro_metrics.parsemail.Crowd')
- def test_monkey_patch_submitter_is_linaro(self, crowd):
+ def test_monkey_patch_submitter_is_linaro(self):
'''A valid Linaro User may submit patches on behalf of a user. We have
users that want to track these patches in our instance, but we
SHOULD NOT contribute these to "team credits"'''
Project.objects.all().delete()
- crowd().get_user_no_cache.return_value = {'display-name': 'User Name'}
with import_emails.get_monkey_patcher()(import_emails.parser):
self._import_patch('applied-patch.mbox')
self.assertEqual(0, Patch.objects.all().count())
tcs = TeamCredit.objects.all()
self.assertEqual(0, tcs.count())
- @mock.patch('linaro_metrics.parsemail.Crowd')
- def test_monkey_patch_maintainer_applied(self, crowd):
+ def test_monkey_patch_maintainer_applied(self):
'''Don't give a patch credit to a maintainer applying a patch to a
tree'''
Project.objects.all().delete()
- crowd().get_user_no_cache.return_value = {'display-name': 'User Name'}
with import_emails.get_monkey_patcher()(import_emails.parser):
self._import_patch('author_not_linaro.mbox')
self.assertEqual(1, Patch.objects.all().count())
@@ -147,17 +204,14 @@ class TestImportEmail(TestCase):
p = Project.objects.get(linkname=settings.DEFAULT_PROJECT)
self.assertEqual(p, patches[0].project)
- @mock.patch('linaro_metrics.parsemail.Crowd')
- def _test_patch_auth(self, patch, author, crowd):
+ def _test_patch_auth(self, patch, author):
Project.objects.all().delete()
- Person.objects.all().delete()
self.auth_found = None
- def get_user_no_cache(email):
- self.auth_found = email
- return {'display-name': 'User Name'}
+ person = Person.objects.filter(email=author)
+ if person.count() > 0:
+ self.auth_found = person[0].email
- crowd().get_user_no_cache = get_user_no_cache
with import_emails.get_monkey_patcher()(import_emails.parser):
self._import_patch(patch)
self.assertEqual(1, Patch.objects.all().count())
@@ -180,31 +234,24 @@ class TestImportEmail(TestCase):
self._test_patch_auth(
'cp8859.mbox', 'user.name@linaro.org')
- with mock.patch('linaro_metrics.parsemail.Crowd') as crowd:
- crowd().user_valid.return_value = False
- with import_emails.get_monkey_patcher()(import_emails.parser):
- self._import_patch('cp8859_comment.mbox')
- self.assertEqual(1, Comment.objects.all().count())
+ with import_emails.get_monkey_patcher()(import_emails.parser):
+ self._import_patch('cp8859_comment.mbox')
+ self.assertEqual(1, Comment.objects.all().count())
- @mock.patch('linaro_metrics.parsemail.Crowd')
- def test_monkey_patch_user_is_linaro(self, crowd):
+ def test_monkey_patch_user_is_linaro(self):
'''A valid Linaro User may submit patches from a non-linaro looking
Person'''
Project.objects.all().delete()
def user_valid(email):
return email.endswith('@linaro.org')
- crowd().user_valid = user_valid
- crowd().get_user_no_cache.return_value = {'display-name': 'User Name'}
- person = get_or_create_person(crowd(), 'user.name@linaro.org')
teams = [
Team.objects.create(name='foo'),
Team.objects.create(name='bar'),
]
for t in teams:
- TeamMembership.objects.create(team=t, user=person.user)
- Person.objects.create(email='robh@kernel.org', user=person.user)
+ TeamMembership.objects.create(team=t, user=self.user)
with import_emails.get_monkey_patcher()(import_emails.parser):
self._import_patch('user_linaro_not_person.mbox')
@@ -212,15 +259,12 @@ class TestImportEmail(TestCase):
tcs = [x.team for x in TeamCredit.objects.all()]
self.assertEqual(teams, tcs)
- @mock.patch('linaro_metrics.parsemail.Crowd')
- def test_monkey_patch_no_listid(self, crowd):
+ def test_monkey_patch_no_listid(self):
Project.objects.all().delete()
qemu = Project.objects.create(
name='qemu-devel', linkname='qemu-devel',
listemail='qemu-devel@nongnu.org', listid='qemu-devel.nongnu.org')
- crowd().get_user_no_cache.return_value = {'display-name': 'User Name'}
-
with import_emails.get_monkey_patcher()(import_emails.parser):
self._import_patch('no-list-id.mbox')
self.assertEqual(1, Patch.objects.all().count())