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)
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)
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)
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)
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())
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)
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)
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)
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)
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)
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)
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))
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
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)
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)
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)
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"])
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)
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)
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)
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)
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")
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")
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")
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)
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)
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)
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)
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)
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)
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)
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)
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)
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
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))
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')
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")
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")
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 <[email protected]>', '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())
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)
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)
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)
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
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)
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)
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)
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)
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"])
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)
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)
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'])
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)
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)
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))
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)
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)