Skip to content

Commit 8a74604

Browse files
committed
Done with the second pass focusing on test coverage. Lots of test tweaks, some new tests, a couple of bugs fixed. The session request code views need to be redone to allow testing.
- Legacy-Id: 10035
1 parent 83753dd commit 8a74604

20 files changed

Lines changed: 239 additions & 83 deletions

File tree

ietf/doc/mails.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -201,6 +201,8 @@ def generate_approval_mail_approved(request, doc):
201201
)
202202

203203
def generate_approval_mail_rfc_editor(request, doc):
204+
# This is essentially dead code - it is only exercised if the IESG ballots on some other stream's document,
205+
# which does not happen now that we have conflict reviews.
204206
disapproved = doc.get_state_slug("draft-iesg") in DO_NOT_PUBLISH_IESG_STATES
205207
doc_type = "RFC" if doc.get_state_slug() == "rfc" else "Internet Draft"
206208

ietf/doc/tests_ballot.py

Lines changed: 31 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ def test_send_ballot_comment(self):
152152
# send
153153
mailbox_before = len(outbox)
154154

155-
r = self.client.post(url, dict(cc="test@example.com", cc_state_change="1",cc_group_list="1"))
155+
r = self.client.post(url, dict(cc="test298347@example.com", cc_state_change="1",cc_group_list="1"))
156156
self.assertEqual(r.status_code, 302)
157157

158158
self.assertEqual(len(outbox), mailbox_before + 1)
@@ -162,16 +162,18 @@ def test_send_ballot_comment(self):
162162
self.assertTrue(draft.name in m['Subject'])
163163
self.assertTrue("clearer title" in str(m))
164164
self.assertTrue("Test!" in str(m))
165+
self.assertTrue("iesg@" in m['To'])
165166
self.assertTrue("somebody@example.com" in m['Cc'])
166-
self.assertTrue("test@example.com" in m['Cc'])
167+
self.assertTrue("test298347@example.com" in m['Cc'])
167168
self.assertTrue(draft.group.list_email)
168169
self.assertTrue(draft.group.list_email in m['Cc'])
169170

170171
r = self.client.post(url, dict(cc=""))
171172
self.assertEqual(r.status_code, 302)
172173
self.assertEqual(len(outbox), mailbox_before + 2)
173-
#TODO this would be a good place to test actual mailtoken expansions
174-
#if we can find a way to get the real, or at least representative, data in place.
174+
m = outbox[-1]
175+
self.assertTrue("iesg@" in m['To'])
176+
self.assertFalse(draft.group.list_email in m['Cc'])
175177

176178

177179
class BallotWriteupsTests(TestCase):
@@ -235,6 +237,8 @@ def test_request_last_call(self):
235237
self.assertEqual(len(outbox), mailbox_before + 1)
236238
self.assertTrue("Last Call" in outbox[-1]['Subject'])
237239
self.assertTrue(draft.name in outbox[-1]['Subject'])
240+
self.assertTrue('iesg-secretary@' in outbox[-1]['To'])
241+
self.assertTrue('aread@' in outbox[-1]['Cc'])
238242

239243
def test_edit_ballot_writeup(self):
240244
draft = make_test_data()
@@ -389,12 +393,18 @@ def test_approve_ballot(self):
389393
self.assertEqual(draft.get_state_slug("draft-iesg"), "ann")
390394
self.assertEqual(len(outbox), mailbox_before + 2)
391395
self.assertTrue("Protocol Action" in outbox[-2]['Subject'])
396+
self.assertTrue("ietf-announce" in outbox[-2]['To'])
397+
self.assertTrue("rfc-editor" in outbox[-2]['Cc'])
392398
# the IANA copy
393399
self.assertTrue("Protocol Action" in outbox[-1]['Subject'])
394400
self.assertTrue(not outbox[-1]['CC'])
401+
self.assertTrue('drafts-approval@icann.org' in outbox[-1]['To'])
395402
self.assertTrue("Protocol Action" in draft.message_set.order_by("-time")[0].subject)
396403

397404
def test_disapprove_ballot(self):
405+
# This tests a codepath that is not used in production
406+
# and that has already had some drift from usefulness (it results in a
407+
# older-style conflict review response).
398408
draft = make_test_data()
399409
draft.set_state(State.objects.get(used=True, type="draft-iesg", slug="nopubadw"))
400410

@@ -412,7 +422,6 @@ def test_disapprove_ballot(self):
412422
self.assertEqual(len(outbox), mailbox_before + 1)
413423
self.assertTrue("NOT be published" in str(outbox[-1]))
414424

415-
416425
class MakeLastCallTests(TestCase):
417426
def test_make_last_call(self):
418427
draft = make_test_data()
@@ -441,10 +450,17 @@ def test_make_last_call(self):
441450
draft = Document.objects.get(name=draft.name)
442451
self.assertEqual(draft.get_state_slug("draft-iesg"), "lc")
443452
self.assertEqual(draft.latest_event(LastCallDocEvent, "sent_last_call").expires.strftime("%Y-%m-%d"), expire_date)
453+
444454
self.assertEqual(len(outbox), mailbox_before + 2)
445455

