Esempio n. 1
0
    def test_agenda(self):
        r = self.client.get(urlreverse("ietf.iesg.views.agenda"))
        self.assertEqual(r.status_code, 200)

        for k, d in self.telechat_docs.iteritems():
            self.assertTrue(d.name in unicontent(r), "%s not in response" % k)
            self.assertTrue(d.title in unicontent(r), "%s title not in response" % k)
Esempio n. 2
0
 def test_iprs_for_drafts(self):
     draft = make_test_data()
     ipr = IprDisclosureBase.objects.get(title='Statement regarding rights')
     r = self.client.get(urlreverse("ietf.ipr.views.by_draft_txt"))
     self.assertEqual(r.status_code, 200)
     self.assertTrue(draft.name in unicontent(r))
     self.assertTrue(str(ipr.pk) in unicontent(r))
Esempio n. 3
0
    def test_group_charter(self):
        draft = make_test_data()
        group = draft.group

        with open(os.path.join(self.charter_dir, "%s-%s.txt" % (group.charter.canonical_name(), group.charter.rev)), "w") as f:
            f.write("This is a charter.")

        milestone = GroupMilestone.objects.create(
            group=group,
            state_id="active",
            desc="Get Work Done",
            due=datetime.date.today() + datetime.timedelta(days=100))
        milestone.docs.add(draft)

        for url in [group.about_url(),
                    urlreverse('ietf.group.info.group_about',kwargs=dict(acronym=group.acronym)),
                    urlreverse('ietf.group.info.group_about',kwargs=dict(acronym=group.acronym,group_type=group.type_id)),
                   ]:
            r = self.client.get(url)
            self.assertEqual(r.status_code, 200)
            self.assertTrue(group.name in unicontent(r))
            self.assertTrue(group.acronym in unicontent(r))
            self.assertTrue("This is a charter." in unicontent(r))
            self.assertTrue(milestone.desc in unicontent(r))
            self.assertTrue(milestone.docs.all()[0].name in unicontent(r))
Esempio n. 4
0
 def test_submit_update_individual(self):
     draft = make_test_data()
     replaces_count = draft.relateddocument_set.filter(relationship_id='replaces').count()
     name = draft.name
     rev = '%02d'%(int(draft.rev)+1)
     status_url = self.do_submission(name,rev)
     mailbox_before = len(outbox)
     replaced_alias = draft.docalias_set.first()
     r = self.supply_extra_metadata(name, status_url, "Submitter Name", "*****@*****.**", replaces=str(replaced_alias.pk))
     self.assertEqual(r.status_code, 200)
     self.assertTrue('cannot replace itself' in unicontent(r))
     replaced_alias = DocAlias.objects.get(name='draft-ietf-random-thing')
     r = self.supply_extra_metadata(name, status_url, "Submitter Name", "*****@*****.**", replaces=str(replaced_alias.pk))
     self.assertEqual(r.status_code, 200)
     self.assertTrue('cannot replace an RFC' in unicontent(r))
     replaced_alias.document.set_state(State.objects.get(type='draft-iesg',slug='approved'))
     replaced_alias.document.set_state(State.objects.get(type='draft',slug='active'))
     r = self.supply_extra_metadata(name, status_url, "Submitter Name", "*****@*****.**", replaces=str(replaced_alias.pk))
     self.assertEqual(r.status_code, 200)
     self.assertTrue('approved by the IESG and cannot' in unicontent(r))
     r = self.supply_extra_metadata(name, status_url, "Submitter Name", "*****@*****.**", replaces='')
     self.assertEqual(r.status_code, 302)
     status_url = r["Location"]
     r = self.client.get(status_url)
     self.assertEqual(len(outbox), mailbox_before + 1)
     confirm_url = self.extract_confirm_url(outbox[-1])
     mailbox_before = len(outbox)
     r = self.client.post(confirm_url)
     self.assertEqual(r.status_code, 302)
     draft = Document.objects.get(docalias__name=name)
     self.assertEqual(draft.rev, rev)
     self.assertEqual(draft.relateddocument_set.filter(relationship_id='replaces').count(), replaces_count)
Esempio n. 5
0
    def test_feed(self):
        draft = make_test_data()

        url = urlreverse(ietf.community.views.feed, kwargs={ "username": "******" })

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

        # with list
        clist = CommunityList.objects.create(user=User.objects.get(username="******"))
        clist.added_docs.add(draft)
        SearchRule.objects.create(
            community_list=clist,
            rule_type="name_contains",
            state=State.objects.get(type="draft", slug="active"),
            text="test",
        )
        r = self.client.get(url)
        self.assertEqual(r.status_code, 200)
        self.assertTrue(draft.name in unicontent(r))

        # only significant
        r = self.client.get(url + "?significant=1")
        self.assertEqual(r.status_code, 200)
        self.assertTrue('<entry>' not in unicontent(r))
Esempio n. 6
0
    def test_agenda(self):
        r = self.client.get(urlreverse("ietf.iesg.views.agenda"))
        self.assertEqual(r.status_code, 200)

        for k, d in self.telechat_docs.iteritems():
            self.assertTrue(d.name in unicontent(r), "%s not in response" % k)
            self.assertTrue(d.title in unicontent(r), "%s title not in response" % k)
Esempio n. 7
0
    def test_feed(self):
        r = self.client.get("/feed/iesg-agenda/")
        self.assertEqual(r.status_code, 200)

        for d in self.telechat_docs.values():
            self.assertTrue(d.name in unicontent(r))
            self.assertTrue(d.title in unicontent(r))
