Example #1
0
 def test_main(self):
     "Main Test"
     make_test_data()
     url = reverse('ietf.secr.areas.views.list_areas')
     self.client.login(username="******", password="******")
     response = self.client.get(url)
     self.assertEqual(response.status_code, 200)
Example #2
0
    def test_no_returning_item_for_different_ballot(self):
        make_test_data()

        group = Group.objects.get(acronym="ames")
        charter = group.charter
        url = urlreverse('charter_telechat_date', kwargs=dict(name=charter.name))
        login_testing_unauthorized(self, "secretary", url)
        login = Person.objects.get(user__username="******")

        # Make it so that the charter has been through internal review, and passed its external review
        # ballot on a previous telechat 
        last_week = datetime.date.today()-datetime.timedelta(days=7)
        BallotDocEvent.objects.create(type='created_ballot',by=login,doc=charter,
                                      ballot_type=BallotType.objects.get(doc_type=charter.type,slug='r-extrev'),
                                      time=last_week)
        TelechatDocEvent.objects.create(type='scheduled_for_telechat',doc=charter,by=login,telechat_date=last_week,returning_item=False)
        BallotDocEvent.objects.create(type='created_ballot',by=login,doc=charter,
                                      ballot_type=BallotType.objects.get(doc_type=charter.type,slug='approve'))
        
        # Put the charter onto a future telechat and verify returning item is not set
        telechat_date = TelechatDate.objects.active()[1].date
        r = self.client.post(url, dict(name=group.name, acronym=group.acronym, telechat_date=telechat_date.isoformat()))
        self.assertEqual(r.status_code, 302)
        
        charter = Document.objects.get(name=charter.name)
        telechat_event = charter.latest_event(TelechatDocEvent, "scheduled_for_telechat")
        self.assertEqual(telechat_event.telechat_date, telechat_date)
        self.assertFalse(telechat_event.returning_item)
Example #3
0
    def test_edit_notify(self):
        make_test_data()

        charter = Group.objects.get(acronym="mars").charter

        url = urlreverse('charter_edit_notify', kwargs=dict(name=charter.name))
        login_testing_unauthorized(self, "secretary", url)

        # get
        r = self.client.get(url)
        self.assertEqual(r.status_code, 200)

        # post
        self.assertTrue(not charter.notify)
        newlist = "[email protected], [email protected]"
        r = self.client.post(url, dict(notify=newlist,save_addresses="1"))
        self.assertEqual(r.status_code, 302)

        charter = Document.objects.get(name=charter.name)
        self.assertEqual(charter.notify, newlist)

        # Ask the form to regenerate the list
        r = self.client.post(url,dict(regenerate_addresses="1"))
        self.assertEqual(r.status_code,200)
        charter= Document.objects.get(name=charter.name)
        # Regenerate does not save!
        self.assertEqual(charter.notify,newlist)
        q = PyQuery(r.content)
        formlist = q('form input[name=notify]')[0].value
        self.assertEqual(formlist, None)
Example #4
0
    def test_add_not_existing_delegate(self):
        make_test_data()

        url = urlreverse('manage_delegates', kwargs=dict(acronym="mars"))
        login_testing_unauthorized(self, "secretary", url)

        # get
        r = self.client.get(url)
        self.assertEquals(r.status_code, 200)
        q = PyQuery(r.content)
        self.assertEquals(len(q('form input[name=email]')), 1)

        # add non-existing
        r = self.client.post(
            url, dict(email="*****@*****.**", form_type="single"))
        self.assertEquals(r.status_code, 200)
        self.assertTrue("*****@*****.**" in r.content)
        q = PyQuery(r.content)
        self.assertEquals(
            len(q('form input[type=submit][value*="Send email"]')), 1)

        # we get back a warning and offer to send email, do that
        mailbox_before = len(outbox)
        r = self.client.post(
            url, dict(email="*****@*****.**", form_type="notexist"))
        self.assertEquals(r.status_code, 200)
        self.assertTrue("Email sent" in r.content)
        self.assertEquals(len(outbox), mailbox_before + 3)
Example #5
0
    def test_add_delegate(self):
        make_test_data()

        url = urlreverse('manage_delegates', kwargs=dict(acronym="mars"))
        login_testing_unauthorized(self, "secretary", url)

        # get
        r = self.client.get(url)
        self.assertEquals(r.status_code, 200)
        q = PyQuery(r.content)
        self.assertEquals(len(q('form input[name=email]')), 1)

        # add existing person
        history_before = GroupHistory.objects.filter(acronym="mars").count()
        r = self.client.post(
            url, dict(email="*****@*****.**", form_type="single"))
        self.assertEquals(r.status_code, 200)
        q = PyQuery(r.content)
        self.assertTrue("new delegate" in r.content)
        self.assertTrue(
            Email.objects.get(
                address="*****@*****.**").person.plain_name() in r.content)
        self.assertEquals(
            Role.objects.filter(name="delegate",
                                group__acronym="mars",
                                email__address="*****@*****.**").count(), 1)
        self.assertEquals(history_before + 1,
                          GroupHistory.objects.filter(acronym="mars").count())
Example #6
0
    def test_ipr_details(self):
        make_test_data()
        ipr = IprDetail.objects.get(title="Statement regarding rights")

        r = self.client.get(urlreverse("ipr_show", kwargs=dict(ipr_id=ipr.pk)))
        self.assertEqual(r.status_code, 200)
        self.assertTrue(ipr.title in r.content)
Example #7
0
    def test_overview(self):
        make_test_data()
        ipr = IprDetail.objects.get(title="Statement regarding rights")

        r = self.client.get(urlreverse("ipr_showlist"))
        self.assertEqual(r.status_code, 200)
        self.assertTrue(ipr.title in r.content)
Example #8
0
    def test_sitemap(self):
        make_test_data()
        ipr = IprDetail.objects.get(title="Statement regarding rights")

        r = self.client.get("/sitemap-ipr.xml")
        self.assertEqual(r.status_code, 200)
        self.assertTrue("/ipr/%s/" % ipr.pk in r.content)
