Modified the test data to use some AD and WG chair names that contain non-ascii characters, and fixed test issues found.

- Legacy-Id: 10418
This commit is contained in:
Henrik Levkowetz 2015-11-04 07:34:56 +00:00
parent ebfebde27a
commit cf7d794b09
29 changed files with 342 additions and 321 deletions

View file

@ -190,6 +190,7 @@ def info(name):
if debug:
frame = inspect.stack()[1][0]
value = eval(name, frame.f_globals, frame.f_locals)
vtype = eval("type(%s)"%name, frame.f_globals, frame.f_locals)
indent = ' ' * (_report_indent[0])
sys.stderr.write("%s%s: %s %s\n" % (indent, name, value, type(value)))
sys.stderr.write("%s%s: '%s' (%s)\n" % (indent, name, value, vtype))

View file

@ -26,7 +26,7 @@ from ietf.name.models import SessionStatusName
from ietf.person.models import Person
from ietf.utils.mail import outbox
from ietf.utils.test_data import make_test_data
from ietf.utils.test_utils import login_testing_unauthorized
from ietf.utils.test_utils import login_testing_unauthorized, unicontent
from ietf.utils.test_utils import TestCase
class SearchTests(TestCase):
@ -46,68 +46,68 @@ class SearchTests(TestCase):
r = self.client.get(base_url + "?rfcs=on&name=xyzzy")
self.assertEqual(r.status_code, 200)
self.assertTrue("no documents match" in r.content.lower())
self.assertTrue("no documents match" in unicontent(r).lower())
r = self.client.get(base_url + "?olddrafts=on&name=bar")
self.assertEqual(r.status_code, 200)
self.assertTrue("no documents match" in r.content.lower())
self.assertTrue("no documents match" in unicontent(r).lower())
r = self.client.get(base_url + "?olddrafts=on&name=foo")
self.assertEqual(r.status_code, 200)
self.assertTrue("draft-foo-mars-test" in r.content.lower())
self.assertTrue("draft-foo-mars-test" in unicontent(r).lower())
# find by rfc/active/inactive
draft.set_state(State.objects.get(type="draft", slug="rfc"))
r = self.client.get(base_url + "?rfcs=on&name=%s" % draft.name)
self.assertEqual(r.status_code, 200)
self.assertTrue(draft.title in r.content)
self.assertTrue(draft.title in unicontent(r))
draft.set_state(State.objects.get(type="draft", slug="active"))
r = self.client.get(base_url + "?activedrafts=on&name=%s" % draft.name)
self.assertEqual(r.status_code, 200)
self.assertTrue(draft.title in r.content)
self.assertTrue(draft.title in unicontent(r))
draft.set_state(State.objects.get(type="draft", slug="expired"))
r = self.client.get(base_url + "?olddrafts=on&name=%s" % draft.name)
self.assertEqual(r.status_code, 200)
self.assertTrue(draft.title in r.content)
self.assertTrue(draft.title in unicontent(r))
draft.set_state(State.objects.get(type="draft", slug="active"))
# find by title
r = self.client.get(base_url + "?activedrafts=on&name=%s" % draft.title.split()[0])
self.assertEqual(r.status_code, 200)
self.assertTrue(draft.title in r.content)
self.assertTrue(draft.title in unicontent(r))
# find by author
r = self.client.get(base_url + "?activedrafts=on&by=author&author=%s" % draft.authors.all()[0].person.name_parts()[1])
self.assertEqual(r.status_code, 200)
self.assertTrue(draft.title in r.content)
self.assertTrue(draft.title in unicontent(r))
# find by group
r = self.client.get(base_url + "?activedrafts=on&by=group&group=%s" % draft.group.acronym)
self.assertEqual(r.status_code, 200)
self.assertTrue(draft.title in r.content)
self.assertTrue(draft.title in unicontent(r))
# find by area
r = self.client.get(base_url + "?activedrafts=on&by=area&area=%s" % draft.group.parent_id)
self.assertEqual(r.status_code, 200)
self.assertTrue(draft.title in r.content)
self.assertTrue(draft.title in unicontent(r))
# find by area
r = self.client.get(base_url + "?activedrafts=on&by=area&area=%s" % draft.group.parent_id)
self.assertEqual(r.status_code, 200)
self.assertTrue(draft.title in r.content)
self.assertTrue(draft.title in unicontent(r))
# find by AD
r = self.client.get(base_url + "?activedrafts=on&by=ad&ad=%s" % draft.ad_id)
self.assertEqual(r.status_code, 200)
self.assertTrue(draft.title in r.content)
self.assertTrue(draft.title in unicontent(r))
# find by IESG state
r = self.client.get(base_url + "?activedrafts=on&by=state&state=%s&substate=" % draft.get_state("draft-iesg").pk)
self.assertEqual(r.status_code, 200)
self.assertTrue(draft.title in r.content)
self.assertTrue(draft.title in unicontent(r))
def test_search_for_name(self):
draft = make_test_data()
@ -189,30 +189,30 @@ class SearchTests(TestCase):
make_test_data()
r = self.client.get("/")
self.assertEqual(r.status_code, 200)
self.assertTrue("Document Search" in r.content)
self.assertTrue("Document Search" in unicontent(r))
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 r.content)
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 r.content)
self.assertTrue(draft.title in unicontent(r))
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 r.content)
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 r.content)
self.assertTrue(draft.title in unicontent(r))
def test_ajax_search_docs(self):
draft = make_test_data()
@ -437,55 +437,55 @@ Man Expires September 22, 2015 [Page 3]
r = self.client.get(urlreverse("doc_view", kwargs=dict(name=draft.name)))
self.assertEqual(r.status_code, 200)
self.assertTrue("Active Internet-Draft" in r.content)
self.assertTrue("Show full document text" in r.content)
self.assertFalse("Deimos street" in r.content)
self.assertTrue("Active Internet-Draft" in unicontent(r))
self.assertTrue("Show full document text" in unicontent(r))
self.assertFalse("Deimos street" in unicontent(r))
r = self.client.get(urlreverse("doc_view", kwargs=dict(name=draft.name)) + "?include_text=0")
self.assertEqual(r.status_code, 200)
self.assertTrue("Active Internet-Draft" in r.content)
self.assertFalse("Show full document text" in r.content)
self.assertTrue("Deimos street" in r.content)
self.assertTrue("Active Internet-Draft" in unicontent(r))
self.assertFalse("Show full document text" in unicontent(r))
self.assertTrue("Deimos street" in unicontent(r))
r = self.client.get(urlreverse("doc_view", kwargs=dict(name=draft.name)) + "?include_text=foo")
self.assertEqual(r.status_code, 200)
self.assertTrue("Active Internet-Draft" in r.content)
self.assertFalse("Show full document text" in r.content)
self.assertTrue("Deimos street" in r.content)
self.assertTrue("Active Internet-Draft" in unicontent(r))
self.assertFalse("Show full document text" in unicontent(r))
self.assertTrue("Deimos street" in unicontent(r))
r = self.client.get(urlreverse("doc_view", kwargs=dict(name=draft.name)) + "?include_text=1")
self.assertEqual(r.status_code, 200)
self.assertTrue("Active Internet-Draft" in r.content)
self.assertFalse("Show full document text" in r.content)
self.assertTrue("Deimos street" in r.content)
self.assertTrue("Active Internet-Draft" in unicontent(r))
self.assertFalse("Show full document text" in unicontent(r))
self.assertTrue("Deimos street" in unicontent(r))
self.client.cookies = SimpleCookie({'full_draft': 'on'})
r = self.client.get(urlreverse("doc_view", kwargs=dict(name=draft.name)))
self.assertEqual(r.status_code, 200)
self.assertTrue("Active Internet-Draft" in r.content)
self.assertFalse("Show full document text" in r.content)
self.assertTrue("Deimos street" in r.content)
self.assertTrue("Active Internet-Draft" in unicontent(r))
self.assertFalse("Show full document text" in unicontent(r))
self.assertTrue("Deimos street" in unicontent(r))
self.client.cookies = SimpleCookie({'full_draft': 'off'})
r = self.client.get(urlreverse("doc_view", kwargs=dict(name=draft.name)))
self.assertEqual(r.status_code, 200)
self.assertTrue("Active Internet-Draft" in r.content)
self.assertTrue("Show full document text" in r.content)
self.assertFalse("Deimos street" in r.content)
self.assertTrue("Active Internet-Draft" in unicontent(r))
self.assertTrue("Show full document text" in unicontent(r))
self.assertFalse("Deimos street" in unicontent(r))
self.client.cookies = SimpleCookie({'full_draft': 'foo'})
r = self.client.get(urlreverse("doc_view", kwargs=dict(name=draft.name)))
self.assertEqual(r.status_code, 200)
self.assertTrue("Active Internet-Draft" in r.content)
self.assertTrue("Show full document text" in r.content)
self.assertFalse("Deimos street" in r.content)
self.assertTrue("Active Internet-Draft" in unicontent(r))
self.assertTrue("Show full document text" in unicontent(r))
self.assertFalse("Deimos street" in unicontent(r))
# expired draft
draft.set_state(State.objects.get(type="draft", slug="expired"))
r = self.client.get(urlreverse("doc_view", kwargs=dict(name=draft.name)))
self.assertEqual(r.status_code, 200)
self.assertTrue("Expired Internet-Draft" in r.content)
self.assertTrue("Expired Internet-Draft" in unicontent(r))
# replaced draft
draft.set_state(State.objects.get(type="draft", slug="repl"))
@ -506,8 +506,8 @@ Man Expires September 22, 2015 [Page 3]
r = self.client.get(urlreverse("doc_view", kwargs=dict(name=draft.name)))
self.assertEqual(r.status_code, 200)
self.assertTrue("Replaced Internet-Draft" in r.content)
self.assertTrue(replacement.name in r.content)
self.assertTrue("Replaced Internet-Draft" in unicontent(r))
self.assertTrue(replacement.name in unicontent(r))
rel.delete()
# draft published as RFC
@ -527,8 +527,8 @@ Man Expires September 22, 2015 [Page 3]
r = self.client.get(urlreverse("doc_view", kwargs=dict(name=rfc_alias.name)))
self.assertEqual(r.status_code, 200)
self.assertTrue("RFC 123456" in r.content)
self.assertTrue(draft.name in r.content)
self.assertTrue("RFC 123456" in unicontent(r))
self.assertTrue(draft.name in unicontent(r))
# naked RFC
rfc = Document.objects.create(
@ -541,7 +541,7 @@ Man Expires September 22, 2015 [Page 3]
DocAlias.objects.create(name=rfc.name, document=rfc)
r = self.client.get(urlreverse("doc_view", kwargs=dict(name=rfc.name)))
self.assertEqual(r.status_code, 200)
self.assertTrue("RFC 1234567" in r.content)
self.assertTrue("RFC 1234567" in unicontent(r))
# unknown draft
r = self.client.get(urlreverse("doc_view", kwargs=dict(name="draft-xyz123")))
@ -567,14 +567,14 @@ Man Expires September 22, 2015 [Page 3]
r = self.client.get(urlreverse("doc_view", kwargs=dict(name=doc.name)))
self.assertEqual(r.status_code, 200)
self.assertTrue("%s-01"%docname in r.content)
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 r.content)
self.assertTrue("%s-00"%docname in unicontent(r))
class DocTestCase(TestCase):
def test_document_charter(self):
@ -634,12 +634,12 @@ class DocTestCase(TestCase):
r = self.client.get(urlreverse("ietf.doc.views_doc.document_ballot", kwargs=dict(name=doc.name)))
self.assertEqual(r.status_code, 200)
self.assertTrue(pos.comment in r.content)
self.assertTrue(pos.comment in unicontent(r))
# test with ballot_id
r = self.client.get(urlreverse("ietf.doc.views_doc.document_ballot", kwargs=dict(name=doc.name, ballot_id=ballot.pk)))
self.assertEqual(r.status_code, 200)
self.assertTrue(pos.comment in r.content)
self.assertTrue(pos.comment in unicontent(r))
# test popup too while we're at it
r = self.client.get(urlreverse("ietf.doc.views_doc.ballot_popup", kwargs=dict(name=doc.name, ballot_id=ballot.pk)))
@ -653,7 +653,7 @@ class DocTestCase(TestCase):
doc.save()
r = self.client.get(urlreverse("ietf.doc.views_doc.document_ballot", kwargs=dict(name=doc.name)))
self.assertEqual(r.status_code, 200)
self.assertTrue( '(%s for -%s)' % (pos.comment_time.strftime('%Y-%m-%d'), oldrev) in r.content)
self.assertTrue( '(%s for -%s)' % (pos.comment_time.strftime('%Y-%m-%d'), oldrev) in unicontent(r))
def test_document_ballot_needed_positions(self):
make_test_data()
@ -661,10 +661,10 @@ class DocTestCase(TestCase):
# 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)
self.assertTrue('more YES or NO' in unicontent(r))
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)
self.assertFalse('more YES or NO' in unicontent(r))
# status change
doc = Document.objects.get(name='status-change-imaginary-mid-review')
@ -673,16 +673,16 @@ class DocTestCase(TestCase):
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)
self.assertTrue(">IESG Evaluation<" in unicontent(r))
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)
self.assertFalse('Needs a YES' in unicontent(r))
self.assertFalse('more YES or NO' in unicontent(r))
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)
self.assertTrue('more YES or NO' in unicontent(r))
def test_document_json(self):
doc = make_test_data()
@ -710,8 +710,8 @@ class DocTestCase(TestCase):
url = urlreverse('doc_writeup', kwargs=dict(name=doc.name))
r = self.client.get(url)
self.assertEqual(r.status_code, 200)
self.assertTrue(appr.text in r.content)
self.assertTrue(notes.text in r.content)
self.assertTrue(appr.text in unicontent(r))
self.assertTrue(notes.text in unicontent(r))
def test_history(self):
doc = make_test_data()
@ -725,7 +725,7 @@ class DocTestCase(TestCase):
url = urlreverse('doc_history', kwargs=dict(name=doc.name))
r = self.client.get(url)
self.assertEqual(r.status_code, 200)
self.assertTrue(e.desc in r.content)
self.assertTrue(e.desc in unicontent(r))
def test_document_feed(self):
doc = make_test_data()
@ -738,7 +738,7 @@ class DocTestCase(TestCase):
r = self.client.get("/feed/document-changes/%s/" % doc.name)
self.assertEqual(r.status_code, 200)
self.assertTrue(e.desc in r.content)
self.assertTrue(e.desc in unicontent(r))
def test_last_call_feed(self):
doc = make_test_data()
@ -754,7 +754,7 @@ class DocTestCase(TestCase):
r = self.client.get("/feed/last-call/")
self.assertEqual(r.status_code, 200)
self.assertTrue(doc.name in r.content)
self.assertTrue(doc.name in unicontent(r))
def test_rfc_feed(self):
make_test_data()
@ -765,7 +765,7 @@ class DocTestCase(TestCase):
url = urlreverse('state_help', kwargs=dict(type="draft-iesg"))
r = self.client.get(url)
self.assertEqual(r.status_code, 200)
self.assertTrue(State.objects.get(type="draft-iesg", slug="lc").name in r.content)
self.assertTrue(State.objects.get(type="draft-iesg", slug="lc").name in unicontent(r))
def test_document_nonietf_pubreq_button(self):
doc = make_test_data()
@ -773,12 +773,12 @@ class DocTestCase(TestCase):
self.client.login(username='iab-chair', password='iab-chair+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 r.content)
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 r.content)
self.assertTrue("Request publication" in unicontent(r))
class AddCommentTestCase(TestCase):
@ -835,11 +835,11 @@ class ReferencesTest(TestCase):
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 r.content)
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 r.content)
self.assertTrue(doc1.name in unicontent(r))
class EmailAliasesTests(TestCase):
@ -884,12 +884,12 @@ expand-draft-ietf-ames-test.all@virtual.ietf.org ames-author@example.ames, ames
login_testing_unauthorized(self, "plain", url)
r = self.client.get(url)
self.assertEqual(r.status_code, 200)
self.assertTrue(all([x in r.content for x in ['mars-test@','mars-test.authors@','mars-test.chairs@']]))
self.assertTrue(all([x in r.content for x in ['ames-test@','ames-test.authors@','ames-test.chairs@']]))
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@']]))
def testExpansions(self):
url = urlreverse('ietf.doc.views_doc.document_email', kwargs=dict(name="draft-ietf-mars-test"))
r = self.client.get(url)
self.assertEqual(r.status_code, 200)
self.assertTrue('draft-ietf-mars-test.all@ietf.org' in r.content)
self.assertTrue('ballot_saved' in r.content)
self.assertTrue('draft-ietf-mars-test.all@ietf.org' in unicontent(r))
self.assertTrue('ballot_saved' in unicontent(r))

