66from django .db import IntegrityError
77from django .core .urlresolvers import reverse
88from django .core .files import File
9+ from django .contrib .formtools .preview import security_hash
910
1011from ietf .utils .test_utils import login_testing_unauthorized
1112from ietf .utils .pipe import pipe
12- from ietf .nomcom .test_data import nomcom_test_data
13+
14+ from ietf .nomcom .test_data import nomcom_test_data , COMMUNITY_USER , CHAIR_USER , \
15+ MEMBER_USER , SECRETARIAT_USER , EMAIL_DOMAIN
1316from ietf .nomcom .models import NomineePosition , Position , Nominee , \
1417 NomineePositionState , Feedback , FeedbackType
18+ from ietf .nomcom .forms import EditChairForm
1519
1620
1721class NomcomViewsTest (TestCase ):
@@ -26,32 +30,117 @@ def setUp(self):
2630 nomcom_test_data ()
2731 self .year = 2013
2832
29- def test_home_view (self ):
30- """Verify home view"""
31- url = reverse ('nomcom_index' , kwargs = {'year' : self .year })
33+ # private urls
34+ self .private_index_url = reverse ('nomcom_private_index' , kwargs = {'year' : self .year })
35+ self .private_merge_url = reverse ('nomcom_private_merge' , kwargs = {'year' : self .year })
36+ self .edit_members_url = reverse ('nomcom_edit_members' , kwargs = {'year' : self .year })
37+ self .edit_chair_url = reverse ('nomcom_edit_chair' , kwargs = {'year' : self .year })
38+ self .public_key_url = reverse ('nomcom_edit_publickey' , kwargs = {'year' : self .year })
39+
40+ # public urls
41+ self .index_url = reverse ('nomcom_index' , kwargs = {'year' : self .year })
42+ self .requirements_url = reverse ('nomcom_requirements' , kwargs = {'year' : self .year })
43+ self .questionnaires_url = reverse ('nomcom_questionnaires' , kwargs = {'year' : self .year })
44+ self .comments_url = reverse ('nomcom_comments' , kwargs = {'year' : self .year })
45+ self .nominate_url = reverse ('nomcom_nominate' , kwargs = {'year' : self .year })
46+
47+ def access_member_url (self , url ):
48+ login_testing_unauthorized (self , COMMUNITY_USER , url )
49+ login_testing_unauthorized (self , CHAIR_USER , url )
50+ self .check_url_status (url , 200 )
51+ self .client .logout ()
52+ login_testing_unauthorized (self , MEMBER_USER , url )
3253 self .check_url_status (url , 200 )
3354
34- def test_nominate_view (self ):
35- """Verify nominate view"""
36- url = reverse ( 'nomcom_nominate' , kwargs = { 'year' : self . year } )
37- login_testing_unauthorized (self , 'kaligula' , url )
55+ def access_chair_url (self , url ):
56+ login_testing_unauthorized ( self , COMMUNITY_USER , url )
57+ login_testing_unauthorized ( self , MEMBER_USER , url )
58+ login_testing_unauthorized (self , CHAIR_USER , url )
3859 self .check_url_status (url , 200 )
3960
61+ def test_private_index_view (self ):
62+ """Verify private home view"""
63+ self .access_member_url (self .private_index_url )
64+ self .client .logout ()
65+
66+ def test_private_merge_view (self ):
67+ """Verify private merge view"""
68+ # TODO: complete merge nominations
69+ self .access_chair_url (self .private_merge_url )
70+ self .client .logout ()
71+
72+ def test_edit_members_view (self ):
73+ """Verify edit member view"""
74+ # TODO: complete chage edit memebers
75+ self .access_chair_url (self .edit_members_url )
76+ self .client .logout ()
77+
78+ def change_chair (self , user ):
79+ test_data = {'chair' : '%s%s' % (user , EMAIL_DOMAIN ),
80+ 'stage' : 1 }
81+ # preview
82+ self .client .post (self .edit_chair_url , test_data )
83+
84+ hash = security_hash (None , EditChairForm (test_data ))
85+ test_data .update ({'hash' : hash , 'stage' : 2 })
86+
87+ # submit
88+ self .client .post (self .edit_chair_url , test_data )
89+
90+ def test_edit_chair_view (self ):
91+ """Verify edit chair view"""
92+ login_testing_unauthorized (self , COMMUNITY_USER , self .edit_chair_url )
93+ login_testing_unauthorized (self , CHAIR_USER , self .edit_chair_url )
94+ login_testing_unauthorized (self , SECRETARIAT_USER , self .edit_chair_url )
95+ self .check_url_status (self .edit_chair_url , 200 )
96+
97+ self .change_chair (COMMUNITY_USER )
98+
99+ # check chair actions
100+ self .client .login (remote_user = COMMUNITY_USER )
101+ url = reverse ('nomcom_edit_members' , kwargs = {'year' : self .year })
102+ self .check_url_status (url , 200 )
103+ url = reverse ('nomcom_edit_publickey' , kwargs = {'year' : self .year })
104+ self .check_url_status (url , 200 )
105+
106+ # revert edit nomcom chair
107+ login_testing_unauthorized (self , SECRETARIAT_USER , self .edit_chair_url )
108+ self .change_chair (CHAIR_USER )
109+ self .client .logout ()
110+
111+ def test_edit_publickey_view (self ):
112+ """Verify edit publickey view"""
113+ # TODO: complete chage edit public key
114+ login_testing_unauthorized (self , COMMUNITY_USER , self .public_key_url )
115+ login_testing_unauthorized (self , CHAIR_USER , self .public_key_url )
116+ self .check_url_status (self .public_key_url , 200 )
117+ self .client .logout ()
118+
119+ def test_index_view (self ):
120+ """Verify home view"""
121+ self .check_url_status (self .index_url , 200 )
122+
40123 def test_requirements_view (self ):
41124 """Verify requirements view"""
42- url = reverse ('nomcom_requirements' , kwargs = {'year' : self .year })
43- self .check_url_status (url , 200 )
125+ self .check_url_status (self .requirements_url , 200 )
44126
45127 def test_questionnaires_view (self ):
46128 """Verify questionnaires view"""
47- url = reverse ('nomcom_questionnaires' , kwargs = {'year' : self .year })
48- self .check_url_status (url , 200 )
129+ self .check_url_status (self .questionnaires_url , 200 )
49130
50131 def test_comments_view (self ):
51132 """Verify comments view"""
52- url = reverse ('nomcom_comments' , kwargs = {'year' : self .year })
53- login_testing_unauthorized (self , 'plain' , url )
54- self .check_url_status (url , 200 )
133+ # TODO: comments view
134+ login_testing_unauthorized (self , COMMUNITY_USER , self .comments_url )
135+ self .check_url_status (self .comments_url , 200 )
136+ self .client .logout ()
137+
138+ def test_nominate_view (self ):
139+ """Verify nominate view"""
140+ # TODO: complete to do a nomination
141+ login_testing_unauthorized (self , COMMUNITY_USER , self .nominate_url )
142+ self .check_url_status (self .nominate_url , 200 )
143+ self .client .logout ()
55144
56145
57146class NomineePositionStateSaveTest (TestCase ):
@@ -60,7 +149,7 @@ class NomineePositionStateSaveTest(TestCase):
60149
61150 def setUp (self ):
62151 nomcom_test_data ()
63- self .nominee = Nominee .objects .get (email__address = "plain@example.com" )
152+ self .nominee = Nominee .objects .get (email__person__name = COMMUNITY_USER )
64153
65154 def test_state_autoset (self ):
66155 """Verify state is autoset correctly"""
@@ -132,7 +221,7 @@ def generate_cert(self):
132221
133222 def test_encrypted_comments (self ):
134223
135- nominee = Nominee .objects .get (email__address = "plain@example.com" )
224+ nominee = Nominee .objects .get (email__person__name = COMMUNITY_USER )
136225 position = Position .objects .get (name = 'OAM' )
137226 nomcom = position .nomcom
138227
0 commit comments