Example #9
0
 def test_edit_non_wg_group(self):
     make_test_data()
     parent_sdo = GroupFactory.create(type_id='sdo', state_id='active')
     child_sdo = GroupFactory.create(type_id='sdo',
                                     state_id='active',
                                     parent=parent_sdo)
     url = reverse('ietf.secr.groups.views.edit',
                   kwargs={'acronym': child_sdo.acronym})
     target = reverse('ietf.secr.groups.views.view',
                      kwargs={'acronym': child_sdo.acronym})
     post_data = {
         'acronym': child_sdo.acronym,
         'name': 'New Name',
         'type': 'sdo',
         'state': child_sdo.state_id,
         'parent': parent_sdo.id,
         'ad': '',
         'groupurl_set-TOTAL_FORMS': '2',
         'groupurl_set-INITIAL_FORMS': '0',
         'submit': 'Save'
     }
     self.client.login(username="******", password="******")
     response = self.client.post(url, post_data, follow=True)
     self.assertRedirects(response, target)
     self.assertTrue('changed successfully' in response.content)
Example #10
0
 def test_view(self):
     "View Test"
     make_test_data()
     meeting = Meeting.objects.all()[0]
     url = reverse('meetings_view', kwargs={'meeting_id':meeting.number})
     response = self.client.get(url, REMOTE_USER=SECR_USER)
     self.assertEquals(response.status_code, 200)
Example #11
0
 def test_main(self):
     "Main Test"
     make_test_data()
     url = reverse('drafts')
     self.client.login(username="******", password="******")
     response = self.client.get(url)
     self.assertEqual(response.status_code, 200)
Example #12
0
    def test_document_primary_and_history_views(self):
        make_test_data()

        # Ensure primary views of both current and historic versions of documents works
        for docname in ["draft-imaginary-independent-submission",
                        "conflict-review-imaginary-irtf-submission",
                        "status-change-imaginary-mid-review",
                        "charter-ietf-mars",
                        "agenda-42-mars",
                        "minutes-42-mars",
                        "slides-42-mars-1",
                       ]:
            doc = Document.objects.get(name=docname)
            # give it some history
            save_document_in_history(doc)
            doc.rev="01"
            doc.save()

            r = self.client.get(urlreverse("doc_view", kwargs=dict(name=doc.name)))
            self.assertEqual(r.status_code, 200)
            self.assertTrue("%s-01"%docname in unicontent(r))
    
            r = self.client.get(urlreverse("doc_view", kwargs=dict(name=doc.name,rev="01")))
            self.assertEqual(r.status_code, 302)
     
            r = self.client.get(urlreverse("doc_view", kwargs=dict(name=doc.name,rev="00")))
            self.assertEqual(r.status_code, 200)
            self.assertTrue("%s-00"%docname in unicontent(r))
Example #13
0
    def setUp(self):
        make_test_data()
        self.doc_alias_file = NamedTemporaryFile(delete=False)
        self.doc_alias_file.write("""# Generated by hand at 2015-02-12_16:26:45
virtual.ietf.org anything
[email protected]              xfilter-draft-ietf-mars-test
[email protected]  [email protected], [email protected]
[email protected]      xfilter-draft-ietf-mars-test.authors
[email protected]  [email protected], [email protected]
[email protected]      xfilter-draft-ietf-mars-test.chairs
[email protected]  [email protected]
[email protected]      xfilter-draft-ietf-mars-test.all
[email protected]  [email protected], [email protected], [email protected]
[email protected]              xfilter-draft-ietf-ames-test
[email protected]  [email protected], [email protected]
[email protected]      xfilter-draft-ietf-ames-test.authors
[email protected]  [email protected], [email protected]
[email protected]      xfilter-draft-ietf-ames-test.chairs
[email protected]  [email protected]
[email protected]      xfilter-draft-ietf-ames-test.all
[email protected]  [email protected], [email protected], [email protected]

""")
        self.doc_alias_file.close()
        self.saved_draft_virtual_path = settings.DRAFT_VIRTUAL_PATH
        settings.DRAFT_VIRTUAL_PATH = self.doc_alias_file.name
Example #14
0
    def test_taken_care_of(self):
        make_test_data()
        liaison = make_liaison_models()

        url = urlreverse('liaison_detail', kwargs=dict(object_id=liaison.pk))
        # normal get
        r = self.client.get(url)
        self.assertEquals(r.status_code, 200)
        q = PyQuery(r.content)
        self.assertEquals(len(q('form input[name=do_action_taken]')), 0)

        # log in and get
        self.client.login(remote_user="******")

        r = self.client.get(url)
        self.assertEquals(r.status_code, 200)
        q = PyQuery(r.content)
        self.assertEquals(len(q('form input[name=do_action_taken]')), 1)

        # mark action taken
        r = self.client.post(url, dict(do_action_taken="1"))
        self.assertEquals(r.status_code, 200)
        q = PyQuery(r.content)
        self.assertEquals(len(q('form input[name=do_action_taken]')), 0)
        liaison = LiaisonStatement.objects.get(id=liaison.id)
        self.assertTrue(liaison.action_taken)
Example #15
0
    def setUp(self):
        make_test_data()

        ise_draft = Document.objects.get(name="draft-imaginary-independent-submission")
        ise_draft.stream = StreamName.objects.get(slug="ise")
        ise_draft.save()

        self.telechat_docs = {
            "ietf_draft": Document.objects.get(name="draft-ietf-mars-test"),
            "ise_draft": ise_draft,
            "conflrev": Document.objects.get(name="conflict-review-imaginary-irtf-submission"),
            "statchg": Document.objects.get(name="status-change-imaginary-mid-review"),
            "charter": Document.objects.filter(type="charter")[0],
            }

        by = Person.objects.get(name="Aread Irector")
        date = get_agenda_date()

        self.draft_dir = os.path.abspath("tmp-agenda-draft-dir")
        os.mkdir(self.draft_dir)
        settings.INTERNET_DRAFT_PATH = self.draft_dir

        for d in self.telechat_docs.values():
            TelechatDocEvent.objects.create(type="scheduled_for_telechat",
                                            doc=d,
                                            by=by,
                                            telechat_date=date,
                                            returning_item=True)