View file

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
import datetime
from pyquery import PyQuery
@ -11,7 +12,7 @@ from ietf.group.models import Group, Role
from ietf.name.models import BallotPositionName
from ietf.iesg.models import TelechatDate
from ietf.person.models import Person
from ietf.utils.test_utils import TestCase
from ietf.utils.test_utils import TestCase, unicontent
from ietf.utils.mail import outbox, empty_outbox
from ietf.utils.test_data import make_test_data
from ietf.utils.test_utils import login_testing_unauthorized
@ -24,7 +25,7 @@ class EditPositionTests(TestCase):
ballot_id=draft.latest_event(BallotDocEvent, type="created_ballot").pk))
login_testing_unauthorized(self, "ad", url)
ad = Person.objects.get(name="Aread Irector")
ad = Person.objects.get(name="Areað Irector")
# normal get
r = self.client.get(url)
@ -84,7 +85,7 @@ class EditPositionTests(TestCase):
draft = make_test_data()
url = urlreverse('ietf.doc.views_ballot.edit_position', kwargs=dict(name=draft.name,
ballot_id=draft.latest_event(BallotDocEvent, type="created_ballot").pk))
ad = Person.objects.get(name="Aread Irector")
ad = Person.objects.get(name="Areað Irector")
url += "?ad=%s" % ad.pk
login_testing_unauthorized(self, "secretary", url)
@ -127,7 +128,7 @@ class EditPositionTests(TestCase):
draft.notify = "somebody@example.com"
draft.save()
ad = Person.objects.get(name="Aread Irector")
ad = Person.objects.get(name="Areað Irector")
ballot = draft.latest_event(BallotDocEvent, type="created_ballot")
@ -263,7 +264,7 @@ class BallotWriteupsTests(TestCase):
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 r.content)
self.assertTrue("IANA does not" in unicontent(r))
# save
r = self.client.post(url, dict(
@ -455,7 +456,7 @@ class DeferUndeferTestCase(TestCase):
e = TelechatDocEvent(type="scheduled_for_telechat",
doc = doc,
by = Person.objects.get(name="Aread Irector"),
by = Person.objects.get(name="Areað Irector"),
telechat_date = first_date,
returning_item = False,
)
@ -511,7 +512,7 @@ class DeferUndeferTestCase(TestCase):
e = TelechatDocEvent(type="scheduled_for_telechat",
doc = doc,
by = Person.objects.get(name="Aread Irector"),
by = Person.objects.get(name="Areað Irector"),
telechat_date = second_date,
returning_item = True,
)

View file

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
# Copyright The IETF Trust 2011, All Rights Reserved
import os, shutil, datetime
@ -13,7 +14,7 @@ from ietf.doc.utils_charter import next_revision, default_review_text, default_a
from ietf.group.models import Group, GroupMilestone
from ietf.iesg.models import TelechatDate
from ietf.person.models import Person
from ietf.utils.test_utils import TestCase
from ietf.utils.test_utils import TestCase, unicontent
from ietf.utils.mail import outbox, empty_outbox
from ietf.utils.test_data import make_test_data
from ietf.utils.test_utils import login_testing_unauthorized
@ -252,7 +253,7 @@ class EditCharterTests(TestCase):
r = self.client.post(url, dict(txt=test_file))
self.assertEqual(r.status_code, 200)
self.assertTrue("does not appear to be a text file" in r.content)
self.assertTrue("does not appear to be a text file" in unicontent(r))
# post
prev_rev = charter.rev
@ -420,7 +421,7 @@ class EditCharterTests(TestCase):
with open(os.path.join(self.charter_dir, "%s-%s.txt" % (charter.canonical_name(), charter.rev)), "w") as f:
f.write("This is a charter.")
p = Person.objects.get(name="Aread Irector")
p = Person.objects.get(name="Areað Irector")
BallotDocEvent.objects.create(
type="created_ballot",
@ -504,4 +505,4 @@ class EditCharterTests(TestCase):
url = urlreverse('charter_with_milestones_txt', kwargs=dict(name=charter.name, rev=charter.rev))
r = self.client.get(url)
self.assertEqual(r.status_code, 200)
self.assertTrue(m.desc in r.content)
self.assertTrue(m.desc in unicontent(r))

View file

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
import os
import shutil
@ -14,7 +15,7 @@ from ietf.doc.views_conflict_review import default_approval_text
from ietf.group.models import Person
from ietf.iesg.models import TelechatDate
from ietf.name.models import StreamName
from ietf.utils.test_utils import TestCase
from ietf.utils.test_utils import TestCase, unicontent
from ietf.utils.mail import outbox, empty_outbox
from ietf.utils.test_data import make_test_data
from ietf.utils.test_utils import login_testing_unauthorized
@ -55,14 +56,14 @@ class ConflictReviewTests(TestCase):
self.assertEqual(Document.objects.filter(name='conflict-review-imaginary-independent-submission').count() , 0)
# successful review start
ad_strpk = str(Person.objects.get(name='Aread Irector').pk)
ad_strpk = str(Person.objects.get(name='Areað Irector').pk)
state_strpk = str(State.objects.get(used=True, slug='needshep',type__slug='conflrev').pk)
r = self.client.post(url,dict(ad=ad_strpk,create_in_state=state_strpk,notify='ipu@ietf.org'))
self.assertEqual(r.status_code, 302)
review_doc = Document.objects.get(name='conflict-review-imaginary-independent-submission')
self.assertEqual(review_doc.get_state('conflrev').slug,'needshep')
self.assertEqual(review_doc.rev,u'00')
self.assertEqual(review_doc.ad.name,u'Aread Irector')
self.assertEqual(review_doc.ad.name,u'Areað Irector')
self.assertEqual(review_doc.notify,u'ipu@ietf.org')
doc = Document.objects.get(name='draft-imaginary-independent-submission')
self.assertTrue(doc in [x.target.document for x in review_doc.relateddocument_set.filter(relationship__slug='conflrev')])
@ -72,7 +73,7 @@ class ConflictReviewTests(TestCase):
self.assertTrue('Conflict Review requested' in outbox[-1]['Subject'])
# verify you can't start a review when a review is already in progress
r = self.client.post(url,dict(ad="Aread Irector",create_in_state="Needs Shepherd",notify='ipu@ietf.org'))
r = self.client.post(url,dict(ad="Areað Irector",create_in_state="Needs Shepherd",notify='ipu@ietf.org'))
self.assertEqual(r.status_code, 404)
@ -365,7 +366,7 @@ class ConflictReviewSubmitTests(TestCase):
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 r.content)
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.")

View file

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
import os
import shutil
import datetime
@ -18,7 +19,7 @@ from ietf.group.models import Group
from ietf.person.models import Person, Email
from ietf.meeting.models import Meeting, MeetingTypeName
from ietf.iesg.models import TelechatDate
from ietf.utils.test_utils import login_testing_unauthorized
from ietf.utils.test_utils import login_testing_unauthorized, unicontent
from ietf.utils.test_data import make_test_data
from ietf.utils.mail import outbox, empty_outbox
from ietf.utils.test_utils import TestCase
@ -158,7 +159,7 @@ class ChangeStateTests(TestCase):
self.assertTrue(not draft.latest_event(type="changed_ballot_writeup_text"))
r = self.client.post(url, dict(state=State.objects.get(used=True, type="draft-iesg", slug="lc-req").pk))
self.assertTrue("Your request to issue" in r.content)
self.assertTrue("Your request to issue" in unicontent(r))
# last call text
e = draft.latest_event(WriteupDocEvent, type="changed_last_call_text")
@ -353,7 +354,7 @@ class EditInfoTests(TestCase):
events_before = draft.docevent_set.count()
mailbox_before = len(outbox)
ad = Person.objects.get(name="Aread Irector")
ad = Person.objects.get(name="Areað Irector")
r = self.client.post(url,
dict(intended_std_level=str(draft.intended_std_level_id),
@ -446,7 +447,7 @@ class ResurrectTests(TestCase):
self.assertEqual(draft.docevent_set.count(), events_before + 1)
e = draft.latest_event(type="requested_resurrect")
self.assertTrue(e)
self.assertEqual(e.by, Person.objects.get(name="Aread Irector"))
self.assertEqual(e.by, Person.objects.get(name="Areað Irector"))
self.assertTrue("Resurrection" in e.desc)
self.assertEqual(len(outbox), mailbox_before + 1)
self.assertTrue("Resurrection" in outbox[-1]['Subject'])
@ -458,7 +459,7 @@ class ResurrectTests(TestCase):
DocEvent.objects.create(doc=draft,
type="requested_resurrect",
by=Person.objects.get(name="Aread Irector"))
by=Person.objects.get(name="Areað Irector"))
url = urlreverse('doc_resurrect', kwargs=dict(name=draft.name))
@ -905,7 +906,7 @@ class IndividualInfoFormsTests(TestCase):
self.assertTrue(any(['Document shepherd changed to (None)' in x.desc for x in self.doc.docevent_set.filter(time=self.doc.time,type='added_comment')]))
# test buggy change
ad = Person.objects.get(name='Aread Irector')
ad = Person.objects.get(name='Areað Irector')
two_answers = "%s,%s" % (plain_email, ad.email_set.all()[0])
r = self.client.post(url, dict(shepherd=two_answers))
self.assertEqual(r.status_code, 200)

View file

@ -15,7 +15,7 @@ from ietf.group.models import Group
from ietf.meeting.models import Meeting, Session, SessionPresentation
from ietf.name.models import SessionStatusName
from ietf.person.models import Person
from ietf.utils.test_utils import TestCase, login_testing_unauthorized
from ietf.utils.test_utils import TestCase, login_testing_unauthorized, unicontent
from ietf.utils.test_data import make_test_data
from ietf.meeting.test_data import make_meeting_test_data
@ -59,7 +59,7 @@ class GroupMaterialTests(TestCase):
# normal get
r = self.client.get(url)
self.assertEqual(r.status_code, 200)
self.assertTrue("Slides" in r.content)
self.assertTrue("Slides" in unicontent(r))
url = urlreverse('ietf.doc.views_material.choose_material_type', kwargs=dict(acronym='mars'))
r = self.client.get(url)

View file

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
import os
import shutil
@ -14,7 +15,7 @@ from ietf.doc.utils import create_ballot_if_not_open
from ietf.doc.views_status_change import default_approval_text
from ietf.group.models import Person
from ietf.iesg.models import TelechatDate
from ietf.utils.test_utils import TestCase
from ietf.utils.test_utils import TestCase, unicontent
from ietf.utils.mail import outbox
from ietf.utils.test_data import make_test_data
from ietf.utils.test_utils import login_testing_unauthorized
@ -32,7 +33,7 @@ class StatusChangeTests(TestCase):
q = PyQuery(r.content)
self.assertEqual(len(q('form select[name=create_in_state]')),1)
ad_strpk = str(Person.objects.get(name='Aread Irector').pk)
ad_strpk = str(Person.objects.get(name='Areað Irector').pk)
state_strpk = str(State.objects.get(slug='adrev',type__slug='statchg').pk)
# faulty posts
@ -69,7 +70,7 @@ class StatusChangeTests(TestCase):
status_change = Document.objects.get(name='status-change-imaginary-new')
self.assertEqual(status_change.get_state('statchg').slug,'adrev')
self.assertEqual(status_change.rev,u'00')
self.assertEqual(status_change.ad.name,u'Aread Irector')
self.assertEqual(status_change.ad.name,u'Areað Irector')
self.assertEqual(status_change.notify,u'ipu@ietf.org')
self.assertTrue(status_change.relateddocument_set.filter(relationship__slug='tois',target__document__name='draft-ietf-random-thing'))
@ -451,7 +452,7 @@ class StatusChangeSubmitTests(TestCase):
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 r.content)
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.")
@ -476,7 +477,7 @@ class StatusChangeSubmitTests(TestCase):
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 r.content)
self.assertTrue("This is the old proposal." in unicontent(r))
def setUp(self):
make_test_data()

View file

@ -42,8 +42,8 @@ urlpatterns = patterns('',
url(r'^(?P<name>[A-Za-z0-9\._\+\-]+)$', views_search.search_for_name, name="doc_search_for_name"),
url(r'^search/$', views_search.search, name="doc_search"),
url(r'^in-last-call/$', views_search.drafts_in_last_call, name="drafts_in_last_call"),
url(r'^ad/(?P<name>[A-Za-z0-9.-]+)/$', views_search.docs_for_ad, name="docs_for_ad"),
(r'^ad2/(?P<name>[A-Za-z0-9.-]+)/$', RedirectView.as_view(url='/doc/ad/%(name)s/', permanent=True)),
url(r'^ad/(?P<name>[\w.-]+)/$(?u)', views_search.docs_for_ad, name="docs_for_ad"),
(r'^ad2/(?P<name>[\w.-]+)/$(?u)', RedirectView.as_view(url='/doc/ad/%(name)s/', permanent=True)),
url(r'^rfc-status-changes/$', views_status_change.rfc_status_changes, name='rfc_status_changes'),
url(r'^start-rfc-status-change/(?P<name>[A-Za-z0-9._+-]*)$', views_status_change.start_rfc_status_change, name='start_rfc_status_change'),
url(r'^iesg/(?P<last_call_only>[A-Za-z0-9.-]+/)?$', views_search.drafts_in_iesg_process, name="drafts_in_iesg_process"),

View file

@ -8,7 +8,7 @@ from django.test import Client
from ietf.group.models import Role, Group
from ietf.utils.test_data import make_test_data
from ietf.utils.test_utils import login_testing_unauthorized, TestCase
from ietf.utils.test_utils import login_testing_unauthorized, TestCase, unicontent
if getattr(settings,'SKIP_DOT_TO_PDF', False):
skip_dot_to_pdf = True
@ -28,7 +28,7 @@ class StreamTests(TestCase):
make_test_data()
r = self.client.get(urlreverse("ietf.group.views_stream.streams"))
self.assertEqual(r.status_code, 200)
self.assertTrue("Independent Submission Editor" in r.content)
self.assertTrue("Independent Submission Editor" in unicontent(r))
def test_stream_documents(self):
draft = make_test_data()
@ -37,7 +37,7 @@ class StreamTests(TestCase):
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 r.content)
self.assertTrue(draft.name in unicontent(r))
def test_stream_edit(self):
make_test_data()

View file

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
import os
import shutil
import calendar
@ -17,7 +18,7 @@ from ietf.group.models import Group, GroupEvent, GroupMilestone, GroupStateTrans
from ietf.group.utils import save_group_in_history
from ietf.name.models import DocTagName, GroupStateName, GroupTypeName
from ietf.person.models import Person, Email
from ietf.utils.test_utils import TestCase
from ietf.utils.test_utils import TestCase, unicontent
from ietf.utils.mail import outbox, empty_outbox
from ietf.utils.test_data import make_test_data
from ietf.utils.test_utils import login_testing_unauthorized
@ -38,41 +39,41 @@ class GroupPagesTests(TestCase):
url = urlreverse('ietf.group.info.active_groups', kwargs=dict(group_type="wg"))
r = self.client.get(url)
self.assertEqual(r.status_code, 200)
self.assertTrue(group.parent.name in r.content)
self.assertTrue(group.acronym in r.content)
self.assertTrue(group.name in r.content)
self.assertTrue(group.ad_role().person.plain_name() in r.content)
self.assertTrue(group.parent.name in unicontent(r))
self.assertTrue(group.acronym in unicontent(r))
self.assertTrue(group.name in unicontent(r))
self.assertTrue(group.ad_role().person.plain_name() in unicontent(r))
url = urlreverse('ietf.group.info.active_groups', kwargs=dict(group_type="rg"))
r = self.client.get(url)
self.assertEqual(r.status_code, 200)
self.assertTrue('Active Research Groups' in r.content)
self.assertTrue('Active Research Groups' in unicontent(r))
url = urlreverse('ietf.group.info.active_groups', kwargs=dict(group_type="area"))
r = self.client.get(url)
self.assertEqual(r.status_code, 200)
self.assertTrue("Far Future (farfut)" in r.content)
self.assertTrue("Far Future (farfut)" in unicontent(r))
url = urlreverse('ietf.group.info.active_groups', kwargs=dict(group_type="ag"))
r = self.client.get(url)
self.assertEqual(r.status_code, 200)
self.assertTrue("Active Area Groups" in r.content)
self.assertTrue("Active Area Groups" in unicontent(r))
url = urlreverse('ietf.group.info.active_groups', kwargs=dict(group_type="dir"))
r = self.client.get(url)
self.assertEqual(r.status_code, 200)
self.assertTrue("Active Directorates" in r.content)
self.assertTrue("Active Directorates" in unicontent(r))
url = urlreverse('ietf.group.info.active_groups', kwargs=dict(group_type="team"))
r = self.client.get(url)
self.assertEqual(r.status_code, 200)
self.assertTrue("Active Teams" in r.content)
self.assertTrue("Active Teams" in unicontent(r))
url = urlreverse('ietf.group.info.active_groups', kwargs=dict())
r = self.client.get(url)
self.assertEqual(r.status_code, 200)
self.assertTrue("Directorate" in r.content)
self.assertTrue("AG" in r.content)
self.assertTrue("Directorate" in unicontent(r))
self.assertTrue("AG" in unicontent(r))
for slug in GroupTypeName.objects.exclude(slug__in=['wg','rg','ag','area','dir','team']).values_list('slug',flat=True):
with self.assertRaises(NoReverseMatch):
@ -90,35 +91,35 @@ class GroupPagesTests(TestCase):
url = urlreverse('ietf.group.info.wg_summary_area', kwargs=dict(group_type="wg"))
r = self.client.get(url)
self.assertEqual(r.status_code, 200)
self.assertTrue(group.parent.name in r.content)
self.assertTrue(group.acronym in r.content)
self.assertTrue(group.name in r.content)
self.assertTrue(chair.address in r.content)
self.assertTrue(group.parent.name in unicontent(r))
self.assertTrue(group.acronym in unicontent(r))
self.assertTrue(group.name in unicontent(r))
self.assertTrue(chair.address in unicontent(r))
url = urlreverse('ietf.group.info.wg_summary_acronym', kwargs=dict(group_type="wg"))
r = self.client.get(url)
self.assertEqual(r.status_code, 200)
self.assertTrue(group.acronym in r.content)
self.assertTrue(group.name in r.content)
self.assertTrue(chair.address in r.content)
self.assertTrue(group.acronym in unicontent(r))
self.assertTrue(group.name in unicontent(r))
self.assertTrue(chair.address in unicontent(r))
url = urlreverse('ietf.group.info.wg_charters', kwargs=dict(group_type="wg"))
r = self.client.get(url)
self.assertEqual(r.status_code, 200)
self.assertTrue(group.acronym in r.content)
self.assertTrue(group.name in r.content)
self.assertTrue(group.ad_role().person.plain_name() in r.content)
self.assertTrue(chair.address in r.content)
self.assertTrue("This is a charter." in r.content)
self.assertTrue(group.acronym in unicontent(r))
self.assertTrue(group.name in unicontent(r))
self.assertTrue(group.ad_role().person.plain_name() in unicontent(r))
self.assertTrue(chair.address in unicontent(r))
self.assertTrue("This is a charter." in unicontent(r))
url = urlreverse('ietf.group.info.wg_charters_by_acronym', kwargs=dict(group_type="wg"))
r = self.client.get(url)
self.assertEqual(r.status_code, 200)
self.assertTrue(group.acronym in r.content)
self.assertTrue(group.name in r.content)
self.assertTrue(group.ad_role().person.plain_name() in r.content)
self.assertTrue(chair.address in r.content)
self.assertTrue("This is a charter." in r.content)
self.assertTrue(group.acronym in unicontent(r))
self.assertTrue(group.name in unicontent(r))
self.assertTrue(group.ad_role().person.plain_name() in unicontent(r))
self.assertTrue(chair.address in unicontent(r))
self.assertTrue("This is a charter." in unicontent(r))
def test_chartering_groups(self):
draft = make_test_data()
@ -186,11 +187,11 @@ class GroupPagesTests(TestCase):
url = urlreverse('ietf.group.info.group_documents', kwargs=dict(group_type=group.type_id, acronym=group.acronym))
r = self.client.get(url)
self.assertEqual(r.status_code, 200)
self.assertTrue(draft.name in r.content)
self.assertTrue(group.name in r.content)
self.assertTrue(group.acronym in r.content)
self.assertTrue(draft.name in unicontent(r))
self.assertTrue(group.name in unicontent(r))
self.assertTrue(group.acronym in unicontent(r))
self.assertTrue(draft2.name in r.content)
self.assertTrue(draft2.name in unicontent(r))
# Make sure that a logged in user is presented with an opportunity to add results to their community list
self.client.login(username="secretary", password="secretary+password")
@ -202,8 +203,8 @@ class GroupPagesTests(TestCase):
url = urlreverse('ietf.group.info.group_documents_txt', kwargs=dict(group_type=group.type_id, acronym=group.acronym))
r = self.client.get(url)
self.assertEqual(r.status_code, 200)
self.assertTrue(draft.name in r.content)
self.assertTrue(draft2.name in r.content)
self.assertTrue(draft.name in unicontent(r))
self.assertTrue(draft2.name in unicontent(r))
def test_group_charter(self):
draft = make_test_data()
@ -225,11 +226,11 @@ class GroupPagesTests(TestCase):
]:
r = self.client.get(url)
self.assertEqual(r.status_code, 200)
self.assertTrue(group.name in r.content)
self.assertTrue(group.acronym in r.content)
self.assertTrue("This is a charter." in r.content)
self.assertTrue(milestone.desc in r.content)
self.assertTrue(milestone.docs.all()[0].name in r.content)
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))
def test_group_about(self):
make_test_data()
@ -248,9 +249,9 @@ class GroupPagesTests(TestCase):
url = group.about_url()
r = self.client.get(url)
self.assertEqual(r.status_code, 200)
self.assertTrue(group.name in r.content)
self.assertTrue(group.acronym in r.content)
self.assertTrue(group.description in r.content)
self.assertTrue(group.name in unicontent(r))
self.assertTrue(group.acronym in unicontent(r))
self.assertTrue(group.description in unicontent(r))
def test_materials(self):
make_test_data()
@ -271,8 +272,8 @@ class GroupPagesTests(TestCase):
]:
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)
self.assertTrue(doc.title in unicontent(r))
self.assertTrue(doc.name in unicontent(r))
url = urlreverse("group_materials", kwargs={ 'acronym': group.acronym })
@ -281,7 +282,7 @@ class GroupPagesTests(TestCase):
r = self.client.get(url)
self.assertEqual(r.status_code, 200)
self.assertTrue(doc.title not in r.content)
self.assertTrue(doc.title not in unicontent(r))
def test_history(self):
draft = make_test_data()
@ -296,7 +297,7 @@ class GroupPagesTests(TestCase):
url = urlreverse('ietf.group.info.history', kwargs=dict(group_type=group.type_id, acronym=group.acronym))
r = self.client.get(url)
self.assertEqual(r.status_code, 200)
self.assertTrue(e.desc in r.content)
self.assertTrue(e.desc in unicontent(r))
def test_feed(self):
draft = make_test_data()
@ -316,8 +317,8 @@ class GroupPagesTests(TestCase):
r = self.client.get("/feed/group-changes/%s/" % group.acronym)
self.assertEqual(r.status_code, 200)
self.assertTrue(ge.desc in r.content)
self.assertTrue(de.desc in r.content)
self.assertTrue(ge.desc in unicontent(r))
self.assertTrue(de.desc in unicontent(r))
class GroupEditTests(TestCase):
@ -477,7 +478,7 @@ class GroupEditTests(TestCase):
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.")
area = group.parent
ad = Person.objects.get(name="Aread Irector")
ad = Person.objects.get(name="Areað Irector")
state = GroupStateName.objects.get(slug="bof")
empty_outbox()
r = self.client.post(url,
@ -594,15 +595,15 @@ class MilestoneTests(TestCase):
r = self.client.get(url)
self.assertEqual(r.status_code, 200)
self.assertTrue(m1.desc in r.content)
self.assertTrue(m2.desc not in r.content)
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 r.content)
self.assertTrue(m2.desc in r.content)
self.assertTrue(m1.desc not in unicontent(r))
self.assertTrue(m2.desc in unicontent(r))
def test_add_milestone(self):
m1, m2, group = self.create_test_milestones()
@ -936,32 +937,32 @@ expand-ames-chairs@virtual.ietf.org mars_chair@ietf
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 r.content for x in ['mars-ads@','mars-chairs@']]))
self.assertFalse(any([x in r.content for x in ['ames-ads@','ames-chairs@']]))
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 r.content for x in ['mars-ads@','mars-chairs@','ames-ads@','ames-chairs@']]))
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 r.content)
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 r.content)
self.assertFalse('mars-ads@' in unicontent(r))
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 r.content)
self.assertTrue('mars-ads@ietf.org' in r.content)
self.assertTrue('group_personnel_change' in r.content)
self.assertTrue('Email Aliases' in unicontent(r))
self.assertTrue('mars-ads@ietf.org' in unicontent(r))
self.assertTrue('group_personnel_change' in unicontent(r))