Esempio n. 8
0
    def testAliases(self):
        url = urlreverse('old_group_email_aliases', kwargs=dict(acronym="mars"))
        r = self.client.get(url)
        self.assertEqual(r.status_code, 302)

        for testdict in [dict(acronym="mars"),dict(acronym="mars",group_type="wg")]:
            url = urlreverse('old_group_email_aliases', kwargs=testdict)
            r = self.client.get(url,follow=True)
            self.assertTrue(all([x in unicontent(r) for x in ['mars-ads@','mars-chairs@']]))
            self.assertFalse(any([x in unicontent(r) for x in ['ames-ads@','ames-chairs@']]))

        url = urlreverse('ietf.group.info.email_aliases', kwargs=dict())
        login_testing_unauthorized(self, "plain", url)
        r = self.client.get(url)
        self.assertTrue(r.status_code,200)
        self.assertTrue(all([x in unicontent(r) for x in ['mars-ads@','mars-chairs@','ames-ads@','ames-chairs@']]))

        url = urlreverse('ietf.group.info.email_aliases', kwargs=dict(group_type="wg"))
        r = self.client.get(url)
        self.assertEqual(r.status_code,200)
        self.assertTrue('mars-ads@' in unicontent(r))

        url = urlreverse('ietf.group.info.email_aliases', kwargs=dict(group_type="rg"))
        r = self.client.get(url)
        self.assertEqual(r.status_code,200)
        self.assertFalse('mars-ads@' in unicontent(r))
Esempio n. 9
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))
Esempio n. 10
0
    def test_not_meeting(self):

        make_test_data()
        group = Group.objects.get(acronym='mars')
        url = reverse('sessions_no_session',kwargs={'acronym':group.acronym}) 
        self.client.login(username="******", password="******")

        empty_outbox()

        r = self.client.get(url,follow=True)
        # If the view invoked by that get throws an exception (such as an integrity error),
        # the traceback from this test will talk about a TransactionManagementError and
        # yell about executing queries before the end of an 'atomic' block

        # This is a sign of a problem - a get shouldn't have a side-effect like this one does
        self.assertEqual(r.status_code, 200)
        self.assertTrue('A message was sent to notify not having a session' in unicontent(r))

        r = self.client.get(url,follow=True)
        self.assertEqual(r.status_code, 200)
        self.assertTrue('is already marked as not meeting' in unicontent(r))

        self.assertEqual(len(outbox),1)
        self.assertTrue('Not having a session' in outbox[0]['Subject'])
        self.assertTrue('session-request@' in outbox[0]['To'])
Esempio n. 11
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)

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

        url =  urlreverse("group_materials", kwargs={ 'acronym': group.acronym })

        # 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 unicontent(r))
Esempio n. 12
0
    def test_feed(self):
        r = self.client.get("/feed/iesg-agenda/")
        self.assertEqual(r.status_code, 200)

        for d in self.telechat_docs.values():
            self.assertTrue(d.name in unicontent(r))
            self.assertTrue(d.title in unicontent(r))
Esempio n. 13
0
 def testExpansions(self):
     url = urlreverse('ietf.group.info.email', kwargs=dict(acronym="mars"))
     r = self.client.get(url)
     self.assertEqual(r.status_code,200)
     self.assertTrue('Email aliases' in unicontent(r))
     self.assertTrue('*****@*****.**' in unicontent(r))
     self.assertTrue('group_personnel_change' in unicontent(r))
Esempio n. 14
0
    def test_feed(self):
        meeting = make_meeting_test_data()
        session = Session.objects.filter(meeting=meeting, group__acronym="mars").first()

        r = self.client.get("/feed/wg-proceedings/")
        self.assertEqual(r.status_code, 200)
        self.assertTrue("agenda" in unicontent(r))
        self.assertTrue(session.group.acronym in unicontent(r))
Esempio n. 15
0
    def test_subsequent_submission(self):
        doc = Document.objects.get(name='status-change-imaginary-mid-review')
        url = urlreverse('status_change_submit',kwargs=dict(name=doc.name))
        login_testing_unauthorized(self, "ad", url)

        # A little additional setup 
        # doc.rev is u'00' per the test setup - double-checking that here - if it fails, the breakage is in setUp
        self.assertEqual(doc.rev,u'00')
        path = os.path.join(settings.STATUS_CHANGE_PATH, '%s-%s.txt' % (doc.canonical_name(), doc.rev))
        with open(path,'w') as f:
            f.write('This is the old proposal.')
            f.close()
        # Put the old proposal into IESG review (exercises ballot tab when looking at an older revision below)
        state_change_url = urlreverse('status_change_change_state',kwargs=dict(name=doc.name))
        iesgeval_pk = str(State.objects.get(slug='iesgeval',type__slug='statchg').pk)
        r = self.client.post(state_change_url,dict(new_state=iesgeval_pk))
        self.assertEqual(r.status_code, 302)

        # normal get
        r = self.client.get(url)
        self.assertEqual(r.status_code,200)
        q = PyQuery(r.content)
        self.assertTrue(q('textarea')[0].text.strip().startswith("This is the old proposal."))

        # faulty posts trying to use file upload
        # Copied from wgtracker tests - is this really testing the server code, or is it testing
        #  how client.post populates Content-Type?
        test_file = StringIO("\x10\x11\x12") # post binary file
        test_file.name = "unnamed"
        r = self.client.post(url, dict(txt=test_file,submit_response="1"))
        self.assertEqual(r.status_code, 200)
        self.assertTrue("does not appear to be a text file" in unicontent(r))

        # sane post uploading a file
        test_file = StringIO("This is a new proposal.")
        test_file.name = "unnamed"
        r = self.client.post(url,dict(txt=test_file,submit_response="1"))
        self.assertEqual(r.status_code, 302)
        doc = Document.objects.get(name='status-change-imaginary-mid-review')
        self.assertEqual(doc.rev,u'01')
        path = os.path.join(settings.STATUS_CHANGE_PATH, '%s-%s.txt' % (doc.canonical_name(), doc.rev))
        with open(path) as f:
            self.assertEqual(f.read(),"This is a new proposal.")
            f.close()
        self.assertTrue( "mid-review-01" in doc.latest_event(NewRevisionDocEvent).desc)

        # verify reset text button works
        r = self.client.post(url,dict(reset_text="1"))
        self.assertEqual(r.status_code, 200)
        q = PyQuery(r.content)
        self.assertTrue(q('textarea')[0].text.strip().startswith("Provide a description"))

        # make sure we can see the old revision
        url = urlreverse('doc_view',kwargs=dict(name=doc.name,rev='00'))
        r = self.client.get(url)
        self.assertEqual(r.status_code,200)
        self.assertTrue("This is the old proposal." in unicontent(r))