Example #16
0
    def setUp(self):
        make_test_data()

        ise_draft = Document.objects.get(name="draft-imaginary-independent-submission")
        ise_draft.stream = StreamName.objects.get(slug="ise")
        ise_draft.save_with_history([DocEvent(doc=ise_draft, rev=ise_draft.rev, type="changed_stream", by=Person.objects.get(user__username="******"), desc="Test")])

        self.telechat_docs = {
            "ietf_draft": Document.objects.get(name="draft-ietf-mars-test"),
            "ise_draft": ise_draft,
            "conflrev": Document.objects.get(name="conflict-review-imaginary-irtf-submission"),
            "statchg": Document.objects.get(name="status-change-imaginary-mid-review"),
            "charter": Document.objects.filter(type="charter")[0],
            }

        by = Person.objects.get(name="Areað Irector")
        date = get_agenda_date()

        self.draft_dir = self.tempdir('agenda-draft')
        self.saved_internet_draft_path = settings.INTERNET_DRAFT_PATH
        settings.INTERNET_DRAFT_PATH = self.draft_dir

        for d in self.telechat_docs.values():
            TelechatDocEvent.objects.create(type="scheduled_for_telechat",
                                            doc=d,
                                            rev=d.rev,
                                            by=by,
                                            telechat_date=date,
                                            returning_item=True)
Example #17
0
    def test_approval(self):
        make_test_data()
        liaison = make_liaison_models()
        # has to come from WG to need approval
        liaison.from_group = Group.objects.get(acronym="mars")
        liaison.approved = None
        liaison.save()

        url = urlreverse('liaison_approval_detail',
                         kwargs=dict(object_id=liaison.pk))
        # this liaison is for a WG so we need the AD for the area
        login_testing_unauthorized(self, "ad", url)

        # normal get
        r = self.client.get(url)
        self.assertEquals(r.status_code, 200)
        q = PyQuery(r.content)
        self.assertEquals(len(q('form input[name=do_approval]')), 1)

        # approve
        mailbox_before = len(outbox)
        r = self.client.post(url, dict(do_approval="1"))
        self.assertEquals(r.status_code, 302)

        liaison = LiaisonStatement.objects.get(id=liaison.id)
        self.assertTrue(liaison.approved)
        self.assertEquals(len(outbox), mailbox_before + 1)
        self.assertTrue("Liaison Statement" in outbox[-1]["Subject"])
Example #18
0
    def test_edit_notify(self):
        make_test_data()

        charter = Group.objects.get(acronym="mars").charter

        url = urlreverse('ietf.doc.views_doc.edit_notify;charter', kwargs=dict(name=charter.name))
        login_testing_unauthorized(self, "secretary", url)

        # get
        r = self.client.get(url)
        self.assertEqual(r.status_code, 200)

        # post
        self.assertTrue(not charter.notify)
        newlist = "[email protected], [email protected]"
        r = self.client.post(url, dict(notify=newlist,save_addresses="1"))
        self.assertEqual(r.status_code, 302)

        charter = Document.objects.get(name=charter.name)
        self.assertEqual(charter.notify, newlist)

        # Ask the form to regenerate the list
        r = self.client.post(url,dict(regenerate_addresses="1"))
        self.assertEqual(r.status_code,200)
        charter= Document.objects.get(name=charter.name)
        # Regenerate does not save!
        self.assertEqual(charter.notify,newlist)
        q = PyQuery(r.content)
        formlist = q('form input[name=notify]')[0].value
        self.assertEqual(formlist, None)
Example #19
0
    def test_submit_initial_charter(self):
        make_test_data()

        group = Group.objects.get(acronym="mars")
        # get rid of existing charter
        charter = group.charter
        group.charter = None
        group.save()
        charter.delete()
        charter = None

        url = urlreverse('ietf.doc.views_charter.submit', kwargs=dict(name=charter_name_for_group(group)))
        login_testing_unauthorized(self, "secretary", url)

        # normal get
        r = self.client.get(url)
        self.assertEqual(r.status_code, 200)
        q = PyQuery(r.content)
        self.assertEqual(len(q('form input[name=txt]')), 1)

        # create charter
        test_file = StringIO("Simple test")
        test_file.name = "unnamed"

        r = self.client.post(url, dict(txt=test_file))
        self.assertEqual(r.status_code, 302)

        charter = Document.objects.get(name="charter-ietf-%s" % group.acronym)
        self.assertEqual(charter.rev, "00-00")
        self.assertTrue("new_revision" in charter.latest_event().type)

        group = Group.objects.get(pk=group.pk)
        self.assertEqual(group.charter, charter)
Example #20
0
 def test_view(self):
     make_test_data()
     group = Group.objects.all()[0]
     url = reverse('groups_view', kwargs={'acronym':group.acronym})
     self.client.login(username="******", password="******")
     response = self.client.get(url)
     self.assertEqual(response.status_code, 200)
Example #21
0
    def test_no_returning_item_for_different_ballot(self):
        make_test_data()

        group = Group.objects.get(acronym="ames")
        charter = group.charter
        url = urlreverse('ietf.doc.views_doc.telechat_date;charter', kwargs=dict(name=charter.name))
        login_testing_unauthorized(self, "secretary", url)
        login = Person.objects.get(user__username="******")

        # Make it so that the charter has been through internal review, and passed its external review
        # ballot on a previous telechat 
        last_week = datetime.date.today()-datetime.timedelta(days=7)
        BallotDocEvent.objects.create(type='created_ballot',by=login,doc=charter, rev=charter.rev,
                                      ballot_type=BallotType.objects.get(doc_type=charter.type,slug='r-extrev'),
                                      time=last_week)
        TelechatDocEvent.objects.create(type='scheduled_for_telechat', doc=charter, rev=charter.rev, by=login, telechat_date=last_week, returning_item=False)
        BallotDocEvent.objects.create(type='created_ballot', by=login, doc=charter, rev=charter.rev,
                                      ballot_type=BallotType.objects.get(doc_type=charter.type, slug='approve'))
        
        # Put the charter onto a future telechat and verify returning item is not set
        telechat_date = TelechatDate.objects.active()[1].date
        r = self.client.post(url, dict(name=group.name, acronym=group.acronym, telechat_date=telechat_date.isoformat()))
        self.assertEqual(r.status_code, 302)
        
        charter = Document.objects.get(name=charter.name)
        telechat_event = charter.latest_event(TelechatDocEvent, "scheduled_for_telechat")
        self.assertEqual(telechat_event.telechat_date, telechat_date)
        self.assertFalse(telechat_event.returning_item)