446456
self.assertTrue("Last Call" in outbox[-2]['Subject'])
457+
self.assertTrue("ietf-announce@" in outbox[-2]['To'])
458+
for prefix in ['draft-ietf-mars-test','mars-chairs','aread']:
459+
self.assertTrue(prefix+"@" in outbox[-2]['Cc'])
460+
447461
self.assertTrue("Last Call" in outbox[-1]['Subject'])
462+
self.assertTrue("drafts-lastcall@icann.org" in outbox[-1]['To'])
463+
448464
self.assertTrue("Last Call" in draft.message_set.order_by("-time")[0].subject)
449465

450466
class DeferUndeferTestCase(TestCase):
@@ -490,11 +506,16 @@ def helper_test_defer(self,name):
490506
if doc.type_id in defer_states:
491507
self.assertEqual(doc.get_state(defer_states[doc.type_id][0]).slug,defer_states[doc.type_id][1])
492508
self.assertTrue(doc.active_defer_event())
509+
493510
self.assertEqual(len(outbox), mailbox_before + 2)
494-
#self.assertTrue("State Update" in outbox[-3]['Subject'])
495-
self.assertTrue("Telechat update" in outbox[-2]['Subject'])
511+
512+
self.assertTrue('Telechat update' in outbox[-2]['Subject'])
513+
self.assertTrue('iesg-secretary@' in outbox[-2]['To'])
514+
self.assertTrue('iesg@' in outbox[-2]['To'])
515+
496516
self.assertTrue("Deferred" in outbox[-1]['Subject'])
497517
self.assertTrue(doc.file_tag() in outbox[-1]['Subject'])
518+
self.assertTrue('iesg@' in outbox[-1]['To'])
498519

499520
# Ensure it's not possible to defer again
500521
r = self.client.get(url)
@@ -547,8 +568,11 @@ def helper_test_undefer(self,name):
547568
self.assertFalse(doc.active_defer_event())
548569
self.assertEqual(len(outbox), mailbox_before + 2)
549570
self.assertTrue("Telechat update" in outbox[-2]['Subject'])
571+
self.assertTrue('iesg-secretary@' in outbox[-2]['To'])
572+
self.assertTrue('iesg@' in outbox[-2]['To'])
550573
self.assertTrue("Undeferred" in outbox[-1]['Subject'])
551574
self.assertTrue(doc.file_tag() in outbox[-1]['Subject'])
575+
self.assertTrue('iesg@' in outbox[-1]['To'])
552576

553577
# Ensure it's not possible to undefer again
554578
r = self.client.get(url)

ietf/doc/tests_charter.py

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
from ietf.iesg.models import TelechatDate
1515
from ietf.person.models import Person
1616
from ietf.utils.test_utils import TestCase
17-
from ietf.utils.mail import outbox
17+
from ietf.utils.mail import outbox, empty_outbox
1818
from ietf.utils.test_data import make_test_data
1919
from ietf.utils.test_utils import login_testing_unauthorized
2020

@@ -97,7 +97,12 @@ def find_event(t):
9797
self.assertTrue(find_event("created_ballot"))
9898

9999
self.assertEqual(len(outbox), mailbox_before + 2)
100+
100101
self.assertTrue("state changed" in outbox[-2]['Subject'].lower())
102+
self.assertTrue("iesg-secretary@" in outbox[-2]['To'])
103+
104+
self.assertTrue("State Update Notice" in outbox[-1]['Subject'])
105+
self.assertTrue("ames-chairs@" in outbox[-1]['To'])
101106

102107
def test_edit_telechat_date(self):
103108
make_test_data()
@@ -285,6 +290,9 @@ def test_edit_announcement_text(self):
285290
announcement_text=default_review_text(draft.group, charter, by).text,
286291
send_text="1"))
287292
self.assertEqual(len(outbox), mailbox_before + 1)
293+
self.assertTrue('WG Review' in outbox[-1]['Subject'])
294+
self.assertTrue('ietf-announce@' in outbox[-1]['To'])
295+
self.assertTrue('mars-wg@' in outbox[-1]['Cc'])
288296