Esempio n. 16
0
    def test_agenda_scribe_template(self):
        r = self.client.get(urlreverse("ietf.iesg.views.agenda_scribe_template"))
        self.assertEqual(r.status_code, 200)

        for k, d in self.telechat_docs.iteritems():
            if d.type_id == "charter":
                continue # scribe template doesn't contain chartering info

            self.assertTrue(d.name in unicontent(r), "%s not in response" % k)
            self.assertTrue(d.title in unicontent(r), "%s title not in response" % k)
Esempio n. 17
0
    def test_indexes(self):
        draft = make_test_data()

        r = self.client.get(urlreverse("index_all_drafts"))
        self.assertEqual(r.status_code, 200)
        self.assertTrue(draft.name in unicontent(r))

        r = self.client.get(urlreverse("index_active_drafts"))
        self.assertEqual(r.status_code, 200)
        self.assertTrue(draft.title in unicontent(r))
Esempio n. 18
0
    def test_agenda_scribe_template(self):
        r = self.client.get(urlreverse("ietf.iesg.views.agenda_scribe_template"))
        self.assertEqual(r.status_code, 200)

        for k, d in self.telechat_docs.iteritems():
            if d.type_id == "charter":
                continue # scribe template doesn't contain chartering info

            self.assertTrue(d.name in unicontent(r), "%s not in response" % k)
            self.assertTrue(d.title in unicontent(r), "%s title not in response" % k)
Esempio n. 19
0
File: tests.py Progetto: ekr/ietfdb
    def test_show_recipients(self):

        url = urlreverse('ietf.mailtrigger.views.show_recipients')
        r = self.client.get(url)
        self.assertEqual(r.status_code, 200)
        self.assertTrue('doc_group_mail_list' in unicontent(r))
   
        url = urlreverse('ietf.mailtrigger.views.show_recipients',kwargs=dict(recipient_slug='doc_group_mail_list'))
        r = self.client.get(url)
        self.assertEqual(r.status_code, 200)
        self.assertTrue('doc_group_mail_list' in unicontent(r))
Esempio n. 20
0
 def test_iprs_for_drafts_recursive(self):
     draft = make_test_data()
     replaced = draft.all_related_that_doc(['replaces'])
     ipr = IprDisclosureBase.objects.get(title='Statement regarding rights')
     r = self.client.get(
         urlreverse("ietf.ipr.views.by_draft_recursive_txt"))
     self.assertEqual(r.status_code, 200)
     self.assertTrue(draft.name in unicontent(r))
     for alias in replaced:
         self.assertTrue(alias.name in unicontent(r))
     self.assertTrue(str(ipr.pk) in unicontent(r))
Esempio n. 21
0
    def test_show_recipients(self):

        url = urlreverse('ietf.mailtrigger.views.show_recipients')
        r = self.client.get(url)
        self.assertEqual(r.status_code, 200)
        self.assertTrue('doc_group_mail_list' in unicontent(r))
   
        url = urlreverse('ietf.mailtrigger.views.show_recipients',kwargs=dict(recipient_slug='doc_group_mail_list'))
        r = self.client.get(url)
        self.assertEqual(r.status_code, 200)
        self.assertTrue('doc_group_mail_list' in unicontent(r))
Esempio n. 22
0
File: tests.py Progetto: ekr/ietfdb
    def test_show_triggers(self):

        url = urlreverse('ietf.mailtrigger.views.show_triggers')
        r = self.client.get(url)
        self.assertEqual(r.status_code, 200)
        self.assertTrue('ballot_saved' in unicontent(r))
   
        url = urlreverse('ietf.mailtrigger.views.show_triggers',kwargs=dict(mailtrigger_slug='ballot_saved'))
        r = self.client.get(url)
        self.assertEqual(r.status_code, 200)
        self.assertTrue('ballot_saved' in unicontent(r))
Esempio n. 23
0
    def test_show_triggers(self):

        url = urlreverse('ietf.mailtrigger.views.show_triggers')
        r = self.client.get(url)
        self.assertEqual(r.status_code, 200)
        self.assertTrue('ballot_saved' in unicontent(r))
   
        url = urlreverse('ietf.mailtrigger.views.show_triggers',kwargs=dict(mailtrigger_slug='ballot_saved'))
        r = self.client.get(url)
        self.assertEqual(r.status_code, 200)
        self.assertTrue('ballot_saved' in unicontent(r))
Esempio n. 24
0
    def test_agenda_txt(self):
        r = self.client.get(urlreverse("ietf.iesg.views.agenda_txt"))
        self.assertEqual(r.status_code, 200)

        for k, d in self.telechat_docs.iteritems():
            if d.type_id == "charter":
                self.assertTrue(d.group.name in unicontent(r), "%s not in response" % k)
                self.assertTrue(d.group.acronym in unicontent(r), "%s acronym not in response" % k)
            else:
                self.assertTrue(d.name in unicontent(r), "%s not in response" % k)
                self.assertTrue(d.title in unicontent(r), "%s title not in response" % k)
