@@ -273,6 +273,45 @@ def test_edit_ballot_writeup(self):
273273 draft = Document .objects .get (name = draft .name )
274274 self .assertTrue ("This is a simple test" in draft .latest_event (WriteupDocEvent , type = "changed_ballot_writeup_text" ).text )
275275
276+ def test_edit_ballot_rfceditornote (self ):
277+ draft = make_test_data ()
278+ url = urlreverse ('doc_ballot_rfceditornote' , kwargs = dict (name = draft .name ))
279+ login_testing_unauthorized (self , "secretary" , url )
280+
281+ # add a note to the RFC Editor
282+ rfced_note = WriteupDocEvent .objects .create (
283+ doc = draft ,
284+ desc = "Changed text" ,
285+ type = "changed_rfc_editor_note_text" ,
286+ text = "This is a note for the RFC Editor." ,
287+ by = Person .objects .get (name = "(System)" ))
288+
289+ # normal get
290+ r = self .client .get (url )
291+ self .assertEqual (r .status_code , 200 )
292+ q = PyQuery (r .content )
293+ self .assertEqual (len (q ('textarea[name=rfc_editor_note]' )), 1 )
294+ self .assertTrue (q ('[type=submit]:contains("Save")' ))
295+ self .assertTrue ("<label class=\" control-label\" >RFC Editor Note</label>" in r .content )
296+ self .assertTrue ("This is a note for the RFC Editor" in r .content )
297+
298+ # save with a note
299+ r = self .client .post (url , dict (
300+ rfc_editor_note = "This is a simple test." ,
301+ save_ballot_rfceditornote = "1" ))
302+ self .assertEqual (r .status_code , 200 )
303+ draft = Document .objects .get (name = draft .name )
304+ self .assertTrue (draft .has_rfc_editor_note ())
305+ self .assertTrue ("This is a simple test" in draft .latest_event (WriteupDocEvent , type = "changed_rfc_editor_note_text" ).text )
306+
307+ # clear the existing note
308+ r = self .client .post (url , dict (
309+ rfc_editor_note = " " ,
310+ clear_ballot_rfceditornote = "1" ))
311+ self .assertEqual (r .status_code , 200 )
312+ draft = Document .objects .get (name = draft .name )
313+ self .assertFalse (draft .has_rfc_editor_note ())
314+
276315 def test_issue_ballot (self ):
277316 draft = make_test_data ()
278317 url = urlreverse ('doc_ballot_writeupnotes' , kwargs = dict (name = draft .name ))
@@ -340,6 +379,55 @@ def test_edit_approval_text(self):
340379 draft = Document .objects .get (name = draft .name )
341380 self .assertTrue ("Subject: Results of IETF-conflict review" in draft .latest_event (WriteupDocEvent , type = "changed_ballot_approval_text" ).text )
342381
382+ def test_edit_verify_permissions (self ):
383+
384+ def verify_fail (username , url ):
385+ if username :
386+ self .client .login (username = username , password = username + "+password" )
387+ r = self .client .get (url )
388+ self .assertEqual (r .status_code ,403 )
389+
390+ def verify_can_see (username , url ):
391+ self .client .login (username = username , password = username + "+password" )
392+ r = self .client .get (url )
393+ self .assertEqual (r .status_code ,200 )
394+ q = PyQuery (r .content )
395+ self .assertEqual (len (q ("<textarea class=\" form-control\" " )),1 )
396+
397+ draft = make_test_data ()
398+
399+ e = WriteupDocEvent ()
400+ e .type = "changed_ballot_approval_text"
401+ e .by = Person .objects .get (name = "(System)" )
402+ e .doc = draft
403+ e .desc = u"Ballot approval text was generated"
404+ e .text = u"Test approval text."
405+ e .save ()
406+
407+ e = WriteupDocEvent ()
408+ e .type = "changed_ballot_writeup_text"
409+ e .by = Person .objects .get (name = "(System)" )
410+ e .doc = draft
411+ e .desc = u"Ballot writeup was generated"
412+ e .text = u"Test ballot writeup text."
413+ e .save ()
414+
415+ e = WriteupDocEvent ()
416+ e .type = "changed_ballot_rfceditornote_text"
417+ e .by = Person .objects .get (name = "(System)" )
418+ e .doc = draft
419+ e .desc = u"RFC Editor Note for ballot was generated"
420+ e .text = u"Test note to the RFC Editor text."
421+ e .save ()
422+
423+ for p in ['doc_ballot_approvaltext' ,'doc_ballot_writeupnotes' ,'doc_ballot_rfceditornote' ]:
424+ url = urlreverse (p , kwargs = dict (name = draft .name ))
425+
426+ for username in ['plain' ,'marschairman' ,'iana' ,'iab chair' ]:
427+ verify_fail (username , url )
428+
429+ for username in ['secretary' ,'ad' ]:
430+ verify_can_see (username , url )
343431
344432class ApproveBallotTests (TestCase ):
345433 def test_approve_ballot (self ):
0 commit comments