Example #22
0
    def test_create(self):
        make_test_data()

        url = urlreverse('wg_create')
        login_testing_unauthorized(self, "secretary", url)

        num_wgs = len(Group.objects.filter(type="wg"))

        # normal get
        r = self.client.get(url)
        self.assertEquals(r.status_code, 200)
        q = PyQuery(r.content)
        self.assertEquals(len(q('form input[name=acronym]')), 1)

        # faulty post
        r = self.client.post(url, dict(acronym="foobarbaz"))  # No name
        self.assertEquals(r.status_code, 200)
        q = PyQuery(r.content)
        self.assertTrue(len(q('form ul.errorlist')) > 0)
        self.assertEquals(len(Group.objects.filter(type="wg")), num_wgs)

        # creation
        state = GroupStateName.objects.get(slug="bof")
        r = self.client.post(
            url, dict(acronym="testwg", name="Testing WG", state=state.pk))
        self.assertEquals(r.status_code, 302)
        self.assertEquals(len(Group.objects.filter(type="wg")), num_wgs + 1)
        group = Group.objects.get(acronym="testwg")
        self.assertEquals(group.name, "Testing WG")
        self.assertEquals(group.charter.name, "charter-ietf-testwg")
        self.assertEquals(group.charter.rev, "00-00")
Example #23
0
    def test_conclude(self):
        make_test_data()

        group = Group.objects.get(acronym="mars")

        url = urlreverse('wg_conclude', kwargs=dict(acronym=group.acronym))
        login_testing_unauthorized(self, "secretary", url)

        # normal get
        r = self.client.get(url)
        self.assertEquals(r.status_code, 200)
        q = PyQuery(r.content)
        self.assertEquals(len(q('form textarea[name=instructions]')), 1)

        # faulty post
        r = self.client.post(url, dict(instructions=""))  # No instructions
        self.assertEquals(r.status_code, 200)
        q = PyQuery(r.content)
        self.assertTrue(len(q('form ul.errorlist')) > 0)

        # request conclusion
        mailbox_before = len(outbox)
        r = self.client.post(url, dict(instructions="Test instructions"))
        self.assertEquals(r.status_code, 302)
        self.assertEquals(len(outbox), mailbox_before + 1)
        # the WG remains active until the Secretariat takes action
        group = Group.objects.get(acronym=group.acronym)
        self.assertEquals(group.state_id, "active")
Example #24
0
File: tests.py Project: mcr/ietfdb
    def test_create(self):
        make_test_data()

        url = urlreverse('wg_create')
        login_testing_unauthorized(self, "secretary", url)

        num_wgs = len(Group.objects.filter(type="wg"))

        # normal get
        r = self.client.get(url)
        self.assertEquals(r.status_code, 200)
        q = PyQuery(r.content)
        self.assertEquals(len(q('form input[name=acronym]')), 1)
        
        # faulty post
        r = self.client.post(url, dict(acronym="foobarbaz")) # No name
        self.assertEquals(r.status_code, 200)
        q = PyQuery(r.content)
        self.assertTrue(len(q('form ul.errorlist')) > 0)
        self.assertEquals(len(Group.objects.filter(type="wg")), num_wgs)

        # creation
        state = GroupStateName.objects.get(slug="bof")
        r = self.client.post(url, dict(acronym="testwg", name="Testing WG", state=state.pk))
        self.assertEquals(r.status_code, 302)
        self.assertEquals(len(Group.objects.filter(type="wg")), num_wgs + 1)
        group = Group.objects.get(acronym="testwg")
        self.assertEquals(group.name, "Testing WG")
        self.assertEquals(group.charter.name, "charter-ietf-testwg")
        self.assertEquals(group.charter.rev, "00-00")
Example #25
0
    def test_document_ballot_needed_positions(self):
        make_test_data()

        # draft
        doc = Document.objects.get(name='draft-ietf-mars-test')
        r = self.client.get(urlreverse("ietf.doc.views_doc.document_ballot", kwargs=dict(name=doc.name)))
        self.assertTrue('more YES or NO' in r.content)
        Document.objects.filter(pk=doc.pk).update(intended_std_level='inf')
        r = self.client.get(urlreverse("ietf.doc.views_doc.document_ballot", kwargs=dict(name=doc.name)))
        self.assertFalse('more YES or NO' in r.content)

        # status change
        doc = Document.objects.get(name='status-change-imaginary-mid-review')
        iesgeval_pk = str(State.objects.get(slug='iesgeval',type__slug='statchg').pk)
        self.client.login(username='******', password='******')
        r = self.client.post(urlreverse('ietf.doc.views_status_change.change_state',kwargs=dict(name=doc.name)),dict(new_state=iesgeval_pk))
        self.assertEqual(r.status_code, 302)
        r = self.client.get(r._headers["location"][1])
        self.assertTrue(">IESG Evaluation<" in r.content)

        doc.relateddocument_set.create(target=DocAlias.objects.get(name='rfc9998'),relationship_id='tohist')
        r = self.client.get(urlreverse("ietf.doc.views_doc.document_ballot", kwargs=dict(name=doc.name)))
        self.assertFalse('Needs a YES' in r.content)
        self.assertFalse('more YES or NO' in r.content)

        doc.relateddocument_set.create(target=DocAlias.objects.get(name='rfc9999'),relationship_id='tois')
        r = self.client.get(urlreverse("ietf.doc.views_doc.document_ballot", kwargs=dict(name=doc.name)))
        self.assertTrue('more YES or NO' in r.content)
Example #26
0
    def test_addemail(self):
        make_test_data()
        ipr = IprDisclosureBase.objects.get(title='Statement regarding rights')
        url = urlreverse('ietf.ipr.views.add_email', kwargs={"id": ipr.id})
        self.client.login(username="******", password="******")
        r = self.client.get(url)
        self.assertEqual(r.status_code, 200)

        # post
        r = self.client.post(
            url, {
                "direction":
                'incoming',
                "message":
                """From: [email protected]
To: [email protected]
Subject: RE: The Cisco Statement
Date: Wed, 24 Sep 2014 14:25:02 -0700

Hello,

I would like to revoke this declaration.
"""
            })
        msg = Message.objects.get(frm='*****@*****.**')
        qs = ipr.iprevent_set.filter(type='msgin', message=msg)
        self.assertTrue(qs.count(), 1)