View file

@ -97,9 +97,9 @@ class IndexTests(TestCase):
self.assertEqual(t[12], ".pdf,.txt")
self.assertEqual(t[13], draft.title)
author = draft.documentauthor_set.order_by("order").get()
self.assertEqual(t[14], "%s <%s>" % (author.author.person.name, author.author.address))
self.assertEqual(t[15], "%s <%s>" % (draft.shepherd.person.name, draft.shepherd.address))
self.assertEqual(t[16], "%s <%s>" % (draft.ad, draft.ad.email_address()))
self.assertEqual(t[14], u"%s <%s>" % (author.author.person.name, author.author.address))
self.assertEqual(t[15], u"%s <%s>" % (draft.shepherd.person.name, draft.shepherd.address))
self.assertEqual(t[16], u"%s <%s>" % (draft.ad, draft.ad.email_address()))
# test RFC

View file

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
import os
import shutil
import json
@ -16,7 +17,7 @@ from ietf.iesg.models import TelechatDate
from ietf.name.models import StreamName
from ietf.person.models import Person
from ietf.utils.test_data import make_test_data
from ietf.utils.test_utils import TestCase, login_testing_unauthorized
from ietf.utils.test_utils import TestCase, login_testing_unauthorized, unicontent
class IESGTests(TestCase):
def test_feed(self):
@ -34,8 +35,8 @@ class IESGTests(TestCase):
r = self.client.get(urlreverse("ietf.iesg.views.discusses"))
self.assertEqual(r.status_code, 200)
self.assertTrue(draft.name in r.content)
self.assertTrue(pos.ad.plain_name() in r.content)
self.assertTrue(draft.name in unicontent(r))
self.assertTrue(pos.ad.plain_name() in unicontent(r))
def test_milestones_needing_review(self):
draft = make_test_data()
@ -49,21 +50,21 @@ class IESGTests(TestCase):
login_testing_unauthorized(self, "ad", url)
r = self.client.get(url)
self.assertEqual(r.status_code, 200)
self.assertTrue(m.desc in r.content)
self.assertTrue(m.desc in unicontent(r))
def test_review_decisions(self):
draft = make_test_data()
e = DocEvent(type="iesg_approved")
e.doc = draft
e.by = Person.objects.get(name="Aread Irector")
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 r.content)
self.assertTrue(draft.name in unicontent(r))
class IESGAgendaTests(TestCase):
def setUp(self):
@ -81,7 +82,7 @@ class IESGAgendaTests(TestCase):
"charter": Document.objects.filter(type="charter")[0],
}
by = Person.objects.get(name="Aread Irector")
by = Person.objects.get(name="Areað Irector")
date = get_agenda_date()
self.draft_dir = os.path.abspath("tmp-agenda-draft-dir")
@ -112,7 +113,7 @@ class IESGAgendaTests(TestCase):
telechat_event = TelechatDocEvent.objects.create(
type="scheduled_for_telechat",
doc=draft,
by=Person.objects.get(name="Aread Irector"),
by=Person.objects.get(name="Areað Irector"),
telechat_date=date,
returning_item=False)
date_str = date.isoformat()
@ -272,8 +273,8 @@ class IESGAgendaTests(TestCase):
self.assertEqual(r.status_code, 200)
for d in self.telechat_docs.values():
self.assertTrue(d.name in r.content)
self.assertTrue(d.title in r.content)
self.assertTrue(d.name in unicontent(r))
self.assertTrue(d.title in unicontent(r))
def test_agenda_json(self):
r = self.client.get(urlreverse("ietf.iesg.views.agenda_json"))
@ -281,11 +282,11 @@ class IESGAgendaTests(TestCase):
for k, d in self.telechat_docs.iteritems():
if d.type_id == "charter":
self.assertTrue(d.group.name in r.content, "%s not in response" % k)
self.assertTrue(d.group.acronym in r.content, "%s acronym not in response" % k)
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 r.content, "%s not in response" % k)
self.assertTrue(d.title in r.content, "%s title not in response" % k)
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)
self.assertTrue(json.loads(r.content))
@ -294,8 +295,8 @@ class IESGAgendaTests(TestCase):
self.assertEqual(r.status_code, 200)
for k, d in self.telechat_docs.iteritems():
self.assertTrue(d.name in r.content, "%s not in response" % k)
self.assertTrue(d.title in r.content, "%s title not in response" % k)
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)
def test_agenda_txt(self):
r = self.client.get(urlreverse("ietf.iesg.views.agenda_txt"))
@ -303,11 +304,11 @@ class IESGAgendaTests(TestCase):
for k, d in self.telechat_docs.iteritems():
if d.type_id == "charter":
self.assertTrue(d.group.name in r.content, "%s not in response" % k)
self.assertTrue(d.group.acronym in r.content, "%s acronym not in response" % k)
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 r.content, "%s not in response" % k)
self.assertTrue(d.title in r.content, "%s title not in response" % k)
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)
def test_agenda_scribe_template(self):
r = self.client.get(urlreverse("ietf.iesg.views.agenda_scribe_template"))
@ -317,8 +318,8 @@ class IESGAgendaTests(TestCase):
if d.type_id == "charter":
continue # scribe template doesn't contain chartering info
self.assertTrue(d.name in r.content, "%s not in response" % k)
self.assertTrue(d.title in r.content, "%s title not in response" % k)
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)
def test_agenda_moderator_package(self):
url = urlreverse("ietf.iesg.views.agenda_moderator_package")
@ -328,11 +329,11 @@ class IESGAgendaTests(TestCase):
for k, d in self.telechat_docs.iteritems():
if d.type_id == "charter":
self.assertTrue(d.group.name in r.content, "%s not in response" % k)
self.assertTrue(d.group.acronym in r.content, "%s acronym not in response" % k)
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 r.content, "%s not in response" % k)
self.assertTrue(d.title in r.content, "%s title not in response" % k)
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)
def test_agenda_package(self):
url = urlreverse("ietf.iesg.views.agenda_package")
@ -342,11 +343,11 @@ class IESGAgendaTests(TestCase):
for k, d in self.telechat_docs.iteritems():
if d.type_id == "charter":
self.assertTrue(d.group.name in r.content, "%s not in response" % k)
self.assertTrue(d.group.acronym in r.content, "%s acronym not in response" % k)
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 r.content, "%s not in response" % k)
self.assertTrue(d.title in r.content, "%s title not in response" % k)
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)
def test_agenda_documents_txt(self):
url = urlreverse("ietf.iesg.views.agenda_documents_txt")
@ -354,7 +355,7 @@ class IESGAgendaTests(TestCase):
self.assertEqual(r.status_code, 200)
for k, d in self.telechat_docs.iteritems():
self.assertTrue(d.name in r.content, "%s not in response" % k)
self.assertTrue(d.name in unicontent(r), "%s not in response" % k)
def test_agenda_documents(self):
url = urlreverse("ietf.iesg.views.agenda_documents")
@ -362,8 +363,8 @@ class IESGAgendaTests(TestCase):
self.assertEqual(r.status_code, 200)
for k, d in self.telechat_docs.iteritems():
self.assertTrue(d.name in r.content, "%s not in response" % k)
self.assertTrue(d.title in r.content, "%s title not in response" % k)
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)
def test_agenda_telechat_docs(self):
d1 = self.telechat_docs["ietf_draft"]
@ -402,7 +403,7 @@ class RescheduleOnAgendaTests(TestCase):
# add to schedule
e = TelechatDocEvent(type="scheduled_for_telechat")
e.doc = draft
e.by = Person.objects.get(name="Aread Irector")
e.by = Person.objects.get(name="Areað Irector")
e.telechat_date = TelechatDate.objects.active()[0].date
e.returning_item = True
e.save()

