Skip to content

Commit f060e4d

Browse files
committed
Merged in [15351] from rcross@amsl.com:
Update secr/drafts/tests_views to align with view logic. Fixes ietf-tools#2480. - Legacy-Id: 15384 Note: SVN reference [15351] has been migrated to Git commit 7df5ed1
2 parents b054a14 + 7df5ed1 commit f060e4d

3 files changed

Lines changed: 38 additions & 17 deletions

File tree

ietf/secr/drafts/email.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,7 @@ def get_email_initial(draft, action=None, input=None):
167167

168168
elif action == 'withdraw':
169169
context = {'doc':curr_filename,'by':input['withdraw_type']}
170-
data['subject'] = 'Withdrawl of %s' % (curr_filename)
170+
data['subject'] = 'Withdraw of %s' % (curr_filename)
171171
data['body'] = render_to_string('drafts/message_withdraw.txt', context)
172172
data['action'] = action
173173
data['withdraw_type'] = input['withdraw_type']

ietf/secr/drafts/tests_views.py

Lines changed: 34 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
import datetime
22
import os
33
import shutil
4+
from collections import OrderedDict
45

56
from django.conf import settings
67
from django.urls import reverse as urlreverse
78
from django.utils.http import urlencode
9+
from pyquery import PyQuery
810

911
import debug # pyflakes:ignore
1012

@@ -15,6 +17,7 @@
1517
from ietf.person.factories import PersonFactory
1618
from ietf.person.models import Person
1719
from ietf.submit.models import Preapproval
20+
from ietf.utils.mail import outbox
1821
from ietf.utils.test_utils import TestCase, login_testing_unauthorized
1922
from ietf.utils.test_data import make_test_data
2023
from ietf.secr.drafts.email import get_email_initial
@@ -134,23 +137,31 @@ def test_resurrect(self):
134137
confirm_url = urlreverse('ietf.secr.drafts.views.confirm', kwargs={'id':draft.name})
135138
do_action_url = urlreverse('ietf.secr.drafts.views.do_action', kwargs={'id':draft.name})
136139
view_url = urlreverse('ietf.secr.drafts.views.view', kwargs={'id':draft.name})
140+
subject = 'Resurrection of %s' % draft.get_base_name()
137141
self.client.login(username="secretary", password="secretary+password")
138142
response = self.client.get(email_url)
139143
self.assertEqual(response.status_code, 200)
144+
self.assertTrue('<title>Drafts - Email</title>' in response.content)
145+
q = PyQuery(response.content)
146+
self.assertEqual(q("#id_subject").val(), subject)
140147
post_data = {
141148
'action': 'resurrect',
142149
'to': 'john@example.com',
143150
'cc': 'joe@example.com',
144-
'subject': 'test',
151+
'subject': subject,
145152
'body': 'draft resurrected',
146153
'submit': 'Save'
147154
}
148-
response = self.client.post(email_url, post_data)
149155
response = self.client.post(confirm_url, post_data)
156+
self.assertEqual(response.status_code, 200)
157+
self.assertTrue('<title>Drafts - Confirm</title>' in response.content)
158+
self.assertEqual(response.context['email']['subject'], subject)
150159
response = self.client.post(do_action_url, post_data)
151160
self.assertRedirects(response, view_url)
152161
draft = Document.objects.get(name=draft.name)
153162
self.assertTrue(draft.get_state_slug('draft') == 'active')
163+
recv = outbox[-1]
164+
self.assertEqual(recv['Subject'], subject)
154165