Esempio n. 25
0
    def testAliases(self):
        url = urlreverse('doc_specific_email_aliases', kwargs=dict(name="draft-ietf-mars-test"))
        r = self.client.get(url)
        self.assertEqual(r.status_code, 302)

        url = urlreverse('ietf.doc.views_doc.email_aliases', kwargs=dict())
        login_testing_unauthorized(self, "plain", url)
        r = self.client.get(url)
        self.assertEqual(r.status_code, 200)
        self.assertTrue(all([x in unicontent(r) for x in ['mars-test@','mars-test.authors@','mars-test.chairs@']]))
        self.assertTrue(all([x in unicontent(r) for x in ['ames-test@','ames-test.authors@','ames-test.chairs@']]))
Esempio n. 26
0
    def test_agenda_txt(self):
        r = self.client.get(urlreverse("ietf.iesg.views.agenda_txt"))
        self.assertEqual(r.status_code, 200)

        for k, d in self.telechat_docs.iteritems():
            if d.type_id == "charter":
                self.assertTrue(d.group.name in unicontent(r), "%s not in response" % k)
                self.assertTrue(d.group.acronym in unicontent(r), "%s acronym not in response" % k)
            else:
                self.assertTrue(d.name in unicontent(r), "%s not in response" % k)
                self.assertTrue(d.title in unicontent(r), "%s title not in response" % k)
Esempio n. 27
0
    def test_drafts_pages(self):
        draft = make_test_data()

        r = self.client.get(urlreverse("docs_for_ad", kwargs=dict(name=draft.ad.full_name_as_key())))
        self.assertEqual(r.status_code, 200)
        self.assertTrue(draft.title in unicontent(r))

        draft.set_state(State.objects.get(type="draft-iesg", slug="lc"))
        r = self.client.get(urlreverse("drafts_in_last_call"))
        self.assertEqual(r.status_code, 200)
        self.assertTrue(draft.title in unicontent(r))
Esempio n. 28
0
    def test_document_nonietf_pubreq_button(self):
        doc = make_test_data()

        self.client.login(username='******', password='******')
        r = self.client.get(urlreverse("doc_view", kwargs=dict(name=doc.name)))
        self.assertEqual(r.status_code, 200)
        self.assertTrue("Request publication" not in unicontent(r))

        Document.objects.filter(pk=doc.pk).update(stream='iab')
        r = self.client.get(urlreverse("doc_view", kwargs=dict(name=doc.name)))
        self.assertEqual(r.status_code, 200)
        self.assertTrue("Request publication" in unicontent(r))
Esempio n. 29
0
File: tests.py Progetto: ekr/ietfdb
 def test_group_with_mailarch(self):
     group = GroupFactory()
     group.list_archive = 'https://mailarchive.ietf.org/arch/browse/%s/' % group.acronym
     group.save()
     url = urlreverse("ietf.group.views.derived_archives",
                      kwargs=dict(acronym=group.acronym))
     r = self.client.get(url)
     self.assertEqual(r.status_code, 200)
     q = PyQuery(r.content)
     self.assertEqual(url, q('.nav-tabs .active a')[0].attrib['href'])
     self.assertTrue(group.list_archive in unicontent(r))
     self.assertTrue('web/%s/current' % group.acronym in unicontent(r))
Esempio n. 30
0
    def test_agenda_package(self):
        url = urlreverse("ietf.iesg.views.agenda_package")
        login_testing_unauthorized(self, "secretary", url)
        r = self.client.get(url)
        self.assertEqual(r.status_code, 200)

        for k, d in self.telechat_docs.iteritems():
            if d.type_id == "charter":
                self.assertTrue(d.group.name in unicontent(r), "%s not in response" % k)
                self.assertTrue(d.group.acronym in unicontent(r), "%s acronym not in response" % k)
            else:
                self.assertTrue(d.name in unicontent(r), "%s not in response" % k)
                self.assertTrue(d.title in unicontent(r), "%s title not in response" % k)
Esempio n. 31
0
 def test_references(self):
     make_test_data()
     doc1 = Document.objects.get(name='draft-ietf-mars-test')
     doc2 = DocAlias.objects.get(name='draft-imaginary-independent-submission')
     RelatedDocument.objects.get_or_create(source=doc1,target=doc2,relationship=DocRelationshipName.objects.get(slug='refnorm'))
     url = urlreverse('doc_references', kwargs=dict(name=doc1.name))
     r = self.client.get(url)
     self.assertEquals(r.status_code, 200)
     self.assertTrue(doc2.name in unicontent(r))
     url = urlreverse('doc_referenced_by', kwargs=dict(name=doc2.name))
     r = self.client.get(url)
     self.assertEquals(r.status_code, 200)
     self.assertTrue(doc1.name in unicontent(r))
Esempio n. 32
0
    def test_agenda_package(self):
        url = urlreverse("ietf.iesg.views.agenda_package")
        login_testing_unauthorized(self, "secretary", url)
        r = self.client.get(url)
        self.assertEqual(r.status_code, 200)

        for k, d in self.telechat_docs.iteritems():
            if d.type_id == "charter":
                self.assertTrue(d.group.name in unicontent(r), "%s not in response" % k)
                self.assertTrue(d.group.acronym in unicontent(r), "%s acronym not in response" % k)
            else:
                self.assertTrue(d.name in unicontent(r), "%s not in response" % k)
                self.assertTrue(d.title in unicontent(r), "%s title not in response" % k)
