3232from ietf .utils .test_data import make_test_data , create_person
3333from ietf .utils .test_utils import login_testing_unauthorized , TestCase , unicontent
3434
35+ def group_urlreverse_list (group , viewname ):
36+ return [
37+ urlreverse (viewname , kwargs = dict (acronym = group .acronym )),
38+ urlreverse (viewname , kwargs = dict (acronym = group .acronym , group_type = group .type_id )),
39+ ]
40+
41+
3542class GroupPagesTests (TestCase ):
3643 def setUp (self ):
3744 self .charter_dir = os .path .abspath ("tmp-charter-dir" )
@@ -94,17 +101,18 @@ def test_group_home(self):
94101 draft = make_test_data ()
95102 group = draft .group
96103
97- url = urlreverse ('ietf.group.views.group_home' , kwargs = dict (acronym = group .acronym ))
98- next = urlreverse ('ietf.group.views.group_documents' , kwargs = dict (acronym = group .acronym ))
99- r = self .client .get (url )
100- self .assertRedirects (r , next )
101- r = self .client .get (next )
102- self .assertTrue (group .acronym in unicontent (r ))
103- self .assertTrue (group .name in unicontent (r ))
104- for word in ['Documents' , 'Date' , 'Status' , 'IPR' , 'AD' , 'Shepherd' ]:
105- self .assertTrue (word in unicontent (r ))
106- self .assertTrue (draft .name in unicontent (r ))
107- self .assertTrue (draft .title in unicontent (r ))
104+ url_list = group_urlreverse_list (group , 'ietf.group.views.group_home' )
105+ next_list = group_urlreverse_list (group , 'ietf.group.views.group_documents' )
106+ for url , next in [ (url_list [i ], next_list [i ]) for i in range (len (url_list )) ]:
107+ r = self .client .get (url )
108+ self .assertRedirects (r , next )
109+ r = self .client .get (next )
110+ self .assertTrue (group .acronym in unicontent (r ))
111+ self .assertTrue (group .name in unicontent (r ))
112+ for word in ['Documents' , 'Date' , 'Status' , 'IPR' , 'AD' , 'Shepherd' ]:
113+ self .assertTrue (word in unicontent (r ))
114+ self .assertTrue (draft .name in unicontent (r ))
115+ self .assertTrue (draft .title in unicontent (r ))
108116
109117 def test_wg_summaries (self ):
110118 draft = make_test_data ()
@@ -215,13 +223,13 @@ def test_group_documents(self):
215223 related_docs_rule = clist .searchrule_set .get (rule_type = 'name_contains' )
216224 reset_name_contains_index_for_rule (related_docs_rule )
217225
218- url = urlreverse ( 'ietf.group.views.group_documents' , kwargs = dict ( group_type = group . type_id , acronym = group . acronym ))
219- r = self .client .get (url )
220- self .assertEqual (r .status_code , 200 )
221- self .assertTrue (draft .name in unicontent (r ))
222- self .assertTrue (group .name in unicontent (r ))
223- self .assertTrue (group .acronym in unicontent (r ))
224- self .assertTrue (draft2 .name in unicontent (r ))
226+ for url in group_urlreverse_list ( group , 'ietf.group.views.group_documents' ):
227+ r = self .client .get (url )
228+ self .assertEqual (r .status_code , 200 )
229+ self .assertTrue (draft .name in unicontent (r ))
230+ self .assertTrue (group .name in unicontent (r ))
231+ self .assertTrue (group .acronym in unicontent (r ))
232+ self .assertTrue (draft2 .name in unicontent (r ))
225233
226234 # Make sure that a logged in user is presented with an opportunity to add results to their community list
227235 self .client .login (username = "secretary" , password = "secretary+password" )
@@ -230,11 +238,11 @@ def test_group_documents(self):
230238 self .assertTrue (any ([draft2 .name in x .attrib ['href' ] for x in q ('table td a.track-untrack-doc' )]))
231239
232240 # test the txt version too while we're at it
233- url = urlreverse ( 'ietf.group.views.group_documents_txt' , kwargs = dict ( group_type = group . type_id , acronym = group . acronym ))
234- r = self .client .get (url )
235- self .assertEqual (r .status_code , 200 )
236- self .assertTrue (draft .name in unicontent (r ))
237- self .assertTrue (draft2 .name in unicontent (r ))
241+ for url in group_urlreverse_list ( group , 'ietf.group.views.group_documents_txt' ):
242+ r = self .client .get (url )
243+ self .assertEqual (r .status_code , 200 )
244+ self .assertTrue (draft .name in unicontent (r ))
245+ self .assertTrue (draft2 .name in unicontent (r ))
238246
239247 def test_group_charter (self ):
240248 draft = make_test_data ()
@@ -250,10 +258,7 @@ def test_group_charter(self):
250258 due = datetime .date .today () + datetime .timedelta (days = 100 ))
251259 milestone .docs .add (draft )
252260
253- for url in [group .about_url (),
254- urlreverse ('ietf.group.views.group_about' ,kwargs = dict (acronym = group .acronym )),
255- urlreverse ('ietf.group.views.group_about' ,kwargs = dict (acronym = group .acronym ,group_type = group .type_id )),
256- ]:
261+ for url in [group .about_url (),] + group_urlreverse_list (group , 'ietf.group.views.group_about' ):
257262 r = self .client .get (url )
258263 self .assertEqual (r .status_code , 200 )
259264 self .assertTrue (group .name in unicontent (r ))
@@ -264,12 +269,12 @@ def test_group_charter(self):
264269
265270 def test_group_about (self ):
266271
267- def verify_cannot_edit_group (username ):
272+ def verify_cannot_edit_group (url , username ):
268273 self .client .login (username = username , password = username + "+password" )
269274 r = self .client .get (url )
270275 self .assertEqual (r .status_code , 403 )
271276
272- def verify_can_edit_group (username ):
277+ def verify_can_edit_group (url , username ):
273278 self .client .login (username = username , password = username + "+password" )
274279 r = self .client .get (url )
275280 self .assertEqual (r .status_code , 200 )
@@ -285,24 +290,21 @@ def verify_can_edit_group(username):
285290 )
286291 create_person (group , "chair" , name = "Testteam Chairman" , username = "teamchairman" )
287292
288- for url in [group .about_url (),
289- urlreverse ('ietf.group.views.group_about' ,kwargs = dict (acronym = group .acronym )),
290- urlreverse ('ietf.group.views.group_about' ,kwargs = dict (acronym = group .acronym ,group_type = group .type_id )),
291- ]:
293+ for url in [group .about_url (),] + group_urlreverse_list (group , 'ietf.group.views.group_about' ):
292294 url = group .about_url ()
293295 r = self .client .get (url )
294296 self .assertEqual (r .status_code , 200 )
295297 self .assertTrue (group .name in unicontent (r ))
296298 self .assertTrue (group .acronym in unicontent (r ))
297299 self .assertTrue (group .description in unicontent (r ))
298300
299- url = urlreverse ( 'ietf.group.views_edit.edit' , kwargs = dict ( acronym = group . acronym ))
301+ for url in group_urlreverse_list ( group , 'ietf.group.views_edit.edit' ):
300302
301- for username in ['plain' ,'iana' ,'iab chair' ,'irtf chair' ,'marschairman' ]:
302- verify_cannot_edit_group (username )
303+ for username in ['plain' ,'iana' ,'iab chair' ,'irtf chair' ,'marschairman' ]:
304+ verify_cannot_edit_group (url , username )
303305
304- for username in ['secretary' ,'teamchairman' ,'ad' ]:
305- verify_can_edit_group (username )
306+ for username in ['secretary' ,'teamchairman' ,'ad' ]:
307+ verify_can_edit_group (url , username )
306308
307309 def test_materials (self ):
308310 make_test_data ()
@@ -318,9 +320,7 @@ def test_materials(self):
318320 doc .set_state (State .objects .get (type = "slides" , slug = "active" ))
319321 DocAlias .objects .create (name = doc .name , document = doc )
320322
321- for url in [ urlreverse ("group_materials" , kwargs = { 'acronym' : group .acronym }),
322- urlreverse ("group_materials" , kwargs = { 'acronym' : group .acronym , 'group_type' : group .type_id }),
323- ]:
323+ for url in group_urlreverse_list (group , 'ietf.group.views.materials' ):
324324 r = self .client .get (url )
325325 self .assertEqual (r .status_code , 200 )
326326 self .assertTrue (doc .title in unicontent (r ))
@@ -345,10 +345,10 @@ def test_history(self):
345345 type = "added_comment" ,
346346 by = Person .objects .get (name = "(System)" ))
347347
348- url = urlreverse ( 'ietf.group.views.history' , kwargs = dict ( group_type = group . type_id , acronym = group . acronym ))
349- r = self .client .get (url )
350- self .assertEqual (r .status_code , 200 )
351- self .assertTrue (e .desc in unicontent (r ))
348+ for url in group_urlreverse_list ( group , 'ietf.group.views.history' ):
349+ r = self .client .get (url )
350+ self .assertEqual (r .status_code , 200 )
351+ self .assertTrue (e .desc in unicontent (r ))
352352
353353 def test_feed (self ):
354354 draft = make_test_data ()
@@ -665,20 +665,22 @@ def last_day_of_month(self, d):
665665 def test_milestone_sets (self ):
666666 m1 , m2 , group = self .create_test_milestones ()
667667
668- url = urlreverse ( 'group_edit_milestones' , kwargs = dict ( group_type = group . type_id , acronym = group . acronym ))
669- login_testing_unauthorized (self , "secretary" , url )
668+ for url in group_urlreverse_list ( group , 'group_edit_milestones' ):
669+ login_testing_unauthorized (self , "secretary" , url )
670670
671- r = self .client .get (url )
672- self .assertEqual (r .status_code , 200 )
673- self .assertTrue (m1 .desc in unicontent (r ))
674- self .assertTrue (m2 .desc not in unicontent (r ))
671+ r = self .client .get (url )
672+ self .assertEqual (r .status_code , 200 )
673+ self .assertTrue (m1 .desc in unicontent (r ))
674+ self .assertTrue (m2 .desc not in unicontent (r ))
675+ self .client .logout ()
675676
676- url = urlreverse ( 'group_edit_charter_milestones' , kwargs = dict ( group_type = group . type_id , acronym = group . acronym ) )
677+ login_testing_unauthorized ( self , "secretary" , url )
677678
678- r = self .client .get (url )
679- self .assertEqual (r .status_code , 200 )
680- self .assertTrue (m1 .desc not in unicontent (r ))
681- self .assertTrue (m2 .desc in unicontent (r ))
679+ for url in group_urlreverse_list (group , 'group_edit_charter_milestones' ):
680+ r = self .client .get (url )
681+ self .assertEqual (r .status_code , 200 )
682+ self .assertTrue (m1 .desc not in unicontent (r ))
683+ self .assertTrue (m2 .desc in unicontent (r ))
682684
683685 def test_add_milestone (self ):
684686 m1 , m2 , group = self .create_test_milestones ()
@@ -1075,13 +1077,13 @@ def setUp(self):
10751077
10761078
10771079 def test_meeting_info (self ):
1078- url = urlreverse ( 'ietf.group.views.meetings' , kwargs = { 'acronym' : self . group . acronym })
1079- response = self .client .get (url )
1080- self .assertEqual (response .status_code , 200 )
1081- q = PyQuery (response .content )
1082- self .assertTrue (q ('#inprogressmeets' ))
1083- self .assertTrue (q ('#futuremeets' ))
1084- self .assertTrue (q ('#pastmeets' ))
1080+ for url in group_urlreverse_list ( self . group , 'ietf.group.views.meetings' ):
1081+ response = self .client .get (url )
1082+ self .assertEqual (response .status_code , 200 )
1083+ q = PyQuery (response .content )
1084+ self .assertTrue (q ('#inprogressmeets' ))
1085+ self .assertTrue (q ('#futuremeets' ))
1086+ self .assertTrue (q ('#pastmeets' ))
10851087
10861088 self .group .session_set .filter (id = self .inprog .id ).delete ()
10871089 response = self .client .get (url )
@@ -1094,7 +1096,7 @@ class StatusUpdateTests(TestCase):
10941096
10951097 def test_unsupported_group_types (self ):
10961098
1097- def ensure_updates_dont_show (group ,user ):
1099+ def ensure_updates_dont_show (group , user ):
10981100 url = urlreverse ('ietf.group.views.group_about' ,kwargs = {'acronym' :group .acronym })
10991101 if user :
11001102 self .client .login (username = user .username ,password = '%s+password' % user .username )
@@ -1121,34 +1123,36 @@ def ensure_cant_edit(group,user):
11211123 def test_see_status_update (self ):
11221124 chair = RoleFactory (name_id = 'chair' ,group__type_id = 'wg' )
11231125 GroupEventFactory (type = 'status_update' ,group = chair .group )
1124- url = urlreverse ('ietf.group.views.group_about' ,kwargs = {'acronym' :chair .group .acronym })
1125- response = self .client .get (url )
1126- self .assertEqual (response .status_code ,200 )
1127- q = PyQuery (response .content )
1128- self .assertTrue (q ('tr#status_update' ))
1129- self .assertTrue (q ('tr#status_update td a:contains("Show")' ))
1130- self .assertFalse (q ('tr#status_update td a:contains("Edit")' ))
1131- self .client .login (username = chair .person .user .username ,password = '%s+password' % chair .person .user .username )
1132- response = self .client .get (url )
1133- self .assertEqual (response .status_code ,200 )
1134- q = PyQuery (response .content )
1135- self .assertTrue (q ('tr#status_update td a:contains("Show")' ))
1136- self .assertTrue (q ('tr#status_update td a:contains("Edit")' ))
1126+ for url in group_urlreverse_list (chair .group , 'ietf.group.views.group_about' ):
1127+ response = self .client .get (url )
1128+ self .assertEqual (response .status_code ,200 )
1129+ q = PyQuery (response .content )
1130+ self .assertTrue (q ('tr#status_update' ))
1131+ self .assertTrue (q ('tr#status_update td a:contains("Show")' ))
1132+ self .assertFalse (q ('tr#status_update td a:contains("Edit")' ))
1133+ self .client .login (username = chair .person .user .username ,password = '%s+password' % chair .person .user .username )
1134+ response = self .client .get (url )
1135+ self .assertEqual (response .status_code ,200 )
1136+ q = PyQuery (response .content )
1137+ self .assertTrue (q ('tr#status_update td a:contains("Show")' ))
1138+ self .assertTrue (q ('tr#status_update td a:contains("Edit")' ))
1139+ self .client .logout ()
11371140
11381141 def test_view_status_update (self ):
11391142 chair = RoleFactory (name_id = 'chair' ,group__type_id = 'wg' )
11401143 event = GroupEventFactory (type = 'status_update' ,group = chair .group )
1141- url = urlreverse ('ietf.group.views.group_about_status' ,kwargs = {'acronym' :chair .group .acronym })
1142- response = self .client .get (url )
1143- self .assertEqual (response .status_code ,200 )
1144- q = PyQuery (response .content )
1145- self .assertTrue (urlize (escape (event .desc ) in q ('pre' )))
1146- self .assertFalse (q ('a#edit_button' ))
1147- self .client .login (username = chair .person .user .username ,password = '%s+password' % chair .person .user .username )
1148- response = self .client .get (url )
1149- self .assertEqual (response .status_code ,200 )
1150- q = PyQuery (response .content )
1151- self .assertTrue (q ('a#edit_button' ))
1144+ for url in group_urlreverse_list (chair .group , 'ietf.group.views.group_about_status' ):
1145+ response = self .client .get (url )
1146+ self .assertEqual (response .status_code ,200 )
1147+ q = PyQuery (response .content )
1148+ self .assertTrue (urlize (escape (event .desc ) in q ('pre' )))
1149+ self .assertFalse (q ('a#edit_button' ))
1150+ self .client .login (username = chair .person .user .username ,password = '%s+password' % chair .person .user .username )
1151+ response = self .client .get (url )
1152+ self .assertEqual (response .status_code ,200 )
1153+ q = PyQuery (response .content )
1154+ self .assertTrue (q ('a#edit_button' ))
1155+ self .client .logout ()
11521156
11531157 def test_edit_status_update (self ):
11541158 chair = RoleFactory (name_id = 'chair' ,group__type_id = 'wg' )
0 commit comments