From 7df5ed1ca4fe81a16a93307e110db865f54f0fdb Mon Sep 17 00:00:00 2001 From: Ryan Cross Date: Sat, 14 Jul 2018 20:59:17 +0000 Subject: [PATCH] Update secr/drafts/tests_views to align with view logic. Fixes #2480. Commit ready for merge. - Legacy-Id: 15351 --- ietf/secr/drafts/email.py | 2 +- ietf/secr/drafts/tests_views.py | 48 +++++++++++++++++++++++---------- ietf/secr/drafts/views.py | 5 ++-- 3 files changed, 38 insertions(+), 17 deletions(-) diff --git a/ietf/secr/drafts/email.py b/ietf/secr/drafts/email.py index e1cdb09cd..48869635e 100644 --- a/ietf/secr/drafts/email.py +++ b/ietf/secr/drafts/email.py @@ -167,7 +167,7 @@ def get_email_initial(draft, action=None, input=None): elif action == 'withdraw': context = {'doc':curr_filename,'by':input['withdraw_type']} - data['subject'] = 'Withdrawl of %s' % (curr_filename) + data['subject'] = 'Withdraw of %s' % (curr_filename) data['body'] = render_to_string('drafts/message_withdraw.txt', context) data['action'] = action data['withdraw_type'] = input['withdraw_type'] diff --git a/ietf/secr/drafts/tests_views.py b/ietf/secr/drafts/tests_views.py index cbc1c5fc8..fefbf4dff 100644 --- a/ietf/secr/drafts/tests_views.py +++ b/ietf/secr/drafts/tests_views.py @@ -1,10 +1,12 @@ import datetime import os import shutil +from collections import OrderedDict from django.conf import settings from django.urls import reverse as urlreverse from django.utils.http import urlencode +from pyquery import PyQuery import debug # pyflakes:ignore @@ -15,6 +17,7 @@ from ietf.meeting.factories import MeetingFactory from ietf.person.factories import PersonFactory from ietf.person.models import Person from ietf.submit.models import Preapproval +from ietf.utils.mail import outbox from ietf.utils.test_utils import TestCase, login_testing_unauthorized from ietf.utils.test_data import make_test_data from ietf.secr.drafts.email import get_email_initial @@ -134,23 +137,31 @@ class SecrDraftsTestCase(TestCase): confirm_url = urlreverse('ietf.secr.drafts.views.confirm', kwargs={'id':draft.name}) do_action_url = urlreverse('ietf.secr.drafts.views.do_action', kwargs={'id':draft.name}) view_url = urlreverse('ietf.secr.drafts.views.view', kwargs={'id':draft.name}) + subject = 'Resurrection of %s' % draft.get_base_name() self.client.login(username="secretary", password="secretary+password") response = self.client.get(email_url) self.assertEqual(response.status_code, 200) + self.assertTrue('Drafts - Email' in response.content) + q = PyQuery(response.content) + self.assertEqual(q("#id_subject").val(), subject) post_data = { 'action': 'resurrect', 'to': 'john@example.com', 'cc': 'joe@example.com', - 'subject': 'test', + 'subject': subject, 'body': 'draft resurrected', 'submit': 'Save' } - response = self.client.post(email_url, post_data) response = self.client.post(confirm_url, post_data) + self.assertEqual(response.status_code, 200) + self.assertTrue('Drafts - Confirm' in response.content) + self.assertEqual(response.context['email']['subject'], subject) response = self.client.post(do_action_url, post_data) self.assertRedirects(response, view_url) draft = Document.objects.get(name=draft.name) self.assertTrue(draft.get_state_slug('draft') == 'active') + recv = outbox[-1] + self.assertEqual(recv['Subject'], subject) def test_extend(self): draft = make_test_data() @@ -161,10 +172,11 @@ class SecrDraftsTestCase(TestCase): view_url = urlreverse('ietf.secr.drafts.views.view', kwargs={'id':draft.name}) expiration = datetime.datetime.today() + datetime.timedelta(days=180) expiration = expiration.replace(hour=0,minute=0,second=0,microsecond=0) + subject = 'Extension of Expiration Date for %s' % draft.get_base_name() self.client.login(username="secretary", password="secretary+password") response = self.client.get(url) self.assertEqual(response.status_code, 200) - get_data = { + extend_data = { 'action': 'extend', 'expiration_date': expiration.strftime('%Y-%m-%d'), } @@ -173,17 +185,22 @@ class SecrDraftsTestCase(TestCase): 'expiration_date': expiration.strftime('%Y-%m-%d'), 'to': 'john@example.com', 'cc': 'joe@example.com', - 'subject': 'test', - 'body': 'draft resurrected', + 'subject': subject, + 'body': 'draft extended', 'submit': 'Save' } - response = self.client.get(email_url + '?' + urlencode(get_data)) - self.assertEqual(response.status_code, 200) + response = self.client.post(url, extend_data) + self.assertRedirects(response, email_url + '?' + urlencode(extend_data)) response = self.client.post(confirm_url, post_data) + self.assertEqual(response.status_code, 200) + self.assertTrue('Drafts - Confirm' in response.content) + self.assertEqual(response.context['email']['subject'], subject) response = self.client.post(do_action_url, post_data) self.assertRedirects(response, view_url) draft = Document.objects.get(name=draft.name) self.assertTrue(draft.expires == expiration) + recv = outbox[-1] + self.assertEqual(recv['Subject'], subject) def test_withdraw(self): draft = make_test_data() @@ -192,29 +209,32 @@ class SecrDraftsTestCase(TestCase): confirm_url = urlreverse('ietf.secr.drafts.views.confirm', kwargs={'id':draft.name}) do_action_url = urlreverse('ietf.secr.drafts.views.do_action', kwargs={'id':draft.name}) view_url = urlreverse('ietf.secr.drafts.views.view', kwargs={'id':draft.name}) + subject = 'Withdraw of %s' % draft.get_base_name() self.client.login(username="secretary", password="secretary+password") response = self.client.get(url) self.assertEqual(response.status_code, 200) - get_data = { - 'action': 'withdraw', - 'withdraw_type': 'ietf', - } + withdraw_data = OrderedDict([('action', 'withdraw'), ('withdraw_type', 'ietf')]) post_data = { 'action': 'withdraw', 'withdraw_type': 'ietf', 'to': 'john@example.com', 'cc': 'joe@example.com', - 'subject': 'test', + 'subject': subject, 'body': 'draft resurrected', 'submit': 'Save' } - response = self.client.get(email_url + '?' + urlencode(get_data)) - self.assertEqual(response.status_code, 200) + response = self.client.post(url, withdraw_data) + self.assertRedirects(response, email_url + '?' + urlencode(withdraw_data)) response = self.client.post(confirm_url, post_data) + self.assertEqual(response.status_code, 200) + self.assertTrue('Drafts - Confirm' in response.content) + self.assertEqual(response.context['email']['subject'], subject) response = self.client.post(do_action_url, post_data) self.assertRedirects(response, view_url) draft = Document.objects.get(name=draft.name) self.assertTrue(draft.get_state_slug('draft') == 'ietf-rm') + recv = outbox[-1] + self.assertEqual(recv['Subject'], subject) def test_authors(self): draft = DocumentFactory() diff --git a/ietf/secr/drafts/views.py b/ietf/secr/drafts/views.py index f4fd7bfac..3c0b0f621 100644 --- a/ietf/secr/drafts/views.py +++ b/ietf/secr/drafts/views.py @@ -3,6 +3,7 @@ import glob import os import shutil from dateutil.parser import parse +from collections import OrderedDict from django.conf import settings from django.contrib import messages @@ -614,8 +615,8 @@ def withdraw(request, id): form = WithdrawForm(request.POST) if form.is_valid(): - params = form.cleaned_data - params['action'] = 'withdraw' + params = OrderedDict([('action', 'withdraw')]) + params['withdraw_type'] = form.cleaned_data['withdraw_type'] url = reverse('ietf.secr.drafts.views.email', kwargs={'id':id}) url = url + '?' + urlencode(params) return redirect(url)