Esempio n. 33
0
    def test_discrepancies(self):
        make_test_data()

        # draft approved but no RFC Editor state
        doc = Document.objects.create(name="draft-ietf-test1", type_id="draft")
        doc.set_state(
            State.objects.get(used=True, type="draft-iesg", slug="ann"))

        r = self.client.get(urlreverse("ietf.sync.views.discrepancies"))
        self.assertTrue(doc.name in unicontent(r))

        # draft with IANA state "In Progress" but RFC Editor state not IANA
        doc = Document.objects.create(name="draft-ietf-test2", type_id="draft")
        doc.set_state(
            State.objects.get(used=True, type="draft-iesg", slug="rfcqueue"))
        doc.set_state(
            State.objects.get(used=True,
                              type="draft-iana-action",
                              slug="inprog"))
        doc.set_state(
            State.objects.get(used=True, type="draft-rfceditor", slug="auth"))

        r = self.client.get(urlreverse("ietf.sync.views.discrepancies"))
        self.assertTrue(doc.name in unicontent(r))

        # draft with IANA state "Waiting on RFC Editor" or "RFC-Ed-Ack"
        # but RFC Editor state is IANA
        doc = Document.objects.create(name="draft-ietf-test3", type_id="draft")
        doc.set_state(
            State.objects.get(used=True, type="draft-iesg", slug="rfcqueue"))
        doc.set_state(
            State.objects.get(used=True,
                              type="draft-iana-action",
                              slug="waitrfc"))
        doc.set_state(
            State.objects.get(used=True, type="draft-rfceditor", slug="iana"))

        r = self.client.get(urlreverse("ietf.sync.views.discrepancies"))
        self.assertTrue(doc.name in unicontent(r))

        # draft with state other than "RFC Ed Queue" or "RFC Published"
        # that are in RFC Editor or IANA queues
        doc = Document.objects.create(name="draft-ietf-test4", type_id="draft")
        doc.set_state(
            State.objects.get(used=True, type="draft-iesg", slug="ann"))
        doc.set_state(
            State.objects.get(used=True, type="draft-rfceditor", slug="auth"))

        r = self.client.get(urlreverse("ietf.sync.views.discrepancies"))
        self.assertTrue(doc.name in unicontent(r))
Esempio n. 34
0
File: tests.py Progetto: ekr/ietfdb
    def register_and_verify(self, email):
        url = urlreverse(ietf.ietfauth.views.create_account)

        # register email
        empty_outbox()
        r = self.client.post(url, { 'email': email })
        self.assertEqual(r.status_code, 200)
        self.assertIn("Account request received", unicontent(r))
        self.assertEqual(len(outbox), 1)

        # go to confirm page
        confirm_url = self.extract_confirm_url(outbox[-1])
        r = self.client.get(confirm_url)
        self.assertEqual(r.status_code, 200)

        # password mismatch
        r = self.client.post(confirm_url, { 'password': '******', 'password_confirmation': 'nosecret' })
        self.assertEqual(r.status_code, 200)
        self.assertEqual(User.objects.filter(username=email).count(), 0)

        # confirm
        r = self.client.post(confirm_url, { 'name': 'User Name', 'ascii': 'User Name', 'password': '******', 'password_confirmation': 'secret' })
        self.assertEqual(r.status_code, 200)
        self.assertEqual(User.objects.filter(username=email).count(), 1)
        self.assertEqual(Person.objects.filter(user__username=email).count(), 1)
        self.assertEqual(Email.objects.filter(person__user__username=email).count(), 1)

        self.assertTrue(self.username_in_htpasswd_file(email))
Esempio n. 35
0
    def test_edit_ballot_writeup(self):
        draft = make_test_data()
        url = urlreverse('doc_ballot_writeupnotes', kwargs=dict(name=draft.name))
        login_testing_unauthorized(self, "secretary", url)

        # add a IANA review note
        draft.set_state(State.objects.get(used=True, type="draft-iana-review", slug="not-ok"))
        DocEvent.objects.create(type="iana_review",
                                doc=draft,
                                by=Person.objects.get(user__username="******"),
                                desc="IANA does not approve of this document, it does not make sense.",
                                )

        # normal get
        r = self.client.get(url)
        self.assertEqual(r.status_code, 200)
        q = PyQuery(r.content)
        self.assertEqual(len(q('textarea[name=ballot_writeup]')), 1)
        self.assertTrue(q('[type=submit]:contains("Save")'))
        self.assertTrue("IANA does not" in unicontent(r))

        # save
        r = self.client.post(url, dict(
                ballot_writeup="This is a simple test.",
                save_ballot_writeup="1"))
        self.assertEqual(r.status_code, 200)
        draft = Document.objects.get(name=draft.name)
        self.assertTrue("This is a simple test" in draft.latest_event(WriteupDocEvent, type="changed_ballot_writeup_text").text)
Esempio n. 36
0
    def test_materials(self):
        meeting = make_meeting_test_data()
        session = Session.objects.filter(meeting=meeting, group__acronym="mars").first()

        self.write_materials_files(meeting, session)
        
        # session agenda
        r = self.client.get(urlreverse("ietf.meeting.views.session_agenda",
                                       kwargs=dict(num=meeting.number, session=session.group.acronym)))
        self.assertEqual(r.status_code, 200)
        self.assertTrue("1. WG status" in unicontent(r))

        # early materials page
        r = self.client.get(urlreverse("ietf.meeting.views.current_materials"))
        self.assertEqual(r.status_code, 302)
        self.assertTrue(meeting.number in r["Location"])

        r = self.client.get(urlreverse("ietf.meeting.views.materials", kwargs=dict(meeting_num=meeting.number)))
        self.assertEqual(r.status_code, 200)
        q = PyQuery(r.content)
        row = q('#content td div:contains("%s")' % str(session.group.acronym)).closest("tr")
        self.assertTrue(row.find('a:contains("Agenda")'))
        self.assertTrue(row.find('a:contains("Minutes")'))
        self.assertTrue(row.find('a:contains("Slideshow")'))
        self.assertFalse(row.find("a:contains(\"Bad Slideshow\")"))
Esempio n. 37
0
    def test_edit_agenda(self):
        meeting = make_meeting_test_data()

        self.client.login(username="******", password="******")
        r = self.client.get(urlreverse("ietf.meeting.views.edit_agenda", kwargs=dict(num=meeting.number)))
        self.assertEqual(r.status_code, 200)
        self.assertTrue("load_assignments" in unicontent(r))
