summaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
authorDirk Wallenstein <halsmit@t-online.de>2012-04-29 03:11:49 +0000
committerJeremy Kerr <jk@ozlabs.org>2012-04-30 14:27:21 +0800
commitc2fb2f8319ad294ee8395779a70e25718276f83d (patch)
tree12cbe3ea50434932d4653efd0425ca39220386c5 /apps
parent55ef92901f11ce5497eb55df3064a5a74821a1e7 (diff)
downloadpatchwork-c2fb2f8319ad294ee8395779a70e25718276f83d.tar.bz2
patchwork-c2fb2f8319ad294ee8395779a70e25718276f83d.tar.xz
tests: Add tests for explicit delegate and state requests
Signed-off-by: Dirk Wallenstein <halsmit@t-online.de> Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
Diffstat (limited to 'apps')
-rw-r--r--apps/patchwork/tests/patchparser.py108
1 files changed, 106 insertions, 2 deletions
diff --git a/apps/patchwork/tests/patchparser.py b/apps/patchwork/tests/patchparser.py
index 06b4e54..8e1a825 100644
--- a/apps/patchwork/tests/patchparser.py
+++ b/apps/patchwork/tests/patchparser.py
@@ -20,8 +20,10 @@
import unittest
import os
from email import message_from_string
-from patchwork.models import Project, Person, Patch, Comment
-from patchwork.tests.utils import read_patch, read_mail, create_email, defaults
+from patchwork.models import Project, Person, Patch, Comment, State, \
+ get_default_initial_patch_state
+from patchwork.tests.utils import read_patch, read_mail, create_email, \
+ defaults, create_user
try:
from email.mime.text import MIMEText
@@ -398,3 +400,105 @@ class CVSFormatPatchTest(MBoxPatchTest):
self.assertTrue(patch is not None)
self.assertTrue(comment is not None)
self.assertTrue(patch.content.startswith('Index'))
+
+class DelegateRequestTest(unittest.TestCase):
+ patch_filename = '0001-add-line.patch'
+ msgid = '<1@example.com>'
+ invalid_delegate_email = "nobody"
+
+ def setUp(self):
+ self.patch = read_patch(self.patch_filename)
+ self.user = create_user()
+ self.p1 = Project(linkname = 'test-project-1', name = 'Project 1',
+ listid = '1.example.com', listemail='1@example.com')
+ self.p1.save()
+
+ def get_email(self):
+ email = create_email(self.patch)
+ del email['List-ID']
+ email['List-ID'] = '<' + self.p1.listid + '>'
+ email['Message-Id'] = self.msgid
+ return email
+
+ def testDelegate(self):
+ email = self.get_email()
+ email['X-Patchwork-Delegate'] = self.user.email
+ parse_mail(email)
+ self.assertEquals(Patch.objects.filter(project=self.p1).count(), 1)
+ self.assertEquals(Patch.objects.get(pk=1).delegate, self.user)
+
+ def testNoDelegate(self):
+ email = self.get_email()
+ parse_mail(email)
+ self.assertEquals(Patch.objects.filter(project=self.p1).count(), 1)
+ self.assertEquals(Patch.objects.get(pk=1).delegate, None)
+
+ def testInvalidDelegateFallsBackToNoDelegate(self):
+ email = self.get_email()
+ email['X-Patchwork-Delegate'] = self.invalid_delegate_email
+ parse_mail(email)
+ self.assertEquals(Patch.objects.filter(project=self.p1).count(), 1)
+ self.assertEquals(Patch.objects.get(pk=1).delegate, None)
+
+ def tearDown(self):
+ self.p1.delete()
+ self.user.delete()
+
+class InitialPatchStateTest(unittest.TestCase):
+ patch_filename = '0001-add-line.patch'
+ msgid = '<1@example.com>'
+ invalid_state_name = "Nonexistent Test State"
+
+ def setUp(self):
+ self.patch = read_patch(self.patch_filename)
+ self.user = create_user()
+ self.p1 = Project(linkname = 'test-project-1', name = 'Project 1',
+ listid = '1.example.com', listemail='1@example.com')
+ self.p1.save()
+ self.default_state = get_default_initial_patch_state()
+ self.nondefault_state = State.objects.get(name="Accepted")
+
+ def get_email(self):
+ email = create_email(self.patch)
+ del email['List-ID']
+ email['List-ID'] = '<' + self.p1.listid + '>'
+ email['Message-Id'] = self.msgid
+ return email
+
+ def testNonDefaultStateIsActuallyNotTheDefaultState(self):
+ self.assertNotEqual(self.default_state, self.nondefault_state)
+
+ def testExplicitNonDefaultStateRequest(self):
+ email = self.get_email()
+ email['X-Patchwork-State'] = self.nondefault_state.name
+ parse_mail(email)
+ self.assertEquals(Patch.objects.filter(project=self.p1).count(), 1)
+ self.assertEquals(Patch.objects.get(pk=1).state, self.nondefault_state)
+
+ def testExplicitDefaultStateRequest(self):
+ email = self.get_email()
+ email['X-Patchwork-State'] = self.default_state.name
+ parse_mail(email)
+ self.assertEquals(Patch.objects.filter(project=self.p1).count(), 1)
+ self.assertEquals(Patch.objects.get(pk=1).state, self.default_state)
+
+ def testImplicitDefaultStateRequest(self):
+ email = self.get_email()
+ parse_mail(email)
+ self.assertEquals(Patch.objects.filter(project=self.p1).count(), 1)
+ self.assertEquals(Patch.objects.get(pk=1).state, self.default_state)
+
+ def testInvalidTestStateDoesNotExist(self):
+ with self.assertRaises(State.DoesNotExist):
+ State.objects.get(name=self.invalid_state_name)
+
+ def testInvalidStateRequestFallsBackToDefaultState(self):
+ email = self.get_email()
+ email['X-Patchwork-State'] = self.invalid_state_name
+ parse_mail(email)
+ self.assertEquals(Patch.objects.filter(project=self.p1).count(), 1)
+ self.assertEquals(Patch.objects.get(pk=1).state, self.default_state)
+
+ def tearDown(self):
+ self.p1.delete()
+ self.user.delete()