155166
def test_extend(self):
156167
draft = make_test_data()
@@ -161,10 +172,11 @@ def test_extend(self):
161172
view_url = urlreverse('ietf.secr.drafts.views.view', kwargs={'id':draft.name})
162173
expiration = datetime.datetime.today() + datetime.timedelta(days=180)
163174
expiration = expiration.replace(hour=0,minute=0,second=0,microsecond=0)
175+
subject = 'Extension of Expiration Date for %s' % draft.get_base_name()
164176
self.client.login(username="secretary", password="secretary+password")
165177
response = self.client.get(url)
166178
self.assertEqual(response.status_code, 200)
167-
get_data = {
179+
extend_data = {
168180
'action': 'extend',
169181
'expiration_date': expiration.strftime('%Y-%m-%d'),
170182
}
@@ -173,17 +185,22 @@ def test_extend(self):
173185
'expiration_date': expiration.strftime('%Y-%m-%d'),
174186
'to': 'john@example.com',
175187
'cc': 'joe@example.com',
176-
'subject': 'test',
177-
'body': 'draft resurrected',
188+
'subject': subject,
189+
'body': 'draft extended',
178190
'submit': 'Save'
179191
}
180-
response = self.client.get(email_url + '?' + urlencode(get_data))
181-
self.assertEqual(response.status_code, 200)
192+
response = self.client.post(url, extend_data)
193+
self.assertRedirects(response, email_url + '?' + urlencode(extend_data))
182194
response = self.client.post(confirm_url, post_data)
195+
self.assertEqual(response.status_code, 200)
196+
self.assertTrue('<title>Drafts - Confirm</title>' in response.content)
197+
self.assertEqual(response.context['email']['subject'], subject)
183198
response = self.client.post(do_action_url, post_data)
184199
self.assertRedirects(response, view_url)
185200
draft = Document.objects.get(name=draft.name)
186201
self.assertTrue(draft.expires == expiration)
202+
recv = outbox[-1]
203+
self.assertEqual(recv['Subject'], subject)
187204

188205
def test_withdraw(self):
189206
draft = make_test_data()
@@ -192,29 +209,32 @@ def test_withdraw(self):
192209
confirm_url = urlreverse('ietf.secr.drafts.views.confirm', kwargs={'id':draft.name})
193210
do_action_url = urlreverse('ietf.secr.drafts.views.do_action', kwargs={'id':draft.name})
194211
view_url = urlreverse('ietf.secr.drafts.views.view', kwargs={'id':draft.name})
212+
subject = 'Withdraw of %s' % draft.get_base_name()
195213
self.client.login(username="secretary", password="secretary+password")
196214
response = self.client.get(url)
197215
self.assertEqual(response.status_code, 200)
198-
get_data = {
199-
'action': 'withdraw',
200-
'withdraw_type': 'ietf',
201-
}
216+
withdraw_data = OrderedDict([('action', 'withdraw'), ('withdraw_type', 'ietf')])
202217
post_data = {
203218
'action': 'withdraw',
204219
'withdraw_type': 'ietf',
205220
'to': 'john@example.com',
206221
'cc': 'joe@example.com',
207-
'subject': 'test',
222+
'subject': subject,
208223
'body': 'draft resurrected',
209224
'submit': 'Save'
210225
}
211-
response = self.client.get(email_url + '?' + urlencode(get_data))
212-
self.assertEqual(response.status_code, 200)
226+
response = self.client.post(url, withdraw_data)
227+
self.assertRedirects(response, email_url + '?' + urlencode(withdraw_data))
213228
response = self.client.post(confirm_url, post_data)
229+
self.assertEqual(response.status_code, 200)
230+
self.assertTrue('<title>Drafts - Confirm</title>' in response.content)
231+
self.assertEqual(response.context['email']['subject'], subject)
214232
response = self.client.post(do_action_url, post_data)
215233
self.assertRedirects(response, view_url)
216234
draft = Document.objects.get(name=draft.name)
217235
self.assertTrue(draft.get_state_slug('draft') == 'ietf-rm')
236+
recv = outbox[-1]
237+
self.assertEqual(recv['Subject'], subject)
218238

219239
def test_authors(self):
220240
draft = DocumentFactory()

ietf/secr/drafts/views.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import os
44
import shutil
55
from dateutil.parser import parse
6+
from collections import OrderedDict
67

78
from django.conf import settings
89
from django.contrib import messages
@@ -614,8 +615,8 @@ def withdraw(request, id):
614615

615616
form = WithdrawForm(request.POST)
616617
if form.is_valid():
617-
params = form.cleaned_data
618-
params['action'] = 'withdraw'
618+
params = OrderedDict([('action', 'withdraw')])
619+
params['withdraw_type'] = form.cleaned_data['withdraw_type']
619620
url = reverse('ietf.secr.drafts.views.email', kwargs={'id':id})
620621
url = url + '?' + urlencode(params)
621622
return redirect(url)

0 commit comments

Comments
 (0)