Example #27
0
    def test_edit_wgaction(self):
        from ietf.utils.test_data import make_test_data
        from ietf.person.models import Person
        
        make_test_data()
        
        wga = WGAction.objects.all()[0]
        url = urlreverse('iesg_edit_working_group_action', kwargs=dict(wga_id=wga.pk))
        login_testing_unauthorized(self, "secretary", url)

        # normal get
        r = self.client.get(url)
        self.assertEquals(r.status_code, 200)
        q = PyQuery(r.content)
        self.assertEquals(len(q('form select[name=token_name]')), 1)
        self.assertEquals(len(q('form select[name=telechat_date]')), 1)

        # change
        dates = TelechatDate.objects.active()
        token_name = Person.objects.get(name="Ad No1").plain_name()
        old = wga.pk
        r = self.client.post(url, dict(status_date=dates[0].date.isoformat(),
                                       token_name=token_name,
                                       category="23",
                                       note="Testing.",
                                       telechat_date=dates[3].date.isoformat()))
        self.assertEquals(r.status_code, 302)

        wga = WGAction.objects.get(pk=old)
        self.assertEquals(wga.status_date, dates[0].date)
        self.assertEquals(wga.token_name, token_name)
        self.assertEquals(wga.category, 23)
        self.assertEquals(wga.note, "Testing.")
        self.assertEquals(wga.telechat_date, dates[3].date)
Example #28
0
 def test_main(self):
     "Main Test"
     make_test_data()
     url = reverse('announcement')
     self.client.login(username="******", password="******")
     r = self.client.get(url)
     self.assertEqual(r.status_code, 200)
Example #29
0
 def test_show_rejected(self):
     make_test_data()
     ipr = IprDisclosureBase.objects.get(title='Statement regarding rights')
     ipr.set_state('rejected')
     r = self.client.get(
         urlreverse("ietf.ipr.views.show", kwargs=dict(id=ipr.pk)))
     self.assertEqual(r.status_code, 404)
Example #30
0
File: tests.py Project: mcr/ietfdb
    def test_manage_stream_delegates(self):
        make_test_data()

        url = urlreverse('stream_delegates', kwargs=dict(stream_name="IETF"))
        login_testing_unauthorized(self, "secretary", url)

        # get
        r = self.client.get(url)
        self.assertEquals(r.status_code, 200)
        q = PyQuery(r.content)
        self.assertEquals(len(q('input[type=submit][value*=Add]')), 1)

        delegate = Email.objects.get(address="*****@*****.**")

        # add delegate
        r = self.client.post(url,
                             dict(email=delegate.address))
        self.assertEquals(r.status_code, 200)

        self.assertEquals(Role.objects.filter(group__acronym="ietf", name="delegate", person__email__address=delegate.address).count(), 1)

        # remove delegate again
        r = self.client.post(url,
                             dict(remove_delegate=[delegate.person.pk],
                                  delete="1"))
        self.assertEquals(r.status_code, 200)

        self.assertEquals(Role.objects.filter(group__acronym="ietf", name="delegate", person__email__address=delegate.address).count(), 0)
Example #31
0
    def test_details(self):
        make_test_data()
        liaison = make_liaison_models()

        r = self.client.get(urlreverse("liaison_detail", kwargs={ 'object_id': liaison.pk }))
        self.assertEqual(r.status_code, 200)
        self.assertTrue(liaison.title in r.content)
Example #32
0
    def test_edit_telechat_date(self):
        make_test_data()

        group = Group.objects.get(acronym="mars")
        charter = group.charter

        url = urlreverse('charter_telechat_date', kwargs=dict(name=charter.name))
        login_testing_unauthorized(self, "secretary", url)

        # add to telechat
        self.assertTrue(not charter.latest_event(TelechatDocEvent, "scheduled_for_telechat"))
        telechat_date = TelechatDate.objects.active()[0].date
        r = self.client.post(url, dict(name=group.name, acronym=group.acronym, telechat_date=telechat_date.isoformat()))
        self.assertEquals(r.status_code, 302)

        charter = Document.objects.get(name=charter.name)
        self.assertTrue(charter.latest_event(TelechatDocEvent, "scheduled_for_telechat"))
        self.assertEquals(charter.latest_event(TelechatDocEvent, "scheduled_for_telechat").telechat_date, telechat_date)

        # change telechat
        telechat_date = TelechatDate.objects.active()[1].date
        r = self.client.post(url, dict(name=group.name, acronym=group.acronym, telechat_date=telechat_date.isoformat()))
        self.assertEquals(r.status_code, 302)

        charter = Document.objects.get(name=charter.name)
        self.assertEquals(charter.latest_event(TelechatDocEvent, "scheduled_for_telechat").telechat_date, telechat_date)

        # remove from agenda
        telechat_date = ""
        r = self.client.post(url, dict(name=group.name, acronym=group.acronym, telechat_date=telechat_date))
        self.assertEquals(r.status_code, 302)

        charter = Document.objects.get(name=charter.name)
        self.assertTrue(not charter.latest_event(TelechatDocEvent, "scheduled_for_telechat").telechat_date)
Example #33
0
    def test_feed(self):
        make_test_data()
        ipr = IprDetail.objects.get(title="Statement regarding rights")

        r = self.client.get("/feed/ipr/")
        self.assertEqual(r.status_code, 200)
        self.assertTrue(ipr.title in r.content)
Example #34
0
    def submit_bad_file(self, name, formats):

        make_test_data()

        rev = ""
        group = None

        # break early in case of missing configuration
        self.assertTrue(os.path.exists(settings.IDSUBMIT_IDNITS_BINARY))

        # get
        url = urlreverse('submit_upload_submission')
        r = self.client.get(url)
        self.assertEqual(r.status_code, 200)
        q = PyQuery(r.content)

        # submit
        files = {}
        for format in formats:
            files[format] = self.submission_file(name, rev, group, "bad", "test_submission.bad")

        r = self.client.post(url, files)

        self.assertEqual(r.status_code, 200)
        q = PyQuery(r.content)
        self.assertTrue(len(q("form .has-error")) > 0)
        m = q('div.has-error span.help-block').text()

        return r, q, m