Esempio n. 38
0
    def test_edit_timeslots(self):
        meeting = make_meeting_test_data()

        self.client.login(username="******", password="******")
        r = self.client.get(urlreverse("ietf.meeting.views.edit_timeslots", kwargs=dict(num=meeting.number)))
        self.assertEqual(r.status_code, 200)
        self.assertTrue(meeting.room_set.all().first().name in unicontent(r))
Esempio n. 39
0
 def test_notify_page(self):
     # check that we can get the notify page
     url = urlreverse("ietf.sync.views.notify", kwargs=dict(org="iana", notification="changes"))
     login_testing_unauthorized(self, "secretary", url)
     r = self.client.get(url)
     self.assertEqual(r.status_code, 200)
     self.assertTrue("new changes at" in unicontent(r))
Esempio n. 40
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))
Esempio n. 41
0
    def test_update(self):
        draft = make_test_data()
        original_ipr = IprDisclosureBase.objects.get(
            title='Statement regarding rights')
        url = urlreverse("ietf.ipr.views.new", kwargs={"type": "specific"})

        # successful post
        empty_outbox()
        r = self.client.post(
            url, {
                "updates":
                str(original_ipr.pk),
                "holder_legal_name":
                "Test Legal",
                "holder_contact_name":
                "Test Holder",
                "holder_contact_email":
                "*****@*****.**",
                "holder_contact_info":
                "555-555-0100",
                "ietfer_name":
                "Test Participant",
                "ietfer_contact_info":
                "555-555-0101",
                "iprdocrel_set-TOTAL_FORMS":
                2,
                "iprdocrel_set-INITIAL_FORMS":
                0,
                "iprdocrel_set-0-document":
                "%s" % draft.docalias_set.first().pk,
                "iprdocrel_set-0-revisions":
                '00',
                "iprdocrel_set-1-document":
                DocAlias.objects.filter(name__startswith="rfc").first().pk,
                "patent_info":
                "none",
                "has_patent_pending":
                False,
                "licensing":
                "royalty-free",
                "submitter_name":
                "Test Holder",
                "submitter_email":
                "*****@*****.**",
            })
        self.assertEqual(r.status_code, 200)
        self.assertTrue(
            "Your IPR disclosure has been submitted" in unicontent(r))

        iprs = IprDisclosureBase.objects.filter(title__icontains=draft.name)
        self.assertEqual(len(iprs), 1)
        ipr = iprs[0]
        self.assertEqual(ipr.holder_legal_name, "Test Legal")
        self.assertEqual(ipr.state.slug, 'pending')

        self.assertTrue(ipr.relatedipr_source_set.filter(target=original_ipr))
        self.assertEqual(len(outbox), 1)
        self.assertTrue('New IPR Submission' in outbox[0]['Subject'])
        self.assertTrue('ietf-ipr@' in outbox[0]['To'])
Esempio n. 42
0
    def test_agenda_by_type(self):
        meeting = make_meeting_test_data()

        url = urlreverse("ietf.meeting.views.agenda_by_type",kwargs=dict(num=meeting.number))
        login_testing_unauthorized(self,"secretary",url)
        r = self.client.get(url)
        self.assertTrue(all([x in unicontent(r) for x in ['mars','IESG Breakfast','Test Room','Breakfast Room']]))

        url = urlreverse("ietf.meeting.views.agenda_by_type",kwargs=dict(num=meeting.number,type='session'))
        r = self.client.get(url)
        self.assertTrue(all([x in unicontent(r) for x in ['mars','Test Room']]))
        self.assertFalse(any([x in unicontent(r) for x in ['IESG Breakfast','Breakfast Room']]))

        url = urlreverse("ietf.meeting.views.agenda_by_type",kwargs=dict(num=meeting.number,type='lead'))
        r = self.client.get(url)
        self.assertFalse(any([x in unicontent(r) for x in ['mars','Test Room']]))
        self.assertTrue(all([x in unicontent(r) for x in ['IESG Breakfast','Breakfast Room']]))
Esempio n. 43
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))
Esempio n. 44
0
 def test_notify_page(self):
     # check that we can get the notify page
     url = urlreverse("ietf.sync.views.notify",
                      kwargs=dict(org="iana", notification="changes"))
     login_testing_unauthorized(self, "secretary", url)
     r = self.client.get(url)
     self.assertEqual(r.status_code, 200)
     self.assertTrue("new changes at" in unicontent(r))
Esempio n. 45
0
    def test_stream_documents(self):
        draft = make_test_data()
        draft.stream_id = "iab"
        draft.save()

        r = self.client.get(urlreverse("ietf.group.views_stream.stream_documents", kwargs=dict(acronym="iab")))
        self.assertEqual(r.status_code, 200)
        self.assertTrue(draft.name in unicontent(r))
Esempio n. 46
0
    def test_feed(self):
        draft = make_test_data()
        draft.set_state(State.objects.get(type="draft-iesg", slug="iesg-eva"))

        pos = BallotPositionDocEvent()
        pos.ballot = draft.latest_event(BallotDocEvent, type="created_ballot")
        pos.pos_id = "discuss"
        pos.type = "changed_ballot_position"
        pos.doc = draft
        pos.ad = pos.by = Person.objects.get(user__username="******")
        pos.save()

        r = self.client.get(urlreverse("ietf.iesg.views.discusses"))
        self.assertEqual(r.status_code, 200)

        self.assertTrue(draft.name in unicontent(r))
        self.assertTrue(pos.ad.plain_name() in unicontent(r))
