From patchwork Sun Apr 29 13:11:49 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dirk Wallenstein X-Patchwork-Id: 155736 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from ozlabs.org (localhost [IPv6:::1]) by ozlabs.org (Postfix) with ESMTP id 32492B709F for ; Sun, 29 Apr 2012 23:11:56 +1000 (EST) Received: from mailout09.t-online.de (mailout09.t-online.de [194.25.134.84]) by ozlabs.org (Postfix) with ESMTP id 2185DB6FE8 for ; Sun, 29 Apr 2012 23:11:52 +1000 (EST) Received: from fwd00.aul.t-online.de (fwd00.aul.t-online.de ) by mailout09.t-online.de with smtp id 1SOTuo-0008G3-FF; Sun, 29 Apr 2012 15:11:50 +0200 Received: from localhost.localdomain (G52H-gZcZhcGT6ClaS2TPliCGizK2TItUpzYIYopCCD9vIrwQFLtVUodngDJErwZ19@[109.91.88.236]) by fwd00.t-online.de with esmtp id 1SOTun-26fWuQ0; Sun, 29 Apr 2012 15:11:49 +0200 From: Dirk Wallenstein To: patchwork@lists.ozlabs.org Subject: [PATCH 2/2] tests: Add tests for explicit delegate and state requests Date: Sun, 29 Apr 2012 15:11:49 +0200 Message-Id: <1335705109-6584-2-git-send-email-halsmit@t-online.de> X-Mailer: git-send-email 1.7.5.4 In-Reply-To: <1335705109-6584-1-git-send-email-halsmit@t-online.de> References: <1335705109-6584-1-git-send-email-halsmit@t-online.de> X-ID: G52H-gZcZhcGT6ClaS2TPliCGizK2TItUpzYIYopCCD9vIrwQFLtVUodngDJErwZ19 X-TOI-MSGID: 11305b5b-d1c5-429a-81fc-0f1d206aca95 X-BeenThere: patchwork@lists.ozlabs.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: Patchwork development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: patchwork-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org Sender: patchwork-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org Signed-off-by: Dirk Wallenstein --- apps/patchwork/tests/patchparser.py | 106 ++++++++++++++++++++++++++++++++++- 1 files changed, 104 insertions(+), 2 deletions(-) diff --git a/apps/patchwork/tests/patchparser.py b/apps/patchwork/tests/patchparser.py index 06b4e54..ff4c555 100644 --- a/apps/patchwork/tests/patchparser.py +++ b/apps/patchwork/tests/patchparser.py @@ -20,8 +20,8 @@ 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 +398,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()