1616
1717import debug # pyflakes:ignore
1818
19+ from ietf .doc .expire import get_expired_drafts , send_expire_notice_for_draft , expire_draft
1920from ietf .doc .factories import IndividualDraftFactory , WgDraftFactory , RgDraftFactory , DocEventFactory
2021from ietf .doc .models import ( Document , DocReminder , DocEvent ,
2122 ConsensusDocEvent , LastCallDocEvent , RelatedDocument , State , TelechatDocEvent ,
@@ -492,7 +493,33 @@ def test_edit_consensus(self):
492493 self .assertEqual (draft .latest_event (ConsensusDocEvent , type = "changed_consensus" ).consensus , None )
493494
494495
495- class ResurrectTests (TestCase ):
496+ class DraftFileMixin ():
497+ '''A mixin to setup temporary draft directories and files'''
498+ def setUp (self ):
499+ self .saved_id_dir = settings .INTERNET_DRAFT_PATH
500+ self .saved_archive_dir = settings .INTERNET_DRAFT_ARCHIVE_DIR
501+ self .id_dir = self .tempdir ('id' )
502+ self .archive_dir = self .tempdir ('id-archive' )
503+ os .mkdir (os .path .join (self .archive_dir , "unknown_ids" ))
504+ os .mkdir (os .path .join (self .archive_dir , "deleted_tombstones" ))
505+ os .mkdir (os .path .join (self .archive_dir , "expired_without_tombstone" ))
506+
507+ settings .INTERNET_DRAFT_PATH = self .id_dir
508+ settings .INTERNET_DRAFT_ARCHIVE_DIR = self .archive_dir
509+
510+ def tearDown (self ):
511+ shutil .rmtree (self .id_dir )
512+ shutil .rmtree (self .archive_dir )
513+ settings .INTERNET_DRAFT_PATH = self .saved_id_dir
514+ settings .INTERNET_DRAFT_ARCHIVE_DIR = self .saved_archive_dir
515+
516+ def write_draft_file (self , name , size ):
517+ f = io .open (os .path .join (self .id_dir , name ), 'w' )
518+ f .write ("a" * size )
519+ f .close ()
520+
521+
522+ class ResurrectTests (DraftFileMixin , TestCase ):
496523 def test_request_resurrect (self ):
497524 draft = WgDraftFactory (states = [('draft' ,'expired' )])
498525
@@ -526,14 +553,17 @@ def test_request_resurrect(self):
526553
527554 def test_resurrect (self ):
528555 ad = Person .objects .get (name = "Areað Irector" )
529- draft = WgDraftFactory (ad = ad ,states = [('draft' ,'expired ' )])
556+ draft = WgDraftFactory (ad = ad ,states = [('draft' ,'active ' )])
530557 DocEventFactory (doc = draft ,type = "requested_resurrect" ,by = ad )
531558
532- url = urlreverse ('ietf.doc.views_draft.resurrect' , kwargs = dict (name = draft .name ))
533-
534- login_testing_unauthorized (self , "secretary" , url )
559+ # create file and expire draft
560+ txt = "%s-%s.txt" % (draft .name , draft .rev )
561+ self .write_draft_file (txt , 5000 )
562+ expire_draft (draft )
535563
536564 # normal get
565+ url = urlreverse ('ietf.doc.views_draft.resurrect' , kwargs = dict (name = draft .name ))
566+ login_testing_unauthorized (self , "secretary" , url )
537567 r = self .client .get (url )
538568 self .assertEqual (r .status_code , 200 )
539569 q = PyQuery (r .content )
@@ -556,31 +586,12 @@ def test_resurrect(self):
556586 self .assertTrue ('iesg-secretary' in outbox [- 1 ]['To' ])
557587 self .assertTrue ('aread' in outbox [- 1 ]['To' ])
558588
589+ # ensure file restored from archive directory
590+ self .assertTrue (os .path .exists (os .path .join (self .id_dir , txt )))
591+ self .assertTrue (not os .path .exists (os .path .join (self .archive_dir , txt )))
559592
560- class ExpireIDsTests (TestCase ):
561- def setUp (self ):
562- self .saved_id_dir = settings .INTERNET_DRAFT_PATH
563- self .saved_archive_dir = settings .INTERNET_DRAFT_ARCHIVE_DIR
564- self .id_dir = self .tempdir ('id' )
565- self .archive_dir = self .tempdir ('id-archive' )
566- os .mkdir (os .path .join (self .archive_dir , "unknown_ids" ))
567- os .mkdir (os .path .join (self .archive_dir , "deleted_tombstones" ))
568- os .mkdir (os .path .join (self .archive_dir , "expired_without_tombstone" ))
569-
570- settings .INTERNET_DRAFT_PATH = self .id_dir
571- settings .INTERNET_DRAFT_ARCHIVE_DIR = self .archive_dir
572-
573- def tearDown (self ):
574- shutil .rmtree (self .id_dir )
575- shutil .rmtree (self .archive_dir )
576- settings .INTERNET_DRAFT_PATH = self .saved_id_dir
577- settings .INTERNET_DRAFT_ARCHIVE_DIR = self .saved_archive_dir
578593
579- def write_draft_file (self , name , size ):
580- f = io .open (os .path .join (self .id_dir , name ), 'w' )
581- f .write ("a" * size )
582- f .close ()
583-
594+ class ExpireIDsTests (DraftFileMixin , TestCase ):
584595 def test_in_draft_expire_freeze (self ):
585596 from ietf .doc .expire import in_draft_expire_freeze
586597
@@ -623,8 +634,6 @@ def test_warn_expirable_drafts(self):
623634 self .assertTrue ('aread@' in outbox [- 1 ]['Cc' ])
624635
625636 def test_expire_drafts (self ):
626- from ietf .doc .expire import get_expired_drafts , send_expire_notice_for_draft , expire_draft
627-
628637 mars = GroupFactory (type_id = 'wg' ,acronym = 'mars' )
629638 ad_role = RoleFactory (group = mars , name_id = 'ad' , person = Person .objects .get (user__username = 'ad' ))
630639 draft = WgDraftFactory (name = 'draft-ietf-mars-test' ,group = mars )
0 commit comments