Example #35
0
 def test_ipr_history(self):
     make_test_data()
     ipr = IprDisclosureBase.objects.get(title='Statement regarding rights')
     r = self.client.get(
         urlreverse("ietf.ipr.views.history", kwargs=dict(id=ipr.pk)))
     self.assertEqual(r.status_code, 200)
     self.assertTrue(ipr.title in unicontent(r))
Example #36
0
    def test_create_rg(self):

        make_test_data()

        url = urlreverse('group_create', kwargs=dict(group_type="rg"))
        login_testing_unauthorized(self, "secretary", url)

        irtf = Group.objects.get(acronym='irtf')
        num_rgs = len(Group.objects.filter(type="rg"))

        proposed_state = GroupStateName.objects.get(slug="proposed")

        # normal get
        r = self.client.get(url)
        self.assertEqual(r.status_code, 200)
        q = PyQuery(r.content)
        self.assertEqual(len(q('form input[name=acronym]')), 1)
        self.assertEqual(q('form input[name=parent]').attr('value'),'%s'%irtf.pk)

        r = self.client.post(url, dict(acronym="testrg", name="Testing RG", state=proposed_state.pk, parent=irtf.pk))
        self.assertEqual(r.status_code, 302)
        self.assertEqual(len(Group.objects.filter(type="rg")), num_rgs + 1)
        group = Group.objects.get(acronym="testrg")
        self.assertEqual(group.name, "Testing RG")
        self.assertEqual(group.charter.name, "charter-irtf-testrg")
        self.assertEqual(group.charter.rev, "00-00")
        self.assertEqual(group.parent.acronym,'irtf')
Example #37
0
    def test_create_based_on_existing(self):
        make_test_data()

        url = urlreverse('group_create', kwargs=dict(group_type="wg"))
        login_testing_unauthorized(self, "secretary", url)

        group = Group.objects.get(acronym="mars")

        # try hijacking area - faulty
        r = self.client.post(url, dict(name="Test", acronym=group.parent.acronym))
        self.assertEqual(r.status_code, 200)
        q = PyQuery(r.content)
        self.assertTrue(len(q('form ul.errorlist')) > 0)
        self.assertEqual(len(q('form input[name="confirmed"]')), 0) # can't confirm us out of this

        # try elevating BoF to WG
        group.state_id = "bof"
        group.save()

        r = self.client.post(url, dict(name="Test", acronym=group.acronym))
        self.assertEqual(r.status_code, 200)
        q = PyQuery(r.content)
        self.assertTrue(len(q('form ul.errorlist')) > 0)
        self.assertEqual(len(q('form input[name="confirmed"]')), 1)

        self.assertEqual(Group.objects.get(acronym=group.acronym).state_id, "bof")

        # confirm elevation
        state = GroupStateName.objects.get(slug="proposed")
        r = self.client.post(url, dict(name="Test", acronym=group.acronym, confirmed="1",state=state.pk))
        self.assertEqual(r.status_code, 302)
        self.assertEqual(Group.objects.get(acronym=group.acronym).state_id, "proposed")
        self.assertEqual(Group.objects.get(acronym=group.acronym).name, "Test")
Example #38
0
    def test_conclude(self):
        make_test_data()

        group = Group.objects.get(acronym="mars")

        url = urlreverse('ietf.group.edit.conclude', kwargs=dict(group_type=group.type_id, acronym=group.acronym))
        login_testing_unauthorized(self, "secretary", url)

        # normal get
        r = self.client.get(url)
        self.assertEqual(r.status_code, 200)
        q = PyQuery(r.content)
        self.assertEqual(len(q('form textarea[name=instructions]')), 1)
        
        # faulty post
        r = self.client.post(url, dict(instructions="")) # No instructions
        self.assertEqual(r.status_code, 200)
        q = PyQuery(r.content)
        self.assertTrue(len(q('form ul.errorlist')) > 0)

        # request conclusion
        mailbox_before = len(outbox)
        r = self.client.post(url, dict(instructions="Test instructions"))
        self.assertEqual(r.status_code, 302)
        self.assertEqual(len(outbox), mailbox_before + 1)
        # the WG remains active until the Secretariat takes action
        group = Group.objects.get(acronym=group.acronym)
        self.assertEqual(group.state_id, "active")
Example #39
0
File: tests.py Project: ekr/ietfdb
 def test_valid_submit(self):
     "Valid Submit"
     make_test_data()
     nomcom_test_data()
     empty_outbox()
     url = reverse('ietf.secr.announcement.views.main')
     confirm_url = reverse('ietf.secr.announcement.views.confirm')
     nomcom = Group.objects.get(type='nomcom')
     post_data = {
         'nomcom': nomcom.pk,
         'to': 'Other...',
         'to_custom': '*****@*****.**',
         'frm': 'IETF Secretariat &lt;[email protected]&gt;',
         'subject': 'Test Subject',
         'body': 'This is a test.'
     }
     self.client.login(username="******", password="******")
     response = self.client.post(url, post_data)
     self.assertEqual(response.status_code, 200)
     self.assertTrue('Confirm Announcement' in response.content)
     response = self.client.post(confirm_url, post_data, follow=True)
     self.assertRedirects(response, url)
     self.assertEqual(len(outbox), 1)
     self.assertEqual(outbox[0]['subject'], 'Test Subject')
     self.assertEqual(outbox[0]['to'], '<*****@*****.**>')
     message = Message.objects.last()
     self.assertEqual(message.subject, 'Test Subject')
     self.assertTrue(nomcom in message.related_groups.all())
Example #40
0
    def test_materials(self):
        make_test_data()
        group = Group.objects.create(type_id="team", acronym="testteam", name="Test Team", state_id="active")

        doc = Document.objects.create(
            name="slides-testteam-test-slides",
            rev="00",
            title="Test Slides",
            group=group,
            type_id="slides",
        )
        doc.set_state(State.objects.get(type="slides", slug="active"))
        DocAlias.objects.create(name=doc.name, document=doc)

        url = urlreverse("group_materials", kwargs={ 'acronym': group.acronym })
        r = self.client.get(url)
        self.assertEqual(r.status_code, 200)
        self.assertTrue(doc.title in r.content)
        self.assertTrue(doc.name in r.content)

        # try deleting the document and check it's gone
        doc.set_state(State.objects.get(type="slides", slug="deleted"))

        r = self.client.get(url)
        self.assertEqual(r.status_code, 200)
        self.assertTrue(doc.title not in r.content)