View file

@ -34,7 +34,7 @@ from urlparse import urlsplit
from django.core.urlresolvers import reverse as urlreverse
from ietf.utils.test_utils import TestCase, login_testing_unauthorized
from ietf.utils.test_utils import TestCase, login_testing_unauthorized, unicontent
from ietf.utils.test_data import make_test_data
class IetfAuthTests(TestCase):
@ -75,7 +75,7 @@ class IetfAuthTests(TestCase):
# get
r = self.client.get(url)
self.assertEqual(r.status_code, 200)
self.assertTrue("plain" in r.content)
self.assertTrue("plain" in unicontent(r))
# post
# ... fill in

View file

@ -14,7 +14,7 @@ from ietf.ipr.models import (IprDisclosureBase,GenericIprDisclosure,HolderIprDis
ThirdPartyIprDisclosure,RelatedIpr)
from ietf.ipr.utils import get_genitive, get_ipr_summary
from ietf.message.models import Message
from ietf.utils.test_utils import TestCase, login_testing_unauthorized
from ietf.utils.test_utils import TestCase, login_testing_unauthorized, unicontent
from ietf.utils.test_data import make_test_data
from ietf.utils.mail import outbox, empty_outbox
from ietf.mailtrigger.utils import gather_address_lists
@ -110,14 +110,14 @@ class IprTests(TestCase):
ipr = IprDisclosureBase.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)
self.assertTrue(ipr.title in unicontent(r))
def test_show_posted(self):
make_test_data()
ipr = IprDisclosureBase.objects.get(title='Statement regarding rights')
r = self.client.get(urlreverse("ipr_show", kwargs=dict(id=ipr.pk)))
self.assertEqual(r.status_code, 200)
self.assertTrue(ipr.title in r.content)
self.assertTrue(ipr.title in unicontent(r))
def test_show_parked(self):
make_test_data()
@ -146,15 +146,15 @@ class IprTests(TestCase):
ipr.set_state('removed')
r = self.client.get(urlreverse("ipr_show", kwargs=dict(id=ipr.pk)))
self.assertEqual(r.status_code, 200)
self.assertTrue('This IPR disclosure was removed' in r.content)
self.assertTrue('This IPR disclosure was removed' in unicontent(r))
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 r.content)
self.assertTrue(str(ipr.pk) in r.content)
self.assertTrue(draft.name in unicontent(r))
self.assertTrue(str(ipr.pk) in unicontent(r))
def test_iprs_for_drafts_recursive(self):
draft = make_test_data()
@ -162,15 +162,15 @@ class IprTests(TestCase):
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 r.content)
self.assertTrue(draft.name in unicontent(r))
for alias in replaced:
self.assertTrue(alias.name in r.content)
self.assertTrue(str(ipr.pk) in r.content)
self.assertTrue(alias.name in unicontent(r))
self.assertTrue(str(ipr.pk) in unicontent(r))
def test_about(self):
r = self.client.get(urlreverse("ietf.ipr.views.about"))
self.assertEqual(r.status_code, 200)
self.assertTrue("File a disclosure" in r.content)
self.assertTrue("File a disclosure" in unicontent(r))
def test_search(self):
draft = make_test_data()
@ -186,68 +186,68 @@ class IprTests(TestCase):
# find by id
r = self.client.get(url + "?submit=draft&id=%s" % draft.name)
self.assertEqual(r.status_code, 200)
self.assertTrue(ipr.title in r.content)
self.assertTrue(ipr.title in unicontent(r))
# find draft
r = self.client.get(url + "?submit=draft&draft=%s" % draft.name)
self.assertEqual(r.status_code, 200)
self.assertTrue(ipr.title in r.content)
self.assertTrue(ipr.title in unicontent(r))
# search + select document
r = self.client.get(url + "?submit=draft&draft=draft")
self.assertEqual(r.status_code, 200)
self.assertTrue(draft.name in r.content)
self.assertTrue(ipr.title not in r.content)
self.assertTrue(draft.name in unicontent(r))
self.assertTrue(ipr.title not in unicontent(r))
DocAlias.objects.create(name="rfc321", document=draft)
# find RFC
r = self.client.get(url + "?submit=rfc&rfc=321")
self.assertEqual(r.status_code, 200)
self.assertTrue(ipr.title in r.content)
self.assertTrue(ipr.title in unicontent(r))
# find by patent owner
r = self.client.get(url + "?submit=holder&holder=%s" % ipr.holder_legal_name)
self.assertEqual(r.status_code, 200)
self.assertTrue(ipr.title in r.content)
self.assertTrue(ipr.title in unicontent(r))
# find by patent info
r = self.client.get(url + "?submit=patent&patent=%s" % ipr.patent_info)
self.assertEqual(r.status_code, 200)
self.assertTrue(ipr.title in r.content)
self.assertTrue(ipr.title in unicontent(r))
r = self.client.get(url + "?submit=patent&patent=US12345")
self.assertEqual(r.status_code, 200)
self.assertTrue(ipr.title in r.content)
self.assertTrue(ipr.title in unicontent(r))
# find by group acronym
r = self.client.get(url + "?submit=group&group=%s" % draft.group.pk)
self.assertEqual(r.status_code, 200)
self.assertTrue(ipr.title in r.content)
self.assertTrue(ipr.title in unicontent(r))
# find by doc title
r = self.client.get(url + "?submit=doctitle&doctitle=%s" % urllib.quote(draft.title))
self.assertEqual(r.status_code, 200)
self.assertTrue(ipr.title in r.content)
self.assertTrue(ipr.title in unicontent(r))
# find by ipr title
r = self.client.get(url + "?submit=iprtitle&iprtitle=%s" % urllib.quote(ipr.title))
self.assertEqual(r.status_code, 200)
self.assertTrue(ipr.title in r.content)
self.assertTrue(ipr.title in unicontent(r))
def test_feed(self):
make_test_data()
ipr = IprDisclosureBase.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)
self.assertTrue(ipr.title in unicontent(r))
def test_sitemap(self):
make_test_data()
ipr = IprDisclosureBase.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)
self.assertTrue("/ipr/%s/" % ipr.pk in unicontent(r))
def test_new_generic(self):
"""Add a new generic disclosure. Note: submitter does not need to be logged in.
@ -275,7 +275,7 @@ class IprTests(TestCase):
"notes": "some notes"
})
self.assertEqual(r.status_code, 200)
self.assertTrue("Your IPR disclosure has been submitted" in r.content)
self.assertTrue("Your IPR disclosure has been submitted" in unicontent(r))
self.assertEqual(len(outbox),1)
self.assertTrue('New IPR Submission' in outbox[0]['Subject'])
self.assertTrue('ietf-ipr@' in outbox[0]['To'])
@ -315,7 +315,7 @@ class IprTests(TestCase):
})
self.assertEqual(r.status_code, 200)
# print r.content
self.assertTrue("Your IPR disclosure has been submitted" in r.content)
self.assertTrue("Your IPR disclosure has been submitted" in unicontent(r))
iprs = IprDisclosureBase.objects.filter(title__icontains=draft.name)
self.assertEqual(len(iprs), 1)
@ -352,7 +352,7 @@ class IprTests(TestCase):
"submitter_email": "test@holder.com",
})
self.assertEqual(r.status_code, 200)
self.assertTrue("Your IPR disclosure has been submitted" in r.content)
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)
@ -391,7 +391,7 @@ class IprTests(TestCase):
"submitter_email": "test@holder.com",
})
self.assertEqual(r.status_code, 200)
self.assertTrue("Your IPR disclosure has been submitted" in r.content)
self.assertTrue("Your IPR disclosure has been submitted" in unicontent(r))
iprs = IprDisclosureBase.objects.filter(title__icontains=draft.name)
self.assertEqual(len(iprs), 1)
@ -422,10 +422,10 @@ class IprTests(TestCase):
# 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 r.content)
self.assertTrue('Private comment' in unicontent(r))
self.client.logout()
r = self.client.get(url)
self.assertFalse('Private comment' in r.content)
self.assertFalse('Private comment' in unicontent(r))
def test_addemail(self):
make_test_data()

View file

@ -8,7 +8,7 @@ from django.db.models import Q
from StringIO import StringIO
from pyquery import PyQuery
from ietf.utils.test_utils import TestCase, login_testing_unauthorized
from ietf.utils.test_utils import TestCase, login_testing_unauthorized, unicontent
from ietf.utils.test_data import make_test_data, create_person
from ietf.utils.mail import outbox
@ -113,7 +113,7 @@ class LiaisonTests(TestCase):
r = self.client.get(urlreverse('ietf.liaisons.views.liaison_list'))
self.assertEqual(r.status_code, 200)
self.assertTrue(liaison.title in r.content)
self.assertTrue(liaison.title in unicontent(r))
def test_details(self):
make_test_data()
@ -121,7 +121,7 @@ class LiaisonTests(TestCase):
r = self.client.get(urlreverse("ietf.liaisons.views.liaison_detail", kwargs={ 'object_id': liaison.pk }))
self.assertEqual(r.status_code, 200)
self.assertTrue(liaison.title in r.content)
self.assertTrue(liaison.title in unicontent(r))
def test_feeds(self):
make_test_data()
@ -129,19 +129,19 @@ class LiaisonTests(TestCase):
r = self.client.get('/feed/liaison/recent/')
self.assertEqual(r.status_code, 200)
self.assertTrue(liaison.title in r.content)
self.assertTrue(liaison.title in unicontent(r))
r = self.client.get('/feed/liaison/from/%s/' % liaison.from_groups.first().acronym)
self.assertEqual(r.status_code, 200)
self.assertTrue(liaison.title in r.content)
self.assertTrue(liaison.title in unicontent(r))
r = self.client.get('/feed/liaison/to/%s/' % liaison.to_groups.first().acronym)
self.assertEqual(r.status_code, 200)
self.assertTrue(liaison.title in r.content)
self.assertTrue(liaison.title in unicontent(r))
r = self.client.get('/feed/liaison/subject/marsmen/')
self.assertEqual(r.status_code, 200)
self.assertTrue(liaison.title in r.content)
self.assertTrue(liaison.title in unicontent(r))
def test_sitemap(self):
make_test_data()
@ -149,7 +149,7 @@ class LiaisonTests(TestCase):
r = self.client.get('/sitemap-liaison.xml')
self.assertEqual(r.status_code, 200)
self.assertTrue(urlreverse("ietf.liaisons.views.liaison_detail", kwargs={ 'object_id': liaison.pk }) in r.content)
self.assertTrue(urlreverse("ietf.liaisons.views.liaison_detail", kwargs={ 'object_id': liaison.pk }) in unicontent(r))
def test_help_pages(self):
self.assertEqual(self.client.get('/liaison/help/').status_code, 200)
@ -381,14 +381,14 @@ class LiaisonManagementTests(TestCase):
login_testing_unauthorized(self, "ad", url)
r = self.client.get(url)
self.assertEqual(r.status_code, 200)
self.assertTrue(liaison.title in r.content)
self.assertTrue(liaison.title in unicontent(r))
# check the detail page / unauthorized
url = urlreverse('ietf.liaisons.views.liaison_detail', kwargs=dict(object_id=liaison.pk))
self.client.logout()
r = self.client.get(url)
self.assertEqual(r.status_code, 200)
self.assertTrue(liaison.title in r.content)
self.assertTrue(liaison.title in unicontent(r))
q = PyQuery(r.content)
self.assertEqual(len(q('form input[name=approved]')), 0)
@ -396,7 +396,7 @@ class LiaisonManagementTests(TestCase):
self.client.login(username="ulm-liaiman", password="ulm-liaiman+password")
r = self.client.get(url)
self.assertEqual(r.status_code, 200)
self.assertTrue(liaison.title in r.content)
self.assertTrue(liaison.title in unicontent(r))
q = PyQuery(r.content)
from ietf.liaisons.utils import can_edit_liaison
user = User.objects.get(username='ulm-liaiman')
@ -1107,7 +1107,7 @@ class LiaisonManagementTests(TestCase):
r = self.client.post(url,get_liaison_post_data(),follow=True)
self.assertEqual(r.status_code, 200)
self.assertTrue('As an IETF Liaison Manager you can not send incoming liaison statements' in r.content)
self.assertTrue('As an IETF Liaison Manager you can not send incoming liaison statements' in unicontent(r))
def test_deadline_field(self):
'''Required for action, comment, not info, response'''
@ -1147,7 +1147,7 @@ class LiaisonManagementTests(TestCase):
r = self.client.post(url,post_data,follow=True)
self.assertEqual(r.status_code, 200)
self.assertTrue('You must provide a body or attachment files' in r.content)
self.assertTrue('You must provide a body or attachment files' in unicontent(r))
def test_send_sdo_reminder(self):
make_test_data()

View file

@ -84,7 +84,7 @@ def _find_person_in_emails(liaison, person):
def contacts_from_roles(roles):
'''Returns contact string for given roles'''
emails = [ '{} <{}>'.format(r.person.plain_name(),r.email.address) for r in roles ]
emails = [ u'{} <{}>'.format(r.person.plain_name(),r.email.address) for r in roles ]
return ','.join(emails)
def get_cc(group):
@ -104,17 +104,17 @@ def get_cc(group):
elif group.type_id == 'area':
emails.append(EMAIL_ALIASES['IETFCHAIR'])
ad_roles = group.role_set.filter(name='ad')
emails.extend([ '{} <{}>'.format(r.person.plain_name(),r.email.address) for r in ad_roles ])
emails.extend([ u'{} <{}>'.format(r.person.plain_name(),r.email.address) for r in ad_roles ])
elif group.type_id == 'wg':
ad_roles = group.parent.role_set.filter(name='ad')
emails.extend([ '{} <{}>'.format(r.person.plain_name(),r.email.address) for r in ad_roles ])
emails.extend([ u'{} <{}>'.format(r.person.plain_name(),r.email.address) for r in ad_roles ])
chair_roles = group.role_set.filter(name='chair')
emails.extend([ '{} <{}>'.format(r.person.plain_name(),r.email.address) for r in chair_roles ])
emails.extend([ u'{} <{}>'.format(r.person.plain_name(),r.email.address) for r in chair_roles ])
if group.list_email:
emails.append('{} Discussion List <{}>'.format(group.name,group.list_email))
emails.append(u'{} Discussion List <{}>'.format(group.name,group.list_email))
elif group.type_id == 'sdo':
liaiman_roles = group.role_set.filter(name='liaiman')
emails.extend([ '{} <{}>'.format(r.person.plain_name(),r.email.address) for r in liaiman_roles ])
emails.extend([ u'{} <{}>'.format(r.person.plain_name(),r.email.address) for r in liaiman_roles ])
# explicit CCs
if group.liaisonstatementgroupcontacts_set.exists() and group.liaisonstatementgroupcontacts_set.first().cc_contacts:

View file

@ -1,6 +1,6 @@
from django.core.urlresolvers import reverse as urlreverse
from ietf.utils.test_utils import TestCase
from ietf.utils.test_utils import TestCase, unicontent
from ietf.utils.test_data import make_test_data
class EventMailTests(TestCase):
@ -13,22 +13,22 @@ class EventMailTests(TestCase):
url = urlreverse('ietf.mailtrigger.views.show_triggers')
r = self.client.get(url)
self.assertEqual(r.status_code, 200)
self.assertTrue('ballot_saved' in r.content)
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 r.content)
self.assertTrue('ballot_saved' in unicontent(r))
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 r.content)
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 r.content)
self.assertTrue('doc_group_mail_list' in unicontent(r))

View file

@ -11,7 +11,7 @@ from pyquery import PyQuery
from ietf.doc.models import Document
from ietf.meeting.models import Session, TimeSlot
from ietf.meeting.test_data import make_meeting_test_data
from ietf.utils.test_utils import TestCase, login_testing_unauthorized
from ietf.utils.test_utils import TestCase, login_testing_unauthorized, unicontent
class MeetingTests(TestCase):
def setUp(self):
@ -97,9 +97,9 @@ class MeetingTests(TestCase):
self.assertTrue(session.group.parent.acronym.upper() in agenda_content)
self.assertTrue(slot.location.name in agenda_content)
self.assertTrue(session.materials.get(type='agenda').external_url in r.content)
self.assertTrue(session.materials.filter(type='slides').exclude(states__type__slug='slides',states__slug='deleted').first().external_url in r.content)
self.assertFalse(session.materials.filter(type='slides',states__type__slug='slides',states__slug='deleted').first().external_url in r.content)
self.assertTrue(session.materials.get(type='agenda').external_url in unicontent(r))
self.assertTrue(session.materials.filter(type='slides').exclude(states__type__slug='slides',states__slug='deleted').first().external_url in unicontent(r))
self.assertFalse(session.materials.filter(type='slides',states__type__slug='slides',states__slug='deleted').first().external_url in unicontent(r))
# iCal
r = self.client.get(urlreverse("ietf.meeting.views.ical_agenda", kwargs=dict(num=meeting.number))
@ -112,10 +112,10 @@ class MeetingTests(TestCase):
self.assertTrue("BEGIN:VTIMEZONE" in agenda_content)
self.assertTrue("END:VTIMEZONE" in agenda_content)
self.assertTrue(session.agenda().get_absolute_url() in r.content)
self.assertTrue(session.materials.filter(type='slides').exclude(states__type__slug='slides',states__slug='deleted').first().get_absolute_url() in r.content)
self.assertTrue(session.agenda().get_absolute_url() in unicontent(r))
self.assertTrue(session.materials.filter(type='slides').exclude(states__type__slug='slides',states__slug='deleted').first().get_absolute_url() in unicontent(r))
# TODO - the ics view uses .all on a queryset in a view so it's showing the deleted slides.
#self.assertFalse(session.materials.filter(type='slides',states__type__slug='slides',states__slug='deleted').first().get_absolute_url() in r.content)
#self.assertFalse(session.materials.filter(type='slides',states__type__slug='slides',states__slug='deleted').first().get_absolute_url() in unicontent(r))
# week view
r = self.client.get(urlreverse("ietf.meeting.views.week_view", kwargs=dict(num=meeting.number)))
@ -129,7 +129,7 @@ class MeetingTests(TestCase):
url = urlreverse("ietf.meeting.views.agenda_by_room",kwargs=dict(num=meeting.number))
login_testing_unauthorized(self,"secretary",url)
r = self.client.get(url)
self.assertTrue(all([x in r.content for x in ['mars','IESG Breakfast','Test Room','Breakfast Room']]))
self.assertTrue(all([x in unicontent(r) for x in ['mars','IESG Breakfast','Test Room','Breakfast Room']]))
def test_agenda_by_type(self):
meeting = make_meeting_test_data()
@ -137,31 +137,31 @@ class MeetingTests(TestCase):
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 r.content for x in ['mars','IESG Breakfast','Test Room','Breakfast Room']]))
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 r.content for x in ['mars','Test Room']]))
self.assertFalse(any([x in r.content for x in ['IESG Breakfast','Breakfast Room']]))
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 r.content for x in ['mars','Test Room']]))
self.assertTrue(all([x in r.content for x in ['IESG Breakfast','Breakfast Room']]))
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']]))
def test_agenda_room_view(self):
meeting = make_meeting_test_data()
url = urlreverse("ietf.meeting.views.room_view",kwargs=dict(num=meeting.number))
login_testing_unauthorized(self,"secretary",url)
r = self.client.get(url)
self.assertTrue(all([x in r.content for x in ['mars','IESG Breakfast','Test Room','Breakfast Room']]))
self.assertTrue(all([x in unicontent(r) for x in ['mars','IESG Breakfast','Test Room','Breakfast Room']]))
def test_session_details(self):
meeting = make_meeting_test_data()
url = urlreverse("ietf.meeting.views.session_details", kwargs=dict(num=meeting.number, acronym="mars"))
r = self.client.get(url)
self.assertTrue(all([x in r.content for x in ('slides','agenda','minutes')]))
self.assertFalse('deleted' in r.content)
self.assertTrue(all([x in unicontent(r) for x in ('slides','agenda','minutes')]))
self.assertFalse('deleted' in unicontent(r))
def test_materials(self):
meeting = make_meeting_test_data()
@ -173,7 +173,7 @@ class MeetingTests(TestCase):
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 r.content)
self.assertTrue("1. WG status" in unicontent(r))
# early materials page
r = self.client.get(urlreverse("ietf.meeting.views.current_materials"))
@ -198,8 +198,8 @@ class MeetingTests(TestCase):
r = self.client.get("/feed/wg-proceedings/")
self.assertEqual(r.status_code, 200)
self.assertTrue("agenda" in r.content)
self.assertTrue(session.group.acronym in r.content)
self.assertTrue("agenda" in unicontent(r))
self.assertTrue(session.group.acronym in unicontent(r))
class EditTests(TestCase):
def setUp(self):
@ -215,7 +215,7 @@ class EditTests(TestCase):
self.client.login(username="secretary", password="secretary+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 r.content)
self.assertTrue("load_assignments" in unicontent(r))
def test_save_agenda_as_and_read_permissions(self):
meeting = make_meeting_test_data()
@ -311,7 +311,7 @@ class EditTests(TestCase):
self.client.login(username="secretary", password="secretary+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 r.content)
self.assertTrue(meeting.room_set.all().first().name in unicontent(r))
def test_slot_to_the_right(self):
meeting = make_meeting_test_data()

View file

@ -2,7 +2,7 @@ import datetime
from django.core.urlresolvers import reverse as urlreverse
from ietf.utils.test_utils import TestCase
from ietf.utils.test_utils import TestCase, unicontent
from ietf.utils.test_data import make_test_data
from ietf.utils.mail import outbox
@ -28,10 +28,10 @@ class MessageTests(TestCase):
r = self.client.get(urlreverse("nomcom_announcement", kwargs=dict(message_id=msg.id)))
self.assertEqual(r.status_code, 200)
self.assertTrue(msg.subject in r.content)
self.assertTrue(msg.to in r.content)
self.assertTrue(msg.frm in r.content)
self.assertTrue("Hello World!" in r.content)
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))
class SendScheduledAnnouncementsTests(TestCase):

View file

@ -13,7 +13,7 @@ from django.contrib.auth.models import User
import debug # pyflakes:ignore
from ietf.utils.test_utils import login_testing_unauthorized, TestCase
from ietf.utils.test_utils import login_testing_unauthorized, TestCase, unicontent
from ietf.utils.mail import outbox, empty_outbox
from ietf.person.models import Email, Person
@ -449,9 +449,9 @@ class NomcomViewsTest(TestCase):
r = self.client.get(reverse('ietf.nomcom.views.announcements'))
self.assertEqual(r.status_code, 200)
self.assertTrue(("Messages from %s" % nomcom.time.year) in r.content)
self.assertTrue(nomcom.role_set.filter(name="chair")[0].person.email_address() in r.content)
self.assertTrue(msg.subject in r.content)
self.assertTrue(("Messages from %s" % nomcom.time.year) in unicontent(r))
self.assertTrue(nomcom.role_set.filter(name="chair")[0].person.email_address() in unicontent(r))
self.assertTrue(msg.subject in unicontent(r))
def test_requirements_view(self):

View file

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
from django.core.urlresolvers import reverse
from ietf.utils.test_utils import TestCase
from ietf.group.models import Group
@ -89,7 +90,7 @@ class GroupsTest(TestCase):
make_test_data()
group = Group.objects.filter(acronym='mars')[0]
area = Group.objects.filter(acronym='farfut')[0]
ad = Person.objects.get(name='Aread Irector')
ad = Person.objects.get(name='Areað Irector')
url = reverse('groups_edit', kwargs={'acronym':group.acronym})
target = reverse('groups_view', kwargs={'acronym':group.acronym})
post_data = {'acronym':group.acronym,
@ -120,7 +121,7 @@ class GroupsTest(TestCase):
def test_people_add(self):
make_test_data()
person = Person.objects.get(name='Aread Irector')
person = Person.objects.get(name='Areað Irector')
group = Group.objects.filter(acronym='mars')[0]
url = reverse('groups_people', kwargs={'acronym':group.acronym})
post_data = {'name':'chair',

View file

@ -12,7 +12,7 @@ from ietf.group.models import Group
from ietf.meeting.models import Meeting, Session
from ietf.meeting.test_data import make_meeting_test_data
from ietf.utils.test_data import make_test_data
from ietf.utils.test_utils import TestCase
from ietf.utils.test_utils import TestCase, unicontent
from ietf.name.models import SessionStatusName
from ietf.secr.utils.meeting import get_proceedings_path
@ -90,12 +90,12 @@ class BluesheetTestCase(TestCase):
dict(acronym='mars',meeting_id=meeting.id,material_type='bluesheets',file=upfile),follow=True)
self.assertEqual(r.status_code, 200)
doc = Document.objects.get(type='bluesheets')
self.failUnless(doc.external_url in r.content)
self.failUnless(doc.external_url in unicontent(r))
self.failUnless(os.path.exists(os.path.join(doc.get_file_path(),doc.external_url)))
# test that proceedings has bluesheets on it
path = get_proceedings_path(meeting,group)
self.failUnless(os.path.exists(path))
with open(path) as f:
data = f.read()
self.failUnless(doc.external_url in data)
self.failUnless(doc.external_url.encode('utf-8') in data)

View file

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
from django.core.urlresolvers import reverse
from ietf.utils.test_utils import TestCase
@ -37,7 +38,7 @@ class MainTestCase(TestCase):
def test_roles_add(self):
make_test_data()
augment_data()
person = Person.objects.get(name='Aread Irector')
person = Person.objects.get(name='Areað Irector')
group = Group.objects.filter(acronym='mars')[0]
url = reverse('roles')
target = reverse('roles') + '?group=%s' % group.acronym

View file

@ -1,6 +1,6 @@
from django.core.urlresolvers import reverse
from ietf.utils.test_utils import TestCase
from ietf.utils.test_utils import TestCase, unicontent
from ietf.group.models import Group
#from ietf.meeting.models import Session
#from ietf.utils.test_data import make_test_data
@ -67,7 +67,7 @@ class SubmitRequestCase(TestCase):
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 r.content)
self.assertTrue('You must enter a length for all sessions' in unicontent(r))
class LockAppTestCase(TestCase):
def test_edit_request(self):
@ -136,11 +136,11 @@ class NotMeetingCase(TestCase):
# 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 r.content)
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 r.content)
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'])

View file

@ -11,7 +11,7 @@ from pyquery import PyQuery
import debug # pyflakes:ignore
from ietf.utils.test_utils import login_testing_unauthorized
from ietf.utils.test_utils import login_testing_unauthorized, unicontent
from ietf.utils.test_data import make_test_data
from ietf.utils.mail import outbox
from ietf.utils.test_utils import TestCase
@ -279,7 +279,7 @@ class SubmitTests(TestCase):
status_url = r["Location"]
r = self.client.get(status_url)
self.assertEqual(r.status_code, 200)
self.assertTrue("The submission is pending approval by the authors" in r.content)
self.assertTrue("The submission is pending approval by the authors" in unicontent(r))
self.assertEqual(len(outbox), mailbox_before + 1)
confirm_email = outbox[-1]
@ -361,7 +361,7 @@ class SubmitTests(TestCase):
status_url = r["Location"]
r = self.client.get(status_url)
self.assertEqual(r.status_code, 200)
self.assertTrue("The submission is pending email authentication" in r.content)
self.assertTrue("The submission is pending email authentication" in unicontent(r))
self.assertEqual(len(outbox), mailbox_before + 1)
confirm_email = outbox[-1]
@ -408,16 +408,16 @@ class SubmitTests(TestCase):
replaced_alias = draft.docalias_set.first()
r = self.supply_extra_metadata(name, status_url, "Submitter Name", "author@example.com", replaces=str(replaced_alias.pk))
self.assertEqual(r.status_code, 200)
self.assertTrue('cannot replace itself' in r.content)
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", "author@example.com", replaces=str(replaced_alias.pk))
self.assertEqual(r.status_code, 200)
self.assertTrue('cannot replace an RFC' in r.content)
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", "author@example.com", replaces=str(replaced_alias.pk))
self.assertEqual(r.status_code, 200)
self.assertTrue('approved by the IESG and cannot' in r.content)
self.assertTrue('approved by the IESG and cannot' in unicontent(r))
r = self.supply_extra_metadata(name, status_url, "Submitter Name", "author@example.com", replaces='')
self.assertEqual(r.status_code, 302)
status_url = r["Location"]
@ -587,7 +587,7 @@ class SubmitTests(TestCase):
# search status page
r = self.client.get(urlreverse("submit_search_submission"))
self.assertEqual(r.status_code, 200)
self.assertTrue("submission status" in r.content)
self.assertTrue("submission status" in unicontent(r))
# search
r = self.client.post(urlreverse("submit_search_submission"), dict(name=name))
@ -597,7 +597,7 @@ class SubmitTests(TestCase):
# status page as unpriviliged => no edit button
r = self.client.get(unprivileged_status_url)
self.assertEqual(r.status_code, 200)
self.assertTrue(("submission status of %s" % name) in r.content.lower())
self.assertTrue(("submission status of %s" % name) in unicontent(r).lower())
q = PyQuery(r.content)
adjust_button = q('[type=submit]:contains("Adjust")')
self.assertEqual(len(adjust_button), 0)

View file

@ -14,7 +14,7 @@ from ietf.person.models import Person
from ietf.sync import iana, rfceditor
from ietf.utils.mail import outbox, empty_outbox
from ietf.utils.test_data import make_test_data
from ietf.utils.test_utils import login_testing_unauthorized
from ietf.utils.test_utils import login_testing_unauthorized, unicontent
from ietf.utils.test_utils import TestCase
@ -202,7 +202,7 @@ ICANN
login_testing_unauthorized(self, "secretary", url)
r = self.client.get(url)
self.assertEqual(r.status_code, 200)
self.assertTrue("new changes at" in r.content)
self.assertTrue("new changes at" in unicontent(r))
# we don't actually try posting as that would trigger a real run
@ -427,7 +427,7 @@ class DiscrepanciesTests(TestCase):
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 r.content)
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")
@ -436,7 +436,7 @@ class DiscrepanciesTests(TestCase):
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 r.content)
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
@ -446,7 +446,7 @@ class DiscrepanciesTests(TestCase):
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 r.content)
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
@ -455,7 +455,7 @@ class DiscrepanciesTests(TestCase):
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 r.content)
self.assertTrue(doc.name in unicontent(r))
class RFCEditorUndoTests(TestCase):
def test_rfceditor_undo(self):
@ -477,7 +477,7 @@ class RFCEditorUndoTests(TestCase):
# get
r = self.client.get(url)
self.assertEqual(r.status_code, 200)
self.assertTrue(e2.doc_id in r.content)
self.assertTrue(e2.doc_id in unicontent(r))
# delete e2
deleted_before = DeletedEvent.objects.count()

View file

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
import datetime
from django.conf import settings
@ -75,7 +76,7 @@ def make_immutable_base_data():
create_person(iepg, "chair")
iana = create_group(name="IANA", acronym="iana", type_id="ietf")
create_person(iana, "auth", name="Ina Iana", username="iana", email_address="iana@ia.na")
create_person(iana, "auth", name="Iña Iana", username="iana", email_address="iana@ia.na")
rfc_editor = create_group(name="RFC Editor", acronym="rfceditor", type_id="rfcedtyp")
create_person(rfc_editor, "auth", name="Rfc Editor", username="rfc", email_address="rfc@edit.or")
@ -86,7 +87,7 @@ def make_immutable_base_data():
# one area
area = create_group(name="Far Future", acronym="farfut", type_id="area", parent=ietf)
create_person(area, "ad", name="Aread Irector", username="ad", email_address="aread@ietf.org")
create_person(area, "ad", name="Areað Irector", username="ad", email_address="aread@ietf.org")
# create a bunch of ads for swarm tests
for i in range(1, 10):
@ -173,13 +174,13 @@ def make_test_data():
email = Email.objects.create(address="plain@example.com", person=plainman)
# group personnel
create_person(mars_wg, "chair", name="WG Chair Man", username="marschairman")
create_person(mars_wg, "delegate", name="WG Delegate", username="marsdelegate")
create_person(mars_wg, "chair", name="WG Cháir Man", username="marschairman")
create_person(mars_wg, "delegate", name="WG Dèlegate", username="marsdelegate")
mars_wg.role_set.get_or_create(name_id='ad',person=ad,email=ad.role_email('ad'))
mars_wg.save()
create_person(ames_wg, "chair", name="WG Chair Man", username="ameschairman")
create_person(ames_wg, "delegate", name="WG Delegate", username="amesdelegate")
create_person(ames_wg, "chair", name="WG Cháir Man", username="ameschairman")
create_person(ames_wg, "delegate", name="WG Dèlegate", username="amesdelegate")
ames_wg.role_set.get_or_create(name_id='ad',person=ad,email=ad.role_email('ad'))
ames_wg.save()

View file

@ -262,6 +262,16 @@ def login_testing_unauthorized(test_case, username, url, password=None):
password = username + "+password"
return test_case.client.login(username=username, password=password)
def unicontent(r):
"Return a HttpResponse object's content as unicode"
content_type = r._headers.get("content-type", "text/html; charset=utf-8")
if 'charset=' in content_type:
mediatype, charset = content_type.split(';')
encoding = charset.split('=')[1].strip()
else:
encoding = 'utf-8'
return r.content.decode(encoding)
class ReverseLazyTest(django.test.TestCase):
def test_redirect_with_lazy_reverse(self):
response = self.client.get('/ipr/update/')