Esempio n. 47
0
    def test_milestone_sets(self):
        m1, m2, group = self.create_test_milestones()

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

        r = self.client.get(url)
        self.assertEqual(r.status_code, 200)
        self.assertTrue(m1.desc in unicontent(r))
        self.assertTrue(m2.desc not in unicontent(r))

        url = urlreverse('group_edit_charter_milestones', kwargs=dict(group_type=group.type_id, acronym=group.acronym))

        r = self.client.get(url)
        self.assertEqual(r.status_code, 200)
        self.assertTrue(m1.desc not in unicontent(r))
        self.assertTrue(m2.desc in unicontent(r))
Esempio n. 48
0
    def test_known_country_list(self):
        make_test_data()

        # check redirect
        url = urlreverse(ietf.stats.views.known_countries_list)

        r = self.client.get(url)
        self.assertEqual(r.status_code, 200)
        self.assertTrue("United States" in unicontent(r))
Esempio n. 49
0
    def test_feed(self):
        draft = make_test_data()
        draft.set_state(State.objects.get(type="draft-iesg", slug="iesg-eva"))

        pos = BallotPositionDocEvent()
        pos.ballot = draft.latest_event(BallotDocEvent, type="created_ballot")
        pos.pos_id = "discuss"
        pos.type = "changed_ballot_position"
        pos.doc = draft
        pos.rev = draft.rev
        pos.ad = pos.by = Person.objects.get(user__username="******")
        pos.save()

        r = self.client.get(urlreverse("ietf.iesg.views.discusses"))
        self.assertEqual(r.status_code, 200)

        self.assertTrue(draft.name in unicontent(r))
        self.assertTrue(pos.ad.plain_name() in unicontent(r))
Esempio n. 50
0
    def test_reviewer_overview(self):
        doc = make_test_data()
        review_req1 = make_review_data(doc)
        review_req1.state = ReviewRequestStateName.objects.get(slug="completed")
        review_req1.save()

        reviewer = review_req1.reviewer.person

        ReviewRequest.objects.create(
            doc=review_req1.doc,
            team=review_req1.team,
            type_id="early",
            deadline=datetime.date.today() + datetime.timedelta(days=30),
            state_id="accepted",
            reviewer=review_req1.reviewer,
            requested_by=Person.objects.get(user__username="******"),
        )

        UnavailablePeriod.objects.create(
            team=review_req1.team,
            person=reviewer,
            start_date=datetime.date.today() - datetime.timedelta(days=10),
            availability="unavailable",
        )

        settings = ReviewerSettings.objects.get(person=reviewer,team=review_req1.team)
        settings.skip_next = 1
        settings.save()

        group = review_req1.team

        # get
        for url in [urlreverse(ietf.group.views.reviewer_overview, kwargs={ 'acronym': group.acronym }),
                    urlreverse(ietf.group.views.reviewer_overview, kwargs={ 'acronym': group.acronym, 'group_type': group.type_id })]:
            r = self.client.get(url)
            self.assertEqual(r.status_code, 200)
            self.assertTrue(unicode(reviewer) in unicontent(r))
            self.assertTrue(review_req1.doc.name in unicontent(r))

        self.client.login(username="******", password="******")
        r = self.client.get(url)
        self.assertEqual(r.status_code, 200)
Esempio n. 51
0
File: tests.py Progetto: ekr/ietfdb
    def test_message_view(self):
        make_test_data()

        nomcom = Group.objects.create(name="nomcom%s" % datetime.date.today().year, type_id="nomcom")
        msg = Message.objects.create(
            by=Person.objects.get(name="(System)"),
            subject="This is a test",
            to="*****@*****.**",
            frm="*****@*****.**",
            body="Hello World!",
            content_type="",
            )
        msg.related_groups.add(nomcom)

        r = self.client.get(urlreverse("ietf.message.views.message", kwargs=dict(message_id=msg.id)))
        self.assertEqual(r.status_code, 200)
        self.assertTrue(msg.subject in unicontent(r))
        self.assertTrue(msg.to in unicontent(r))
        self.assertTrue(msg.frm in unicontent(r))
        self.assertTrue("Hello World!" in unicontent(r))
Esempio n. 52
0
File: tests.py Progetto: ekr/ietfdb
 def test_group_without_mailarch(self):
     group = GroupFactory()
     group.list_archive = 'https://alienarchive.example.com'
     group.save()
     url = urlreverse("ietf.group.views.derived_archives",
                      kwargs=dict(acronym=group.acronym))
     r = self.client.get(url)
     self.assertEqual(r.status_code, 200)
     q = PyQuery(r.content)
     self.assertFalse(q('.nav-tabs .active'))
     self.assertTrue(group.list_archive in unicontent(r))
Esempio n. 53
0
    def test_new_thirdparty(self):
        """Add a new third-party disclosure.  Note: submitter does not need to be logged in.
        """
        draft = make_test_data()
        url = urlreverse("ietf.ipr.views.new", kwargs={"type": "third-party"})

        # successful post
        empty_outbox()
        r = self.client.post(
            url, {
                "holder_legal_name":
                "Test Legal",
                "ietfer_name":
                "Test Participant",
                "ietfer_contact_email":
                "*****@*****.**",
                "ietfer_contact_info":
                "555-555-0101",
                "iprdocrel_set-TOTAL_FORMS":
                2,
                "iprdocrel_set-INITIAL_FORMS":
                0,
                "iprdocrel_set-0-document":
                "%s" % draft.docalias_set.first().pk,
                "iprdocrel_set-0-revisions":
                '00',
                "iprdocrel_set-1-document":
                DocAlias.objects.filter(name__startswith="rfc").first().pk,
                "patent_info":
                "none",
                "has_patent_pending":
                False,
                "licensing":
                "royalty-free",
                "submitter_name":
                "Test Holder",
                "submitter_email":
                "*****@*****.**",
            })
        self.assertEqual(r.status_code, 200)
        self.assertTrue(
            "Your IPR disclosure has been submitted" in unicontent(r))

        iprs = IprDisclosureBase.objects.filter(
            title__icontains="belonging to Test Legal")
        self.assertEqual(len(iprs), 1)
        ipr = iprs[0]
        self.assertEqual(ipr.holder_legal_name, "Test Legal")
        self.assertEqual(ipr.state.slug, "pending")
        self.assertTrue(isinstance(ipr.get_child(), ThirdPartyIprDisclosure))
        self.assertEqual(len(outbox), 1)
        self.assertTrue('New IPR Submission' in outbox[0]['Subject'])
        self.assertTrue('ietf-ipr@' in outbox[0]['To'])