Example #41
0
    def test_send_plain_announcement(self):
        make_test_data()

        msg = Message.objects.create(
            by=Person.objects.get(name="(System)"),
            subject="This is a test",
            to="*****@*****.**",
            frm="*****@*****.**",
            cc="[email protected], [email protected]",
            bcc="*****@*****.**",
            body="Hello World!",
            content_type="",
            )

        q = SendQueue.objects.create(
            by=Person.objects.get(name="(System)"),
            message=msg,
            send_at=datetime.datetime.now() + datetime.timedelta(hours=12)
            )

        mailbox_before = len(outbox)
        
        from ietf.announcements.send_scheduled import send_scheduled_announcement
        send_scheduled_announcement(q)

        self.assertEquals(len(outbox), mailbox_before + 1)
        self.assertTrue("This is a test" in outbox[-1]["Subject"])
        self.assertTrue(SendQueue.objects.get(id=q.id).sent_at)
Example #42
0
    def test_manage_stream_delegates(self):
        make_test_data()

        url = urlreverse('stream_delegates', kwargs=dict(stream_name="IETF"))
        login_testing_unauthorized(self, "secretary", url)

        # get
        r = self.client.get(url)
        self.assertEquals(r.status_code, 200)
        q = PyQuery(r.content)
        self.assertEquals(len(q('input[type=submit][value*=Add]')), 1)

        delegate = Email.objects.get(address="*****@*****.**")

        # add delegate
        r = self.client.post(url, dict(email=delegate.address))
        self.assertEquals(r.status_code, 200)

        self.assertEquals(
            Role.objects.filter(
                group__acronym="ietf",
                name="delegate",
                person__email__address=delegate.address).count(), 1)

        # remove delegate again
        r = self.client.post(
            url, dict(remove_delegate=[delegate.person.pk], delete="1"))
        self.assertEquals(r.status_code, 200)

        self.assertEquals(
            Role.objects.filter(
                group__acronym="ietf",
                name="delegate",
                person__email__address=delegate.address).count(), 0)
Example #43
0
File: tests.py Project: mcr/ietfdb
 def test_approval(self):
     make_test_data()
     liaison = make_liaison_models()
     # has to come from WG to need approval
     liaison.from_group = Group.objects.get(acronym="mars")
     liaison.approved = None
     liaison.save()
     
     url = urlreverse('liaison_approval_detail', kwargs=dict(object_id=liaison.pk))
     # this liaison is for a WG so we need the AD for the area
     login_testing_unauthorized(self, "ad", url)
     
     # normal get
     r = self.client.get(url)
     self.assertEquals(r.status_code, 200)
     q = PyQuery(r.content)
     self.assertEquals(len(q('form input[name=do_approval]')), 1)
     
     # approve
     mailbox_before = len(outbox)
     r = self.client.post(url, dict(do_approval="1"))
     self.assertEquals(r.status_code, 302)
     
     liaison = LiaisonStatement.objects.get(id=liaison.id)
     self.assertTrue(liaison.approved)
     self.assertEquals(len(outbox), mailbox_before + 1)
     self.assertTrue("Liaison Statement" in outbox[-1]["Subject"])
Example #44
0
    def create_slides(self):
        make_test_data()

        group = Group.objects.create(type_id="team",
                                     acronym="testteam",
                                     name="Test Team",
                                     state_id="active")

        doc = Document.objects.create(name="slides-testteam-test-file",
                                      rev="01",
                                      type_id="slides",
                                      group=group)
        doc.set_state(State.objects.get(type="slides", slug="active"))
        doc.set_state(State.objects.get(type="reuse_policy", slug="multiple"))
        DocAlias.objects.create(name=doc.name, document=doc)
        NewRevisionDocEvent.objects.create(
            doc=doc,
            by=Person.objects.get(name="(System)"),
            rev='00',
            type='new_revision',
            desc='New revision available')
        NewRevisionDocEvent.objects.create(
            doc=doc,
            by=Person.objects.get(name="(System)"),
            rev='01',
            type='new_revision',
            desc='New revision available')

        return doc
Example #45
0
    def test_overview(self):
        make_test_data()
        liaison = make_liaison_models()

        r = self.client.get(urlreverse('liaison_list'))
        self.assertEqual(r.status_code, 200)
        self.assertTrue(liaison.title in r.content)
Example #46
0
    def test_approvals(self):
        make_test_data()

        url = urlreverse('submit_approvals')
        self.client.login(username="******", password="******")

        Preapproval.objects.create(name="draft-ietf-mars-foo", by=Person.objects.get(user__username="******"))
        Preapproval.objects.create(name="draft-ietf-mars-baz", by=Person.objects.get(user__username="******"))

        Submission.objects.create(name="draft-ietf-mars-foo",
                                  group=Group.objects.get(acronym="mars"),
                                  submission_date=datetime.date.today(),
                                  rev="00",
                                  state_id="posted")
        Submission.objects.create(name="draft-ietf-mars-bar",
                                  group=Group.objects.get(acronym="mars"),
                                  submission_date=datetime.date.today(),
                                  rev="00",
                                  state_id="grp-appr")

        # get
        r = self.client.get(url)
        self.assertEqual(r.status_code, 200)
        q = PyQuery(r.content)

        self.assertEqual(len(q('.approvals a:contains("draft-ietf-mars-foo")')), 0)
        self.assertEqual(len(q('.approvals a:contains("draft-ietf-mars-bar")')), 1)
        self.assertEqual(len(q('.preapprovals td:contains("draft-ietf-mars-foo")')), 0)
        self.assertEqual(len(q('.preapprovals td:contains("draft-ietf-mars-baz")')), 1)
        self.assertEqual(len(q('.recently-approved a:contains("draft-ietf-mars-foo")')), 1)