289297
# save
290298
r = self.client.post(url, dict(
@@ -333,11 +341,12 @@ def test_edit_ballot_writeupnotes(self):
333341
self.assertTrue("This is a simple test" in charter.latest_event(WriteupDocEvent, type="changed_ballot_writeup_text").text)
334342

335343
# send
336-
mailbox_before = len(outbox)
344+
empty_outbox()
337345
r = self.client.post(url, dict(
338346
ballot_writeup="This is a simple test.",
339347
send_ballot="1"))
340-
self.assertEqual(len(outbox), mailbox_before + 1)
348+
self.assertEqual(len(outbox), 1)
349+
self.assertTrue('Evaluation' in outbox[0]['Subject'])
341350

342351
def test_approve(self):
343352
make_test_data()
@@ -393,7 +402,7 @@ def test_approve(self):
393402
self.assertEqual(len(q('pre')), 1)
394403

395404
# approve
396-
mailbox_before = len(outbox)
405+
empty_outbox()
397406

398407
r = self.client.post(url, dict())
399408
self.assertEqual(r.status_code, 302)
@@ -405,9 +414,12 @@ def test_approve(self):
405414
self.assertEqual(charter.rev, "01")
406415
self.assertTrue(os.path.exists(os.path.join(self.charter_dir, "charter-ietf-%s-%s.txt" % (group.acronym, charter.rev))))
407416

408-
self.assertEqual(len(outbox), mailbox_before + 2)
409-
self.assertTrue("WG Action" in outbox[-1]['Subject'])
410-
self.assertTrue("approved" in outbox[-2]['Subject'].lower())
417+
self.assertEqual(len(outbox), 2)
418+
self.assertTrue("approved" in outbox[0]['Subject'].lower())
419+
self.assertTrue("iesg-secretary" in outbox[0]['To'])
420+
self.assertTrue("WG Action" in outbox[1]['Subject'])
421+
self.assertTrue("ietf-announce" in outbox[1]['To'])
422+
self.assertTrue("ames-wg@ietf.org" in outbox[1]['Cc'])
411423

412424
self.assertEqual(group.groupmilestone_set.filter(state="charter").count(), 0)
413425
self.assertEqual(group.groupmilestone_set.filter(state="active").count(), 2)

ietf/doc/tests_conflict_review.py

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
from ietf.iesg.models import TelechatDate
1616
from ietf.name.models import StreamName
1717
from ietf.utils.test_utils import TestCase
18-
from ietf.utils.mail import outbox
18+
from ietf.utils.mail import outbox, empty_outbox
1919
from ietf.utils.test_data import make_test_data
2020
from ietf.utils.test_utils import login_testing_unauthorized
2121

@@ -115,10 +115,14 @@ def test_start_review_as_stream_owner(self):
115115
self.assertEquals(review_doc.notify,u'ipu@ietf.org')
116116
doc = Document.objects.get(name='draft-imaginary-independent-submission')
117117
self.assertTrue(doc in [x.target.document for x in review_doc.relateddocument_set.filter(relationship__slug='conflrev')])
118+
118119
self.assertEqual(len(outbox), messages_before + 2)
120+
119121
self.assertTrue('Conflict Review requested' in outbox[-1]['Subject'])
120-
#self.assertTrue(any('iesg-secretary@ietf.org' in x['To'] for x in outbox[-2:]))
121-
#self.assertTrue(any(settings.IANA_EVAL_EMAIL in x['To'] for x in outbox[-2:]))
122+
self.assertTrue('drafts-eval@icann.org' in outbox[-1]['To'])
123+
124+
self.assertTrue('Conflict Review requested' in outbox[-2]['Subject'])
125+
self.assertTrue('iesg-secretary@' in outbox[-2]['To'])
122126

123127

124128
def test_change_state(self):
@@ -278,20 +282,23 @@ def approve_test_helper(self,approve_type):
278282
self.assertTrue( 'NOT be published' in ''.join(wrap(r.content,2**16)))
279283

280284
# submit
281-
messages_before = len(outbox)
285+
empty_outbox()
282286
r = self.client.post(url,dict(announcement_text=default_approval_text(doc)))
283287
self.assertEqual(r.status_code, 302)
284288

285289
doc = Document.objects.get(name='conflict-review-imaginary-irtf-submission')
286290
self.assertEqual(doc.get_state_slug(),approve_type+'-sent')
287291
self.assertFalse(doc.ballot_open("conflrev"))
288292

289-
self.assertEqual(len(outbox), messages_before + 1)
290-
self.assertTrue('Results of IETF-conflict review' in outbox[-1]['Subject'])
293+
self.assertEqual(len(outbox), 1)
294+
self.assertTrue('Results of IETF-conflict review' in outbox[0]['Subject'])
295+
self.assertTrue('irtf-chair' in outbox[0]['To'])
296+
self.assertTrue('ietf-announce@' in outbox[0]['Cc'])
297+
self.assertTrue('iana@' in outbox[0]['Cc'])
291298
if approve_type == 'appr-noprob':
292-
self.assertTrue( 'IESG has no problem' in ''.join(wrap(unicode(outbox[-1]),2**16)))
299+
self.assertTrue( 'IESG has no problem' in ''.join(wrap(unicode(outbox[0]),2**16)))
293300
else:
294-
self.assertTrue( 'NOT be published' in ''.join(wrap(unicode(outbox[-1]),2**16)))
301+
self.assertTrue( 'NOT be published' in ''.join(wrap(unicode(outbox[0]),2**16)))
295302

296303

297304
def test_approve_reqnopub(self):

0 commit comments

Comments
 (0)