66from pyquery import PyQuery
77
88from django .db import IntegrityError
9+ from django .db .models import Max
910from django .conf import settings
1011from django .core .urlresolvers import reverse
1112from django .core .files import File
3536 key
3637from ietf .person .factories import PersonFactory
3738from ietf .dbtemplate .factories import DBTemplateFactory
39+ from ietf .dbtemplate .models import DBTemplate
3840
3941client_test_cert_files = None
4042
@@ -1104,7 +1106,7 @@ def test_can_view_but_not_edit_templates(self):
11041106 title = 'Test template' ,
11051107 path = '/nomcom/' + self .nc .group .acronym + '/test' ,
11061108 variables = '' ,
1107- type_id = 'text ' ,
1109+ type_id = 'plain ' ,
11081110 content = 'test content' )
11091111 url = reverse ('nomcom_edit_template' ,kwargs = {'year' :self .nc .year (), 'template_id' :template .id })
11101112 login_testing_unauthorized (self , self .chair .user .username , url )
@@ -1269,7 +1271,7 @@ def test_email_pasting(self):
12691271 url = reverse ('nomcom_private_feedback_email' ,kwargs = {'year' :self .nc .year ()})
12701272 login_testing_unauthorized (self ,self .chair .user .username ,url )
12711273 response = self .client .get (url )
1272- self .assertTrue (response .status_code ,200 )
1274+ self .assertEqual (response .status_code ,200 )
12731275 fb_count_before = Feedback .objects .count ()
12741276 response = self .client .post (url ,{'email_text' :"""To: rjsparks@nostrum.com
12751277From: Robert Sparks <rjsparks@nostrum.com>
@@ -1418,7 +1420,6 @@ def test_complicated_feedback_pending(self):
14181420 # nothing was classified as a nomination.
14191421 fb0 = FeedbackFactory (nomcom = self .nc ,type_id = None )
14201422 fb1 = FeedbackFactory (nomcom = self .nc ,type_id = None )
1421- np = NomineePosition .objects .filter (position__nomcom = self .nc ,state = 'accepted' ).first ()
14221423 response = self .client .post (url , {'form-TOTAL_FORMS' : 2 ,
14231424 'form-INITIAL_FORMS' : 2 ,
14241425 'form-0-id' : fb0 .id ,
@@ -1431,6 +1432,90 @@ def test_complicated_feedback_pending(self):
14311432 self .assertEqual (q ('input[name=\" form-0-type\" ]' ).attr ['value' ],'comment' )
14321433 self .assertFalse (q ('input[name=\" extra_ids\" ]' ))
14331434
1435+ def test_feedback_unrelated (self ):
1436+ FeedbackFactory (nomcom = self .nc ,type_id = 'junk' )
1437+ url = reverse ('nomcom_view_feedback_unrelated' ,kwargs = {'year' :self .nc .year ()})
1438+ login_testing_unauthorized (self ,self .chair .user .username ,url )
1439+ provide_private_key_to_test_client (self )
1440+ response = self .client .get (url )
1441+ self .assertEqual (response .status_code ,200 )
1442+
1443+ def test_list_templates (self ):
1444+ DBTemplateFactory .create (group = self .nc .group ,
1445+ title = 'Test template' ,
1446+ path = '/nomcom/' + self .nc .group .acronym + '/test' ,
1447+ variables = '' ,
1448+ type_id = 'plain' ,
1449+ content = 'test content' )
1450+ url = reverse ('nomcom_list_templates' ,kwargs = {'year' :self .nc .year ()})
1451+ login_testing_unauthorized (self ,self .chair .user .username ,url )
1452+ response = self .client .get (url )
1453+ self .assertEqual (response .status_code ,200 )
1454+
1455+ def test_edit_templates (self ):
1456+ template = DBTemplateFactory .create (group = self .nc .group ,
1457+ title = 'Test template' ,
1458+ path = '/nomcom/' + self .nc .group .acronym + '/test' ,
1459+ variables = '' ,
1460+ type_id = 'plain' ,
1461+ content = 'test content' )
1462+ url = reverse ('nomcom_edit_template' ,kwargs = {'year' :self .nc .year (),'template_id' :template .id })
1463+ login_testing_unauthorized (self ,self .chair .user .username ,url )
1464+ response = self .client .get (url )
1465+ self .assertEqual (response .status_code ,200 )
1466+ response = self .client .post (url ,{'content' : 'more interesting test content' })
1467+ self .assertEqual (response .status_code ,302 )
1468+ template = DBTemplate .objects .get (id = template .id )
1469+ self .assertEqual ('more interesting test content' ,template .content )
1470+
1471+ def test_list_positions (self ):
1472+ url = reverse ('nomcom_list_positions' ,kwargs = {'year' :self .nc .year ()})
1473+ login_testing_unauthorized (self ,self .chair .user .username ,url )
1474+ response = self .client .get (url )
1475+ self .assertEqual (response .status_code ,200 )
1476+
1477+ def test_remove_position (self ):
1478+ position = self .nc .position_set .filter (nomineeposition__isnull = False ).first ()
1479+ f = FeedbackFactory (nomcom = self .nc )
1480+ f .positions .add (position )
1481+ url = reverse ('nomcom_remove_position' ,kwargs = {'year' :self .nc .year (),'position_id' :position .id })
1482+ login_testing_unauthorized (self ,self .chair .user .username ,url )
1483+ response = self .client .get (url )
1484+ self .assertEqual (response .status_code ,200 )
1485+ q = PyQuery (response .content )
1486+ self .assertTrue (any (['likely to be harmful' in x .text for x in q ('.alert-warning' )]))
1487+ response = self .client .post (url ,{'remove' :position .id })
1488+ self .assertEqual (response .status_code , 302 )
1489+ self .assertFalse (self .nc .position_set .filter (id = position .id ))
1490+
1491+ def test_remove_invalid_position (self ):
1492+ no_such_position_id = self .nc .position_set .aggregate (Max ('id' ))['id__max' ]+ 1
1493+ url = reverse ('nomcom_remove_position' ,kwargs = {'year' :self .nc .year (),'position_id' :no_such_position_id })
1494+ login_testing_unauthorized (self ,self .chair .user .username ,url )
1495+ response = self .client .get (url )
1496+ self .assertEqual (response .status_code , 404 )
1497+
1498+ def test_edit_position (self ):
1499+ position = self .nc .position_set .filter (is_open = True ).first ()
1500+ url = reverse ('nomcom_edit_position' ,kwargs = {'year' :self .nc .year (),'position_id' :position .id })
1501+ login_testing_unauthorized (self ,self .chair .user .username ,url )
1502+ response = self .client .get (url )
1503+ self .assertEqual (response .status_code , 200 )
1504+ response = self .client .post (url ,{'name' :'more interesting test name' })
1505+ self .assertEqual (response .status_code , 302 )
1506+ position = Position .objects .get (id = position .id )
1507+ self .assertEqual ('more interesting test name' ,position .name )
1508+ self .assertFalse (position .is_open )
1509+
1510+ def test_edit_invalid_position (self ):
1511+ no_such_position_id = self .nc .position_set .aggregate (Max ('id' ))['id__max' ]+ 1
1512+ url = reverse ('nomcom_edit_position' ,kwargs = {'year' :self .nc .year (),'position_id' :no_such_position_id })
1513+ login_testing_unauthorized (self ,self .chair .user .username ,url )
1514+ response = self .client .get (url )
1515+ self .assertEqual (response .status_code , 404 )
1516+
1517+ # Note that the old tests currently test the edit_position view through its nomcom_add_position name
1518+
14341519
14351520class NomComIndexTests (TestCase ):
14361521 def setUp (self ):
@@ -1441,3 +1526,32 @@ def testIndex(self):
14411526 url = reverse ('ietf.nomcom.views.index' )
14421527 response = self .client .get (url )
14431528 self .assertEqual (response .status_code ,200 )
1529+
1530+ class NoPublicKeyTests (TestCase ):
1531+ def setUp (self ):
1532+ self .nc = NomComFactory .create (** nomcom_kwargs_for_year (public_key = None ))
1533+ self .chair = self .nc .group .role_set .filter (name = 'chair' ).first ().person
1534+
1535+ def do_common_work (self ,url ,expected_form ):
1536+ login_testing_unauthorized (self ,self .chair .user .username ,url )
1537+ response = self .client .get (url )
1538+ self .assertEqual (response .status_code ,200 )
1539+ q = PyQuery (response .content )
1540+ self .assertTrue (any (['not yet' in x .text for x in q ('.alert-warning' )]))
1541+ self .assertEqual (bool (q ('form:not(.navbar-form)' )),expected_form )
1542+ self .client .logout ()
1543+
1544+ def test_not_yet (self ):
1545+ # Warn reminder mail
1546+ self .do_common_work (reverse ('nomcom_send_reminder_mail' ,kwargs = {'year' :self .nc .year (),'type' :'accept' }),True )
1547+ # No nominations
1548+ self .do_common_work (reverse ('nomcom_private_nominate' ,kwargs = {'year' :self .nc .year ()}),False )
1549+ # No feedback
1550+ self .do_common_work (reverse ('nomcom_private_feedback' ,kwargs = {'year' :self .nc .year ()}),False )
1551+ # No feedback email
1552+ self .do_common_work (reverse ('nomcom_private_feedback_email' ,kwargs = {'year' :self .nc .year ()}),False )
1553+ # No questionnaire responses
1554+ self .do_common_work (reverse ('nomcom_private_questionnaire' ,kwargs = {'year' :self .nc .year ()}),False )
1555+ # Warn on edit nomcom
1556+ self .do_common_work (reverse ('nomcom_edit_nomcom' ,kwargs = {'year' :self .nc .year ()}),True )
1557+
0 commit comments