Example #47
0
    def test_taken_care_of(self):
        make_test_data()
        liaison = make_liaison_models()
        
        url = urlreverse('liaison_detail', kwargs=dict(object_id=liaison.pk))
        # normal get
        r = self.client.get(url)
        self.assertEqual(r.status_code, 200)
        q = PyQuery(r.content)
        self.assertEqual(len(q('form input[name=do_action_taken]')), 0)
        
        # log in and get
        self.client.login(username="******", password="******")

        r = self.client.get(url)
        self.assertEqual(r.status_code, 200)
        q = PyQuery(r.content)
        self.assertEqual(len(q('form input[name=do_action_taken]')), 1)
        
        # mark action taken
        r = self.client.post(url, dict(do_action_taken="1"))
        self.assertEqual(r.status_code, 200)
        q = PyQuery(r.content)
        self.assertEqual(len(q('form input[name=do_action_taken]')), 0)
        liaison = LiaisonStatement.objects.get(id=liaison.id)
        self.assertTrue(liaison.action_taken)
Example #48
0
    def test_sitemap(self):
        make_test_data()
        liaison = make_liaison_models()

        r = self.client.get('/sitemap-liaison.xml')
        self.assertEqual(r.status_code, 200)
        self.assertTrue(urlreverse("liaison_detail", kwargs={ 'object_id': liaison.pk }) in r.content)
Example #49
0
    def test_request_full_url(self):
        # submit -> request full URL to be sent
        make_test_data()

        name = "draft-ietf-mars-testing-tests"
        rev = "00"

        self.do_submission(name, rev)

        submission = Submission.objects.get(name=name)
        url = urlreverse('submit_submission_status', kwargs=dict(submission_id=submission.pk))

        # check we got request full URL button
        r = self.client.get(url)
        self.assertEqual(r.status_code, 200)
        q = PyQuery(r.content)
        request_button = q('[type=submit]:contains("Request full access")')
        self.assertEqual(len(request_button), 1)

        # request URL to be sent
        mailbox_before = len(outbox)

        action = request_button.parents("form").find('input[type=hidden][name="action"]').val()
        r = self.client.post(url, dict(action=action))
        self.assertEqual(r.status_code, 200)

        self.assertEqual(len(outbox), mailbox_before + 1)
        self.assertTrue("Full URL for managing submission" in outbox[-1]["Subject"])
        self.assertTrue(name in outbox[-1]["Subject"])
Example #50
0
    def test_send_mime_announcement(self):
        make_test_data()

        msg = Message.objects.create(
            by=Person.objects.get(name="(System)"),
            subject="This is a test",
            to="*****@*****.**",
            frm="*****@*****.**",
            cc="[email protected], [email protected]",
            bcc="*****@*****.**",
            body='--NextPart\r\n\r\nA New Internet-Draft is available from the on-line Internet-Drafts directories.\r\n--NextPart\r\nContent-Type: Message/External-body;\r\n\tname="draft-huang-behave-bih-01.txt";\r\n\tsite="ftp.ietf.org";\r\n\taccess-type="anon-ftp";\r\n\tdirectory="internet-drafts"\r\n\r\nContent-Type: text/plain\r\nContent-ID:     <*****@*****.**>\r\n\r\n--NextPart--',
            content_type='Multipart/Mixed; Boundary="NextPart"',
            )

        q = SendQueue.objects.create(
            by=Person.objects.get(name="(System)"),
            message=msg,
            send_at=datetime.datetime.now() + datetime.timedelta(hours=12)
            )
        
        mailbox_before = len(outbox)
        
        from ietf.announcements.send_scheduled import send_scheduled_announcement
        send_scheduled_announcement(q)

        self.assertEquals(len(outbox), mailbox_before + 1)
        self.assertTrue("This is a test" in outbox[-1]["Subject"])
        self.assertTrue("--NextPart" in outbox[-1].as_string())
        self.assertTrue(SendQueue.objects.get(id=q.id).sent_at)
Example #51
0
File: tests.py Project: ekr/ietfdb
 def test_group_ad_emails(self):
     make_test_data()
     wgs = Group.objects.filter(type='wg')
     for wg in wgs:
         emails = get_group_ad_emails(wg)
         self.assertGreater(len(emails), 0)
         for item in emails:
             self.assertIn('@', item)
Example #52
0
File: tests.py Project: ekr/ietfdb
 def test_left_menu_foo(self):
     make_test_data()
     self.client.cookies = SimpleCookie({'full_draft': 'off', 'new_enough' : '14', 'expires_soon' : 14, 'left_menu': 'off', })
     r = self.client.get(urlreverse("ietf.cookies.views.left_menu", kwargs=dict(enabled="foo")))
     self.assertEqual(r.status_code, 200)
     self.assertListEqual([], r.cookies.keys())
     q = PyQuery(r.content)
     self.assertEqual(q('div a.active[href="/accounts/settings/left_menu/off"]').contents(),  ['Off'])
Example #53
0
    def test_document_conflict_review(self):
        make_test_data()

        r = self.client.get(
            urlreverse(
                "doc_view",
                kwargs=dict(name='conflict-review-imaginary-irtf-submission')))
        self.assertEqual(r.status_code, 200)
Example #54
0
File: tests.py Project: ekr/ietfdb
 def test_child_group_role_emails(self):
     make_test_data()
     areas = Group.objects.filter(type='area')
     for area in areas:
         emails = get_child_group_role_emails(area, ['chair', 'secr'])
         self.assertGreater(len(emails), 0)
         for item in emails:
             self.assertIn('@', item)
Example #55
0
 def test_show_removed(self):
     make_test_data()
     ipr = IprDisclosureBase.objects.get(title='Statement regarding rights')
     ipr.set_state('removed')
     r = self.client.get(
         urlreverse("ietf.ipr.views.show", kwargs=dict(id=ipr.pk)))
     self.assertEqual(r.status_code, 200)
     self.assertTrue('This IPR disclosure was removed' in unicontent(r))
Example #56
0
 def test_view(self):
     make_test_data()
     group = Group.objects.all()[0]
     url = reverse('ietf.secr.groups.views.view',
                   kwargs={'acronym': group.acronym})
     self.client.login(username="******", password="******")
     response = self.client.get(url)
     self.assertEqual(response.status_code, 200)
Example #57
0
 def test_view(self):
     "View Test"
     make_test_data()
     person = Person.objects.all()[0]
     url = reverse('ietf.secr.rolodex.views.view', kwargs={'id': person.id})
     self.client.login(username="******", password="******")
     response = self.client.get(url)
     self.assertEqual(response.status_code, 200)