Esempio n. 54
0
    def test_milestones_needing_review(self):
        draft = make_test_data()

        m = GroupMilestone.objects.create(group=draft.group,
                                          state_id="review",
                                          desc="Test milestone",
                                          due=datetime.date.today())

        url = urlreverse("ietf.iesg.views.milestones_needing_review")
        login_testing_unauthorized(self, "ad", url)
        r = self.client.get(url)
        self.assertEqual(r.status_code, 200)
        self.assertTrue(m.desc in unicontent(r))
Esempio n. 55
0
File: tests.py Progetto: ekr/ietfdb
    def test_create_whitelisted_account(self):
        email = "*****@*****.**"

        # add whitelist entry
        r = self.client.post(urlreverse(ietf.ietfauth.views.login), {"username":"******", "password":"******"})
        self.assertEqual(r.status_code, 302)
        self.assertEqual(urlsplit(r["Location"])[2], urlreverse(ietf.ietfauth.views.profile))

        r = self.client.get(urlreverse(ietf.ietfauth.views.add_account_whitelist))
        self.assertEqual(r.status_code, 200)
        self.assertIn("Add a whitelist entry", unicontent(r))

        r = self.client.post(urlreverse(ietf.ietfauth.views.add_account_whitelist), {"email": email})
        self.assertEqual(r.status_code, 200)
        self.assertIn("Whitelist entry creation successful", unicontent(r))

        # log out
        r = self.client.get(urlreverse(django.contrib.auth.views.logout))
        self.assertEqual(r.status_code, 200)

        # register and verify whitelisted email
        self.register_and_verify(email)
Esempio n. 56
0
    def test_review_requests(self):
        doc = make_test_data()
        review_req = make_review_data(doc)

        group = review_req.team

        for url in [urlreverse(ietf.group.views.review_requests, kwargs={ 'acronym': group.acronym }),
                    urlreverse(ietf.group.views.review_requests, kwargs={ 'acronym': group.acronym , 'group_type': group.type_id})]:
            r = self.client.get(url)
            self.assertEqual(r.status_code, 200)
            self.assertTrue(review_req.doc.name in unicontent(r))
            self.assertTrue(unicode(review_req.reviewer.person) in unicontent(r))

        url = urlreverse(ietf.group.views.review_requests, kwargs={ 'acronym': group.acronym })

        # close request, listed under closed
        review_req.state = ReviewRequestStateName.objects.get(slug="completed")
        review_req.result = ReviewResultName.objects.get(slug="ready")
        review_req.save()

        r = self.client.get(url)
        self.assertEqual(r.status_code, 200)
        self.assertTrue(review_req.doc.name in unicontent(r))
Esempio n. 57
0
    def test_review_decisions(self):
        draft = make_test_data()

        e = DocEvent(type="iesg_approved")
        e.doc = draft
        e.rev = draft.rev
        e.by = Person.objects.get(name="Areað Irector")
        e.save()

        url = urlreverse('ietf.iesg.views.review_decisions')

        r = self.client.get(url)
        self.assertEqual(r.status_code, 200)
        self.assertTrue(draft.name in unicontent(r))
Esempio n. 58
0
File: tests.py Progetto: ekr/ietfdb
    def test_create_account_failure(self):
        make_test_data()

        url = urlreverse(ietf.ietfauth.views.create_account)

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

        # register email and verify failure
        email = '*****@*****.**'
        empty_outbox()
        r = self.client.post(url, { 'email': email })
        self.assertEqual(r.status_code, 200)
        self.assertIn("Account creation failed", unicontent(r))
Esempio n. 59
0
File: tests.py Progetto: ekr/ietfdb
 def test_submit_request_invalid(self):
     make_test_data()
     group = Group.objects.get(acronym='mars')
     url = reverse('ietf.secr.sreq.views.new',kwargs={'acronym':group.acronym})
     post_data = {'num_session':'2',
                  'length_session1':'3600',
                  'attendees':'10',
                  'conflict1':'',
                  'comments':'need projector'}
     self.client.login(username="******", password="******")
     r = self.client.post(url,post_data)
     self.assertEqual(r.status_code, 200)
     q = PyQuery(r.content)
     self.assertEqual(len(q('#session-request-form')),1)
     self.assertTrue('You must enter a length for all sessions' in unicontent(r))
Esempio n. 60
0
    def test_addcomment(self):
        make_test_data()
        ipr = IprDisclosureBase.objects.get(title='Statement regarding rights')
        url = urlreverse('ietf.ipr.views.add_comment', kwargs={"id": ipr.id})
        self.client.login(username="******", password="******")
        r = self.client.get(url)
        self.assertEqual(r.status_code, 200)

        # public comment
        comment = 'Test comment'
        r = self.client.post(url, dict(comment=comment))
        self.assertEqual(r.status_code, 302)
        qs = ipr.iprevent_set.filter(type='comment', desc=comment)
        self.assertTrue(qs.count(), 1)

        # private comment
        r = self.client.post(url,
                             dict(comment='Private comment', private=True),
                             follow=True)
        self.assertEqual(r.status_code, 200)
        self.assertTrue('Private comment' in unicontent(r))
        self.client.logout()
        r = self.client.get(url)
        self.assertFalse('Private comment' in unicontent(r))