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: if debug:
frame = inspect.stack()[1][0] frame = inspect.stack()[1][0]
value = eval(name, frame.f_globals, frame.f_locals) value = eval(name, frame.f_globals, frame.f_locals)
vtype = eval("type(%s)"%name, frame.f_globals, frame.f_locals)
indent = ' ' * (_report_indent[0]) 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.person.models import Person
from ietf.utils.mail import outbox from ietf.utils.mail import outbox
from ietf.utils.test_data import make_test_data 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 from ietf.utils.test_utils import TestCase
class SearchTests(TestCase): class SearchTests(TestCase):
@ -46,68 +46,68 @@ class SearchTests(TestCase):
r = self.client.get(base_url + "?rfcs=on&name=xyzzy") r = self.client.get(base_url + "?rfcs=on&name=xyzzy")
self.assertEqual(r.status_code, 200) 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") r = self.client.get(base_url + "?olddrafts=on&name=bar")
self.assertEqual(r.status_code, 200) 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") r = self.client.get(base_url + "?olddrafts=on&name=foo")
self.assertEqual(r.status_code, 200) 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 # find by rfc/active/inactive
draft.set_state(State.objects.get(type="draft", slug="rfc")) draft.set_state(State.objects.get(type="draft", slug="rfc"))
r = self.client.get(base_url + "?rfcs=on&name=%s" % draft.name) r = self.client.get(base_url + "?rfcs=on&name=%s" % draft.name)
self.assertEqual(r.status_code, 200) 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")) draft.set_state(State.objects.get(type="draft", slug="active"))
r = self.client.get(base_url + "?activedrafts=on&name=%s" % draft.name) r = self.client.get(base_url + "?activedrafts=on&name=%s" % draft.name)
self.assertEqual(r.status_code, 200) 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")) draft.set_state(State.objects.get(type="draft", slug="expired"))
r = self.client.get(base_url + "?olddrafts=on&name=%s" % draft.name) r = self.client.get(base_url + "?olddrafts=on&name=%s" % draft.name)
self.assertEqual(r.status_code, 200) 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")) draft.set_state(State.objects.get(type="draft", slug="active"))
# find by title # find by title
r = self.client.get(base_url + "?activedrafts=on&name=%s" % draft.title.split()[0]) r = self.client.get(base_url + "?activedrafts=on&name=%s" % draft.title.split()[0])
self.assertEqual(r.status_code, 200) self.assertEqual(r.status_code, 200)
self.assertTrue(draft.title in r.content) self.assertTrue(draft.title in unicontent(r))
# find by author # find by author
r = self.client.get(base_url + "?activedrafts=on&by=author&author=%s" % draft.authors.all()[0].person.name_parts()[1]) 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.assertEqual(r.status_code, 200)
self.assertTrue(draft.title in r.content) self.assertTrue(draft.title in unicontent(r))
# find by group # find by group
r = self.client.get(base_url + "?activedrafts=on&by=group&group=%s" % draft.group.acronym) r = self.client.get(base_url + "?activedrafts=on&by=group&group=%s" % draft.group.acronym)
self.assertEqual(r.status_code, 200) self.assertEqual(r.status_code, 200)
self.assertTrue(draft.title in r.content) self.assertTrue(draft.title in unicontent(r))
# find by area # find by area
r = self.client.get(base_url + "?activedrafts=on&by=area&area=%s" % draft.group.parent_id) r = self.client.get(base_url + "?activedrafts=on&by=area&area=%s" % draft.group.parent_id)
self.assertEqual(r.status_code, 200) self.assertEqual(r.status_code, 200)
self.assertTrue(draft.title in r.content) self.assertTrue(draft.title in unicontent(r))
# find by area # find by area
r = self.client.get(base_url + "?activedrafts=on&by=area&area=%s" % draft.group.parent_id) r = self.client.get(base_url + "?activedrafts=on&by=area&area=%s" % draft.group.parent_id)
self.assertEqual(r.status_code, 200) self.assertEqual(r.status_code, 200)
self.assertTrue(draft.title in r.content) self.assertTrue(draft.title in unicontent(r))
# find by AD # find by AD
r = self.client.get(base_url + "?activedrafts=on&by=ad&ad=%s" % draft.ad_id) r = self.client.get(base_url + "?activedrafts=on&by=ad&ad=%s" % draft.ad_id)
self.assertEqual(r.status_code, 200) self.assertEqual(r.status_code, 200)
self.assertTrue(draft.title in r.content) self.assertTrue(draft.title in unicontent(r))
# find by IESG state # find by IESG state
r = self.client.get(base_url + "?activedrafts=on&by=state&state=%s&substate=" % draft.get_state("draft-iesg").pk) 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.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): def test_search_for_name(self):
draft = make_test_data() draft = make_test_data()
@ -189,30 +189,30 @@ class SearchTests(TestCase):
make_test_data() make_test_data()
r = self.client.get("/") r = self.client.get("/")
self.assertEqual(r.status_code, 200) 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): def test_drafts_pages(self):
draft = make_test_data() draft = make_test_data()
r = self.client.get(urlreverse("docs_for_ad", kwargs=dict(name=draft.ad.full_name_as_key()))) r = self.client.get(urlreverse("docs_for_ad", kwargs=dict(name=draft.ad.full_name_as_key())))
self.assertEqual(r.status_code, 200) 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")) draft.set_state(State.objects.get(type="draft-iesg", slug="lc"))
r = self.client.get(urlreverse("drafts_in_last_call")) r = self.client.get(urlreverse("drafts_in_last_call"))
self.assertEqual(r.status_code, 200) self.assertEqual(r.status_code, 200)
self.assertTrue(draft.title in r.content) self.assertTrue(draft.title in unicontent(r))
def test_indexes(self): def test_indexes(self):
draft = make_test_data() draft = make_test_data()
r = self.client.get(urlreverse("index_all_drafts")) r = self.client.get(urlreverse("index_all_drafts"))
self.assertEqual(r.status_code, 200) 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")) r = self.client.get(urlreverse("index_active_drafts"))
self.assertEqual(r.status_code, 200) 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): def test_ajax_search_docs(self):
draft = make_test_data() 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))) r = self.client.get(urlreverse("doc_view", kwargs=dict(name=draft.name)))
self.assertEqual(r.status_code, 200) self.assertEqual(r.status_code, 200)
self.assertTrue("Active Internet-Draft" in r.content) self.assertTrue("Active Internet-Draft" in unicontent(r))
self.assertTrue("Show full document text" in r.content) self.assertTrue("Show full document text" in unicontent(r))
self.assertFalse("Deimos street" in r.content) self.assertFalse("Deimos street" in unicontent(r))
r = self.client.get(urlreverse("doc_view", kwargs=dict(name=draft.name)) + "?include_text=0") r = self.client.get(urlreverse("doc_view", kwargs=dict(name=draft.name)) + "?include_text=0")
self.assertEqual(r.status_code, 200) self.assertEqual(r.status_code, 200)
self.assertTrue("Active Internet-Draft" in r.content) self.assertTrue("Active Internet-Draft" in unicontent(r))
self.assertFalse("Show full document text" in r.content) self.assertFalse("Show full document text" in unicontent(r))
self.assertTrue("Deimos street" in r.content) self.assertTrue("Deimos street" in unicontent(r))
r = self.client.get(urlreverse("doc_view", kwargs=dict(name=draft.name)) + "?include_text=foo") r = self.client.get(urlreverse("doc_view", kwargs=dict(name=draft.name)) + "?include_text=foo")
self.assertEqual(r.status_code, 200) self.assertEqual(r.status_code, 200)
self.assertTrue("Active Internet-Draft" in r.content) self.assertTrue("Active Internet-Draft" in unicontent(r))
self.assertFalse("Show full document text" in r.content) self.assertFalse("Show full document text" in unicontent(r))
self.assertTrue("Deimos street" in r.content) self.assertTrue("Deimos street" in unicontent(r))
r = self.client.get(urlreverse("doc_view", kwargs=dict(name=draft.name)) + "?include_text=1") r = self.client.get(urlreverse("doc_view", kwargs=dict(name=draft.name)) + "?include_text=1")
self.assertEqual(r.status_code, 200) self.assertEqual(r.status_code, 200)
self.assertTrue("Active Internet-Draft" in r.content) self.assertTrue("Active Internet-Draft" in unicontent(r))
self.assertFalse("Show full document text" in r.content) self.assertFalse("Show full document text" in unicontent(r))
self.assertTrue("Deimos street" in r.content) self.assertTrue("Deimos street" in unicontent(r))
self.client.cookies = SimpleCookie({'full_draft': 'on'}) self.client.cookies = SimpleCookie({'full_draft': 'on'})
r = self.client.get(urlreverse("doc_view", kwargs=dict(name=draft.name))) r = self.client.get(urlreverse("doc_view", kwargs=dict(name=draft.name)))
self.assertEqual(r.status_code, 200) self.assertEqual(r.status_code, 200)
self.assertTrue("Active Internet-Draft" in r.content) self.assertTrue("Active Internet-Draft" in unicontent(r))
self.assertFalse("Show full document text" in r.content) self.assertFalse("Show full document text" in unicontent(r))
self.assertTrue("Deimos street" in r.content) self.assertTrue("Deimos street" in unicontent(r))
self.client.cookies = SimpleCookie({'full_draft': 'off'}) self.client.cookies = SimpleCookie({'full_draft': 'off'})
r = self.client.get(urlreverse("doc_view", kwargs=dict(name=draft.name))) r = self.client.get(urlreverse("doc_view", kwargs=dict(name=draft.name)))
self.assertEqual(r.status_code, 200) self.assertEqual(r.status_code, 200)
self.assertTrue("Active Internet-Draft" in r.content) self.assertTrue("Active Internet-Draft" in unicontent(r))
self.assertTrue("Show full document text" in r.content) self.assertTrue("Show full document text" in unicontent(r))
self.assertFalse("Deimos street" in r.content) self.assertFalse("Deimos street" in unicontent(r))
self.client.cookies = SimpleCookie({'full_draft': 'foo'}) self.client.cookies = SimpleCookie({'full_draft': 'foo'})
r = self.client.get(urlreverse("doc_view", kwargs=dict(name=draft.name))) r = self.client.get(urlreverse("doc_view", kwargs=dict(name=draft.name)))
self.assertEqual(r.status_code, 200) self.assertEqual(r.status_code, 200)
self.assertTrue("Active Internet-Draft" in r.content) self.assertTrue("Active Internet-Draft" in unicontent(r))
self.assertTrue("Show full document text" in r.content) self.assertTrue("Show full document text" in unicontent(r))
self.assertFalse("Deimos street" in r.content) self.assertFalse("Deimos street" in unicontent(r))
# expired draft # expired draft
draft.set_state(State.objects.get(type="draft", slug="expired")) draft.set_state(State.objects.get(type="draft", slug="expired"))
r = self.client.get(urlreverse("doc_view", kwargs=dict(name=draft.name))) r = self.client.get(urlreverse("doc_view", kwargs=dict(name=draft.name)))
self.assertEqual(r.status_code, 200) self.assertEqual(r.status_code, 200)
self.assertTrue("Expired Internet-Draft" in r.content) self.assertTrue("Expired Internet-Draft" in unicontent(r))
# replaced draft # replaced draft
draft.set_state(State.objects.get(type="draft", slug="repl")) 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))) r = self.client.get(urlreverse("doc_view", kwargs=dict(name=draft.name)))
self.assertEqual(r.status_code, 200) self.assertEqual(r.status_code, 200)
self.assertTrue("Replaced Internet-Draft" in r.content) self.assertTrue("Replaced Internet-Draft" in unicontent(r))
self.assertTrue(replacement.name in r.content) self.assertTrue(replacement.name in unicontent(r))
rel.delete() rel.delete()
# draft published as RFC # 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))) r = self.client.get(urlreverse("doc_view", kwargs=dict(name=rfc_alias.name)))
self.assertEqual(r.status_code, 200) self.assertEqual(r.status_code, 200)
self.assertTrue("RFC 123456" in r.content) self.assertTrue("RFC 123456" in unicontent(r))
self.assertTrue(draft.name in r.content) self.assertTrue(draft.name in unicontent(r))
# naked RFC # naked RFC
rfc = Document.objects.create( rfc = Document.objects.create(
@ -541,7 +541,7 @@ Man Expires September 22, 2015 [Page 3]
DocAlias.objects.create(name=rfc.name, document=rfc) DocAlias.objects.create(name=rfc.name, document=rfc)
r = self.client.get(urlreverse("doc_view", kwargs=dict(name=rfc.name))) r = self.client.get(urlreverse("doc_view", kwargs=dict(name=rfc.name)))
self.assertEqual(r.status_code, 200) self.assertEqual(r.status_code, 200)
self.assertTrue("RFC 1234567" in r.content) self.assertTrue("RFC 1234567" in unicontent(r))
# unknown draft # unknown draft
r = self.client.get(urlreverse("doc_view", kwargs=dict(name="draft-xyz123"))) 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))) r = self.client.get(urlreverse("doc_view", kwargs=dict(name=doc.name)))
self.assertEqual(r.status_code, 200) 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"))) r = self.client.get(urlreverse("doc_view", kwargs=dict(name=doc.name,rev="01")))
self.assertEqual(r.status_code, 302) self.assertEqual(r.status_code, 302)
r = self.client.get(urlreverse("doc_view", kwargs=dict(name=doc.name,rev="00"))) r = self.client.get(urlreverse("doc_view", kwargs=dict(name=doc.name,rev="00")))
self.assertEqual(r.status_code, 200) 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): class DocTestCase(TestCase):
def test_document_charter(self): 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))) r = self.client.get(urlreverse("ietf.doc.views_doc.document_ballot", kwargs=dict(name=doc.name)))
self.assertEqual(r.status_code, 200) self.assertEqual(r.status_code, 200)
self.assertTrue(pos.comment in r.content) self.assertTrue(pos.comment in unicontent(r))
# test with ballot_id # test with ballot_id
r = self.client.get(urlreverse("ietf.doc.views_doc.document_ballot", kwargs=dict(name=doc.name, ballot_id=ballot.pk))) 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.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 # 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))) 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() doc.save()
r = self.client.get(urlreverse("ietf.doc.views_doc.document_ballot", kwargs=dict(name=doc.name))) r = self.client.get(urlreverse("ietf.doc.views_doc.document_ballot", kwargs=dict(name=doc.name)))
self.assertEqual(r.status_code, 200) 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): def test_document_ballot_needed_positions(self):
make_test_data() make_test_data()
@ -661,10 +661,10 @@ class DocTestCase(TestCase):
# draft # draft
doc = Document.objects.get(name='draft-ietf-mars-test') 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))) 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') 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))) 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 # status change
doc = Document.objects.get(name='status-change-imaginary-mid-review') 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)) 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) self.assertEqual(r.status_code, 302)
r = self.client.get(r._headers["location"][1]) 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') 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))) 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('Needs a YES' in unicontent(r))
self.assertFalse('more YES or NO' in r.content) self.assertFalse('more YES or NO' in unicontent(r))
doc.relateddocument_set.create(target=DocAlias.objects.get(name='rfc9999'),relationship_id='tois') 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))) 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): def test_document_json(self):
doc = make_test_data() doc = make_test_data()
@ -710,8 +710,8 @@ class DocTestCase(TestCase):
url = urlreverse('doc_writeup', kwargs=dict(name=doc.name)) url = urlreverse('doc_writeup', kwargs=dict(name=doc.name))
r = self.client.get(url) r = self.client.get(url)
self.assertEqual(r.status_code, 200) self.assertEqual(r.status_code, 200)
self.assertTrue(appr.text in r.content) self.assertTrue(appr.text in unicontent(r))
self.assertTrue(notes.text in r.content) self.assertTrue(notes.text in unicontent(r))
def test_history(self): def test_history(self):
doc = make_test_data() doc = make_test_data()
@ -725,7 +725,7 @@ class DocTestCase(TestCase):
url = urlreverse('doc_history', kwargs=dict(name=doc.name)) url = urlreverse('doc_history', kwargs=dict(name=doc.name))
r = self.client.get(url) r = self.client.get(url)
self.assertEqual(r.status_code, 200) 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): def test_document_feed(self):
doc = make_test_data() doc = make_test_data()
@ -738,7 +738,7 @@ class DocTestCase(TestCase):
r = self.client.get("/feed/document-changes/%s/" % doc.name) r = self.client.get("/feed/document-changes/%s/" % doc.name)
self.assertEqual(r.status_code, 200) 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): def test_last_call_feed(self):
doc = make_test_data() doc = make_test_data()
@ -754,7 +754,7 @@ class DocTestCase(TestCase):
r = self.client.get("/feed/last-call/") r = self.client.get("/feed/last-call/")
self.assertEqual(r.status_code, 200) 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): def test_rfc_feed(self):
make_test_data() make_test_data()
@ -765,7 +765,7 @@ class DocTestCase(TestCase):
url = urlreverse('state_help', kwargs=dict(type="draft-iesg")) url = urlreverse('state_help', kwargs=dict(type="draft-iesg"))
r = self.client.get(url) r = self.client.get(url)
self.assertEqual(r.status_code, 200) 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): def test_document_nonietf_pubreq_button(self):
doc = make_test_data() doc = make_test_data()
@ -773,12 +773,12 @@ class DocTestCase(TestCase):
self.client.login(username='iab-chair', password='iab-chair+password') self.client.login(username='iab-chair', password='iab-chair+password')
r = self.client.get(urlreverse("doc_view", kwargs=dict(name=doc.name))) r = self.client.get(urlreverse("doc_view", kwargs=dict(name=doc.name)))
self.assertEqual(r.status_code, 200) 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') Document.objects.filter(pk=doc.pk).update(stream='iab')
r = self.client.get(urlreverse("doc_view", kwargs=dict(name=doc.name))) r = self.client.get(urlreverse("doc_view", kwargs=dict(name=doc.name)))
self.assertEqual(r.status_code, 200) self.assertEqual(r.status_code, 200)
self.assertTrue("Request publication" in r.content) self.assertTrue("Request publication" in unicontent(r))
class AddCommentTestCase(TestCase): class AddCommentTestCase(TestCase):
@ -835,11 +835,11 @@ class ReferencesTest(TestCase):
url = urlreverse('doc_references', kwargs=dict(name=doc1.name)) url = urlreverse('doc_references', kwargs=dict(name=doc1.name))
r = self.client.get(url) r = self.client.get(url)
self.assertEquals(r.status_code, 200) 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)) url = urlreverse('doc_referenced_by', kwargs=dict(name=doc2.name))
r = self.client.get(url) r = self.client.get(url)
self.assertEquals(r.status_code, 200) self.assertEquals(r.status_code, 200)
self.assertTrue(doc1.name in r.content) self.assertTrue(doc1.name in unicontent(r))
class EmailAliasesTests(TestCase): 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) login_testing_unauthorized(self, "plain", url)
r = self.client.get(url) r = self.client.get(url)
self.assertEqual(r.status_code, 200) 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 unicontent(r) 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 ['ames-test@','ames-test.authors@','ames-test.chairs@']]))
def testExpansions(self): def testExpansions(self):
url = urlreverse('ietf.doc.views_doc.document_email', kwargs=dict(name="draft-ietf-mars-test")) url = urlreverse('ietf.doc.views_doc.document_email', kwargs=dict(name="draft-ietf-mars-test"))
r = self.client.get(url) r = self.client.get(url)
self.assertEqual(r.status_code, 200) self.assertEqual(r.status_code, 200)
self.assertTrue('draft-ietf-mars-test.all@ietf.org' in r.content) self.assertTrue('draft-ietf-mars-test.all@ietf.org' in unicontent(r))
self.assertTrue('ballot_saved' in r.content) self.assertTrue('ballot_saved' in unicontent(r))

View file

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

View file

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
# Copyright The IETF Trust 2011, All Rights Reserved # Copyright The IETF Trust 2011, All Rights Reserved
import os, shutil, datetime 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.group.models import Group, GroupMilestone
from ietf.iesg.models import TelechatDate from ietf.iesg.models import TelechatDate
from ietf.person.models import Person 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.mail import outbox, empty_outbox
from ietf.utils.test_data import make_test_data 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
@ -252,7 +253,7 @@ class EditCharterTests(TestCase):
r = self.client.post(url, dict(txt=test_file)) r = self.client.post(url, dict(txt=test_file))
self.assertEqual(r.status_code, 200) 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 # post
prev_rev = charter.rev 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: 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.") f.write("This is a charter.")
p = Person.objects.get(name="Aread Irector") p = Person.objects.get(name="Areað Irector")
BallotDocEvent.objects.create( BallotDocEvent.objects.create(
type="created_ballot", type="created_ballot",
@ -504,4 +505,4 @@ class EditCharterTests(TestCase):
url = urlreverse('charter_with_milestones_txt', kwargs=dict(name=charter.name, rev=charter.rev)) url = urlreverse('charter_with_milestones_txt', kwargs=dict(name=charter.name, rev=charter.rev))
r = self.client.get(url) r = self.client.get(url)
self.assertEqual(r.status_code, 200) 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 os
import shutil import shutil
@ -14,7 +15,7 @@ from ietf.doc.views_conflict_review import default_approval_text
from ietf.group.models import Person from ietf.group.models import Person
from ietf.iesg.models import TelechatDate from ietf.iesg.models import TelechatDate
from ietf.name.models import StreamName 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.mail import outbox, empty_outbox
from ietf.utils.test_data import make_test_data 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
@ -55,14 +56,14 @@ class ConflictReviewTests(TestCase):
self.assertEqual(Document.objects.filter(name='conflict-review-imaginary-independent-submission').count() , 0) self.assertEqual(Document.objects.filter(name='conflict-review-imaginary-independent-submission').count() , 0)
# successful review start # 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) 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')) r = self.client.post(url,dict(ad=ad_strpk,create_in_state=state_strpk,notify='ipu@ietf.org'))
self.assertEqual(r.status_code, 302) self.assertEqual(r.status_code, 302)
review_doc = Document.objects.get(name='conflict-review-imaginary-independent-submission') review_doc = Document.objects.get(name='conflict-review-imaginary-independent-submission')
self.assertEqual(review_doc.get_state('conflrev').slug,'needshep') self.assertEqual(review_doc.get_state('conflrev').slug,'needshep')
self.assertEqual(review_doc.rev,u'00') 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') self.assertEqual(review_doc.notify,u'ipu@ietf.org')
doc = Document.objects.get(name='draft-imaginary-independent-submission') 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')]) 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']) self.assertTrue('Conflict Review requested' in outbox[-1]['Subject'])
# verify you can't start a review when a review is already in progress # 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) self.assertEqual(r.status_code, 404)
@ -365,7 +366,7 @@ class ConflictReviewSubmitTests(TestCase):
test_file.name = "unnamed" test_file.name = "unnamed"
r = self.client.post(url, dict(txt=test_file,submit_response="1")) r = self.client.post(url, dict(txt=test_file,submit_response="1"))
self.assertEqual(r.status_code, 200) 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 # sane post uploading a file
test_file = StringIO("This is a new proposal.") test_file = StringIO("This is a new proposal.")

View file

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
import os import os
import shutil import shutil
import datetime import datetime
@ -18,7 +19,7 @@ from ietf.group.models import Group
from ietf.person.models import Person, Email from ietf.person.models import Person, Email
from ietf.meeting.models import Meeting, MeetingTypeName from ietf.meeting.models import Meeting, MeetingTypeName
from ietf.iesg.models import TelechatDate 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.test_data import make_test_data
from ietf.utils.mail import outbox, empty_outbox from ietf.utils.mail import outbox, empty_outbox
from ietf.utils.test_utils import TestCase 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")) 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)) 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 # last call text
e = draft.latest_event(WriteupDocEvent, type="changed_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() events_before = draft.docevent_set.count()
mailbox_before = len(outbox) mailbox_before = len(outbox)
ad = Person.objects.get(name="Aread Irector") ad = Person.objects.get(name="Areað Irector")
r = self.client.post(url, r = self.client.post(url,
dict(intended_std_level=str(draft.intended_std_level_id), 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) self.assertEqual(draft.docevent_set.count(), events_before + 1)
e = draft.latest_event(type="requested_resurrect") e = draft.latest_event(type="requested_resurrect")
self.assertTrue(e) 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.assertTrue("Resurrection" in e.desc)
self.assertEqual(len(outbox), mailbox_before + 1) self.assertEqual(len(outbox), mailbox_before + 1)
self.assertTrue("Resurrection" in outbox[-1]['Subject']) self.assertTrue("Resurrection" in outbox[-1]['Subject'])
@ -458,7 +459,7 @@ class ResurrectTests(TestCase):
DocEvent.objects.create(doc=draft, DocEvent.objects.create(doc=draft,
type="requested_resurrect", 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)) 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')])) 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 # 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]) two_answers = "%s,%s" % (plain_email, ad.email_set.all()[0])
r = self.client.post(url, dict(shepherd=two_answers)) r = self.client.post(url, dict(shepherd=two_answers))
self.assertEqual(r.status_code, 200) 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.meeting.models import Meeting, Session, SessionPresentation
from ietf.name.models import SessionStatusName from ietf.name.models import SessionStatusName
from ietf.person.models import Person 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.utils.test_data import make_test_data
from ietf.meeting.test_data import make_meeting_test_data from ietf.meeting.test_data import make_meeting_test_data
@ -59,7 +59,7 @@ class GroupMaterialTests(TestCase):
# normal get # normal get
r = self.client.get(url) r = self.client.get(url)
self.assertEqual(r.status_code, 200) 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')) url = urlreverse('ietf.doc.views_material.choose_material_type', kwargs=dict(acronym='mars'))
r = self.client.get(url) r = self.client.get(url)

View file

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
import os import os
import shutil 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.doc.views_status_change import default_approval_text
from ietf.group.models import Person from ietf.group.models import Person
from ietf.iesg.models import TelechatDate 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.mail import outbox
from ietf.utils.test_data import make_test_data 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
@ -32,7 +33,7 @@ class StatusChangeTests(TestCase):
q = PyQuery(r.content) q = PyQuery(r.content)
self.assertEqual(len(q('form select[name=create_in_state]')),1) 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) state_strpk = str(State.objects.get(slug='adrev',type__slug='statchg').pk)
# faulty posts # faulty posts
@ -69,7 +70,7 @@ class StatusChangeTests(TestCase):
status_change = Document.objects.get(name='status-change-imaginary-new') status_change = Document.objects.get(name='status-change-imaginary-new')
self.assertEqual(status_change.get_state('statchg').slug,'adrev') self.assertEqual(status_change.get_state('statchg').slug,'adrev')
self.assertEqual(status_change.rev,u'00') 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.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')) 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" test_file.name = "unnamed"
r = self.client.post(url, dict(txt=test_file,submit_response="1")) r = self.client.post(url, dict(txt=test_file,submit_response="1"))
self.assertEqual(r.status_code, 200) 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 # sane post uploading a file
test_file = StringIO("This is a new proposal.") 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')) url = urlreverse('doc_view',kwargs=dict(name=doc.name,rev='00'))
r = self.client.get(url) r = self.client.get(url)
self.assertEqual(r.status_code,200) 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): def setUp(self):
make_test_data() 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'^(?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'^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'^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"), url(r'^ad/(?P<name>[\w.-]+)/$(?u)', 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)), (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'^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'^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"), 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.group.models import Role, Group
from ietf.utils.test_data import make_test_data 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): if getattr(settings,'SKIP_DOT_TO_PDF', False):
skip_dot_to_pdf = True skip_dot_to_pdf = True
@ -28,7 +28,7 @@ class StreamTests(TestCase):
make_test_data() make_test_data()
r = self.client.get(urlreverse("ietf.group.views_stream.streams")) r = self.client.get(urlreverse("ietf.group.views_stream.streams"))
self.assertEqual(r.status_code, 200) 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): def test_stream_documents(self):
draft = make_test_data() 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"))) r = self.client.get(urlreverse("ietf.group.views_stream.stream_documents", kwargs=dict(acronym="iab")))
self.assertEqual(r.status_code, 200) 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): def test_stream_edit(self):
make_test_data() make_test_data()

View file

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
import os import os
import shutil import shutil
import calendar 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.group.utils import save_group_in_history
from ietf.name.models import DocTagName, GroupStateName, GroupTypeName from ietf.name.models import DocTagName, GroupStateName, GroupTypeName
from ietf.person.models import Person, Email 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.mail import outbox, empty_outbox
from ietf.utils.test_data import make_test_data 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
@ -38,41 +39,41 @@ class GroupPagesTests(TestCase):
url = urlreverse('ietf.group.info.active_groups', kwargs=dict(group_type="wg")) url = urlreverse('ietf.group.info.active_groups', kwargs=dict(group_type="wg"))
r = self.client.get(url) r = self.client.get(url)
self.assertEqual(r.status_code, 200) self.assertEqual(r.status_code, 200)
self.assertTrue(group.parent.name in r.content) self.assertTrue(group.parent.name in unicontent(r))
self.assertTrue(group.acronym in r.content) self.assertTrue(group.acronym in unicontent(r))
self.assertTrue(group.name in r.content) self.assertTrue(group.name in unicontent(r))
self.assertTrue(group.ad_role().person.plain_name() in r.content) self.assertTrue(group.ad_role().person.plain_name() in unicontent(r))
url = urlreverse('ietf.group.info.active_groups', kwargs=dict(group_type="rg")) url = urlreverse('ietf.group.info.active_groups', kwargs=dict(group_type="rg"))
r = self.client.get(url) r = self.client.get(url)
self.assertEqual(r.status_code, 200) 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")) url = urlreverse('ietf.group.info.active_groups', kwargs=dict(group_type="area"))
r = self.client.get(url) r = self.client.get(url)
self.assertEqual(r.status_code, 200) 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")) url = urlreverse('ietf.group.info.active_groups', kwargs=dict(group_type="ag"))
r = self.client.get(url) r = self.client.get(url)
self.assertEqual(r.status_code, 200) 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")) url = urlreverse('ietf.group.info.active_groups', kwargs=dict(group_type="dir"))
r = self.client.get(url) r = self.client.get(url)
self.assertEqual(r.status_code, 200) 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")) url = urlreverse('ietf.group.info.active_groups', kwargs=dict(group_type="team"))
r = self.client.get(url) r = self.client.get(url)
self.assertEqual(r.status_code, 200) 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()) url = urlreverse('ietf.group.info.active_groups', kwargs=dict())
r = self.client.get(url) r = self.client.get(url)
self.assertEqual(r.status_code, 200) self.assertEqual(r.status_code, 200)
self.assertTrue("Directorate" in r.content) self.assertTrue("Directorate" in unicontent(r))
self.assertTrue("AG" in r.content) 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): for slug in GroupTypeName.objects.exclude(slug__in=['wg','rg','ag','area','dir','team']).values_list('slug',flat=True):
with self.assertRaises(NoReverseMatch): with self.assertRaises(NoReverseMatch):
@ -90,35 +91,35 @@ class GroupPagesTests(TestCase):
url = urlreverse('ietf.group.info.wg_summary_area', kwargs=dict(group_type="wg")) url = urlreverse('ietf.group.info.wg_summary_area', kwargs=dict(group_type="wg"))
r = self.client.get(url) r = self.client.get(url)
self.assertEqual(r.status_code, 200) self.assertEqual(r.status_code, 200)
self.assertTrue(group.parent.name in r.content) self.assertTrue(group.parent.name in unicontent(r))
self.assertTrue(group.acronym in r.content) self.assertTrue(group.acronym in unicontent(r))
self.assertTrue(group.name in r.content) self.assertTrue(group.name in unicontent(r))
self.assertTrue(chair.address in r.content) self.assertTrue(chair.address in unicontent(r))
url = urlreverse('ietf.group.info.wg_summary_acronym', kwargs=dict(group_type="wg")) url = urlreverse('ietf.group.info.wg_summary_acronym', kwargs=dict(group_type="wg"))
r = self.client.get(url) r = self.client.get(url)
self.assertEqual(r.status_code, 200) self.assertEqual(r.status_code, 200)
self.assertTrue(group.acronym in r.content) self.assertTrue(group.acronym in unicontent(r))
self.assertTrue(group.name in r.content) self.assertTrue(group.name in unicontent(r))
self.assertTrue(chair.address in r.content) self.assertTrue(chair.address in unicontent(r))
url = urlreverse('ietf.group.info.wg_charters', kwargs=dict(group_type="wg")) url = urlreverse('ietf.group.info.wg_charters', kwargs=dict(group_type="wg"))
r = self.client.get(url) r = self.client.get(url)
self.assertEqual(r.status_code, 200) self.assertEqual(r.status_code, 200)
self.assertTrue(group.acronym in r.content) self.assertTrue(group.acronym in unicontent(r))
self.assertTrue(group.name in r.content) self.assertTrue(group.name in unicontent(r))
self.assertTrue(group.ad_role().person.plain_name() in r.content) self.assertTrue(group.ad_role().person.plain_name() in unicontent(r))
self.assertTrue(chair.address in r.content) self.assertTrue(chair.address in unicontent(r))
self.assertTrue("This is a charter." in r.content) self.assertTrue("This is a charter." in unicontent(r))
url = urlreverse('ietf.group.info.wg_charters_by_acronym', kwargs=dict(group_type="wg")) url = urlreverse('ietf.group.info.wg_charters_by_acronym', kwargs=dict(group_type="wg"))
r = self.client.get(url) r = self.client.get(url)
self.assertEqual(r.status_code, 200) self.assertEqual(r.status_code, 200)
self.assertTrue(group.acronym in r.content) self.assertTrue(group.acronym in unicontent(r))
self.assertTrue(group.name in r.content) self.assertTrue(group.name in unicontent(r))
self.assertTrue(group.ad_role().person.plain_name() in r.content) self.assertTrue(group.ad_role().person.plain_name() in unicontent(r))
self.assertTrue(chair.address in r.content) self.assertTrue(chair.address in unicontent(r))
self.assertTrue("This is a charter." in r.content) self.assertTrue("This is a charter." in unicontent(r))
def test_chartering_groups(self): def test_chartering_groups(self):
draft = make_test_data() 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)) url = urlreverse('ietf.group.info.group_documents', kwargs=dict(group_type=group.type_id, acronym=group.acronym))
r = self.client.get(url) r = self.client.get(url)
self.assertEqual(r.status_code, 200) self.assertEqual(r.status_code, 200)
self.assertTrue(draft.name in r.content) self.assertTrue(draft.name in unicontent(r))
self.assertTrue(group.name in r.content) self.assertTrue(group.name in unicontent(r))
self.assertTrue(group.acronym in r.content) 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 # 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") 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)) url = urlreverse('ietf.group.info.group_documents_txt', kwargs=dict(group_type=group.type_id, acronym=group.acronym))
r = self.client.get(url) r = self.client.get(url)
self.assertEqual(r.status_code, 200) self.assertEqual(r.status_code, 200)
self.assertTrue(draft.name in r.content) self.assertTrue(draft.name in unicontent(r))
self.assertTrue(draft2.name in r.content) self.assertTrue(draft2.name in unicontent(r))
def test_group_charter(self): def test_group_charter(self):
draft = make_test_data() draft = make_test_data()
@ -225,11 +226,11 @@ class GroupPagesTests(TestCase):
]: ]:
r = self.client.get(url) r = self.client.get(url)
self.assertEqual(r.status_code, 200) self.assertEqual(r.status_code, 200)
self.assertTrue(group.name in r.content) self.assertTrue(group.name in unicontent(r))
self.assertTrue(group.acronym in r.content) self.assertTrue(group.acronym in unicontent(r))
self.assertTrue("This is a charter." in r.content) self.assertTrue("This is a charter." in unicontent(r))
self.assertTrue(milestone.desc in r.content) self.assertTrue(milestone.desc in unicontent(r))
self.assertTrue(milestone.docs.all()[0].name in r.content) self.assertTrue(milestone.docs.all()[0].name in unicontent(r))
def test_group_about(self): def test_group_about(self):
make_test_data() make_test_data()
@ -248,9 +249,9 @@ class GroupPagesTests(TestCase):
url = group.about_url() url = group.about_url()
r = self.client.get(url) r = self.client.get(url)
self.assertEqual(r.status_code, 200) self.assertEqual(r.status_code, 200)
self.assertTrue(group.name in r.content) self.assertTrue(group.name in unicontent(r))
self.assertTrue(group.acronym in r.content) self.assertTrue(group.acronym in unicontent(r))
self.assertTrue(group.description in r.content) self.assertTrue(group.description in unicontent(r))
def test_materials(self): def test_materials(self):
make_test_data() make_test_data()
@ -271,8 +272,8 @@ class GroupPagesTests(TestCase):
]: ]:
r = self.client.get(url) r = self.client.get(url)
self.assertEqual(r.status_code, 200) self.assertEqual(r.status_code, 200)
self.assertTrue(doc.title in r.content) self.assertTrue(doc.title in unicontent(r))
self.assertTrue(doc.name in r.content) self.assertTrue(doc.name in unicontent(r))
url = urlreverse("group_materials", kwargs={ 'acronym': group.acronym }) url = urlreverse("group_materials", kwargs={ 'acronym': group.acronym })
@ -281,7 +282,7 @@ class GroupPagesTests(TestCase):
r = self.client.get(url) r = self.client.get(url)
self.assertEqual(r.status_code, 200) 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): def test_history(self):
draft = make_test_data() 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)) url = urlreverse('ietf.group.info.history', kwargs=dict(group_type=group.type_id, acronym=group.acronym))
r = self.client.get(url) r = self.client.get(url)
self.assertEqual(r.status_code, 200) self.assertEqual(r.status_code, 200)
self.assertTrue(e.desc in r.content) self.assertTrue(e.desc in unicontent(r))
def test_feed(self): def test_feed(self):
draft = make_test_data() draft = make_test_data()
@ -316,8 +317,8 @@ class GroupPagesTests(TestCase):
r = self.client.get("/feed/group-changes/%s/" % group.acronym) r = self.client.get("/feed/group-changes/%s/" % group.acronym)
self.assertEqual(r.status_code, 200) self.assertEqual(r.status_code, 200)
self.assertTrue(ge.desc in r.content) self.assertTrue(ge.desc in unicontent(r))
self.assertTrue(de.desc in r.content) self.assertTrue(de.desc in unicontent(r))
class GroupEditTests(TestCase): 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: 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.") f.write("This is a charter.")
area = group.parent area = group.parent
ad = Person.objects.get(name="Aread Irector") ad = Person.objects.get(name="Areað Irector")
state = GroupStateName.objects.get(slug="bof") state = GroupStateName.objects.get(slug="bof")
empty_outbox() empty_outbox()
r = self.client.post(url, r = self.client.post(url,
@ -594,15 +595,15 @@ class MilestoneTests(TestCase):
r = self.client.get(url) r = self.client.get(url)
self.assertEqual(r.status_code, 200) self.assertEqual(r.status_code, 200)
self.assertTrue(m1.desc in r.content) self.assertTrue(m1.desc in unicontent(r))
self.assertTrue(m2.desc not in r.content) self.assertTrue(m2.desc not in unicontent(r))
url = urlreverse('group_edit_charter_milestones', kwargs=dict(group_type=group.type_id, acronym=group.acronym)) url = urlreverse('group_edit_charter_milestones', kwargs=dict(group_type=group.type_id, acronym=group.acronym))
r = self.client.get(url) r = self.client.get(url)
self.assertEqual(r.status_code, 200) self.assertEqual(r.status_code, 200)
self.assertTrue(m1.desc not in r.content) self.assertTrue(m1.desc not in unicontent(r))
self.assertTrue(m2.desc in r.content) self.assertTrue(m2.desc in unicontent(r))
def test_add_milestone(self): def test_add_milestone(self):
m1, m2, group = self.create_test_milestones() 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")]: for testdict in [dict(acronym="mars"),dict(acronym="mars",group_type="wg")]:
url = urlreverse('old_group_email_aliases', kwargs=testdict) url = urlreverse('old_group_email_aliases', kwargs=testdict)
r = self.client.get(url,follow=True) r = self.client.get(url,follow=True)
self.assertTrue(all([x in r.content for x in ['mars-ads@','mars-chairs@']])) self.assertTrue(all([x in unicontent(r) for x in ['mars-ads@','mars-chairs@']]))
self.assertFalse(any([x in r.content for x in ['ames-ads@','ames-chairs@']])) self.assertFalse(any([x in unicontent(r) for x in ['ames-ads@','ames-chairs@']]))
url = urlreverse('ietf.group.info.email_aliases', kwargs=dict()) url = urlreverse('ietf.group.info.email_aliases', kwargs=dict())
login_testing_unauthorized(self, "plain", url) login_testing_unauthorized(self, "plain", url)
r = self.client.get(url) r = self.client.get(url)
self.assertTrue(r.status_code,200) 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")) url = urlreverse('ietf.group.info.email_aliases', kwargs=dict(group_type="wg"))
r = self.client.get(url) r = self.client.get(url)
self.assertEqual(r.status_code,200) 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")) url = urlreverse('ietf.group.info.email_aliases', kwargs=dict(group_type="rg"))
r = self.client.get(url) r = self.client.get(url)
self.assertEqual(r.status_code,200) self.assertEqual(r.status_code,200)
self.assertFalse('mars-ads@' in r.content) self.assertFalse('mars-ads@' in unicontent(r))
def testExpansions(self): def testExpansions(self):
url = urlreverse('ietf.group.info.email', kwargs=dict(acronym="mars")) url = urlreverse('ietf.group.info.email', kwargs=dict(acronym="mars"))
r = self.client.get(url) r = self.client.get(url)
self.assertEqual(r.status_code,200) self.assertEqual(r.status_code,200)
self.assertTrue('Email Aliases' in r.content) self.assertTrue('Email Aliases' in unicontent(r))
self.assertTrue('mars-ads@ietf.org' in r.content) self.assertTrue('mars-ads@ietf.org' in unicontent(r))
self.assertTrue('group_personnel_change' in r.content) 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[12], ".pdf,.txt")
self.assertEqual(t[13], draft.title) self.assertEqual(t[13], draft.title)
author = draft.documentauthor_set.order_by("order").get() author = draft.documentauthor_set.order_by("order").get()
self.assertEqual(t[14], "%s <%s>" % (author.author.person.name, author.author.address)) self.assertEqual(t[14], u"%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[15], u"%s <%s>" % (draft.shepherd.person.name, draft.shepherd.address))
self.assertEqual(t[16], "%s <%s>" % (draft.ad, draft.ad.email_address())) self.assertEqual(t[16], u"%s <%s>" % (draft.ad, draft.ad.email_address()))
# test RFC # test RFC

View file

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

View file

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

View file

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

View file

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

View file

@ -84,7 +84,7 @@ def _find_person_in_emails(liaison, person):
def contacts_from_roles(roles): def contacts_from_roles(roles):
'''Returns contact string for given 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) return ','.join(emails)
def get_cc(group): def get_cc(group):
@ -104,17 +104,17 @@ def get_cc(group):
elif group.type_id == 'area': elif group.type_id == 'area':
emails.append(EMAIL_ALIASES['IETFCHAIR']) emails.append(EMAIL_ALIASES['IETFCHAIR'])
ad_roles = group.role_set.filter(name='ad') 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': elif group.type_id == 'wg':
ad_roles = group.parent.role_set.filter(name='ad') 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') 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: 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': elif group.type_id == 'sdo':
liaiman_roles = group.role_set.filter(name='liaiman') 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 # explicit CCs
if group.liaisonstatementgroupcontacts_set.exists() and group.liaisonstatementgroupcontacts_set.first().cc_contacts: 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 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.test_data import make_test_data
class EventMailTests(TestCase): class EventMailTests(TestCase):
@ -13,22 +13,22 @@ class EventMailTests(TestCase):
url = urlreverse('ietf.mailtrigger.views.show_triggers') url = urlreverse('ietf.mailtrigger.views.show_triggers')
r = self.client.get(url) r = self.client.get(url)
self.assertEqual(r.status_code, 200) 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')) url = urlreverse('ietf.mailtrigger.views.show_triggers',kwargs=dict(mailtrigger_slug='ballot_saved'))
r = self.client.get(url) r = self.client.get(url)
self.assertEqual(r.status_code, 200) 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): def test_show_recipients(self):
url = urlreverse('ietf.mailtrigger.views.show_recipients') url = urlreverse('ietf.mailtrigger.views.show_recipients')
r = self.client.get(url) r = self.client.get(url)
self.assertEqual(r.status_code, 200) 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')) url = urlreverse('ietf.mailtrigger.views.show_recipients',kwargs=dict(recipient_slug='doc_group_mail_list'))
r = self.client.get(url) r = self.client.get(url)
self.assertEqual(r.status_code, 200) 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.doc.models import Document
from ietf.meeting.models import Session, TimeSlot from ietf.meeting.models import Session, TimeSlot
from ietf.meeting.test_data import make_meeting_test_data 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): class MeetingTests(TestCase):
def setUp(self): def setUp(self):
@ -97,9 +97,9 @@ class MeetingTests(TestCase):
self.assertTrue(session.group.parent.acronym.upper() in agenda_content) self.assertTrue(session.group.parent.acronym.upper() in agenda_content)
self.assertTrue(slot.location.name 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.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 r.content) 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 r.content) self.assertFalse(session.materials.filter(type='slides',states__type__slug='slides',states__slug='deleted').first().external_url in unicontent(r))
# iCal # iCal
r = self.client.get(urlreverse("ietf.meeting.views.ical_agenda", kwargs=dict(num=meeting.number)) 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("BEGIN:VTIMEZONE" in agenda_content)
self.assertTrue("END:VTIMEZONE" in agenda_content) self.assertTrue("END:VTIMEZONE" in agenda_content)
self.assertTrue(session.agenda().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 r.content) 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. # 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 # week view
r = self.client.get(urlreverse("ietf.meeting.views.week_view", kwargs=dict(num=meeting.number))) 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)) url = urlreverse("ietf.meeting.views.agenda_by_room",kwargs=dict(num=meeting.number))
login_testing_unauthorized(self,"secretary",url) login_testing_unauthorized(self,"secretary",url)
r = self.client.get(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): def test_agenda_by_type(self):
meeting = make_meeting_test_data() 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)) url = urlreverse("ietf.meeting.views.agenda_by_type",kwargs=dict(num=meeting.number))
login_testing_unauthorized(self,"secretary",url) login_testing_unauthorized(self,"secretary",url)
r = self.client.get(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')) url = urlreverse("ietf.meeting.views.agenda_by_type",kwargs=dict(num=meeting.number,type='session'))
r = self.client.get(url) r = self.client.get(url)
self.assertTrue(all([x in r.content for x in ['mars','Test Room']])) self.assertTrue(all([x in unicontent(r) for x in ['mars','Test Room']]))
self.assertFalse(any([x in r.content for x in ['IESG Breakfast','Breakfast 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')) url = urlreverse("ietf.meeting.views.agenda_by_type",kwargs=dict(num=meeting.number,type='lead'))
r = self.client.get(url) r = self.client.get(url)
self.assertFalse(any([x in r.content for x in ['mars','Test Room']])) self.assertFalse(any([x in unicontent(r) for x in ['mars','Test Room']]))
self.assertTrue(all([x in r.content for x in ['IESG Breakfast','Breakfast Room']])) self.assertTrue(all([x in unicontent(r) for x in ['IESG Breakfast','Breakfast Room']]))
def test_agenda_room_view(self): def test_agenda_room_view(self):
meeting = make_meeting_test_data() meeting = make_meeting_test_data()
url = urlreverse("ietf.meeting.views.room_view",kwargs=dict(num=meeting.number)) url = urlreverse("ietf.meeting.views.room_view",kwargs=dict(num=meeting.number))
login_testing_unauthorized(self,"secretary",url) login_testing_unauthorized(self,"secretary",url)
r = self.client.get(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): def test_session_details(self):
meeting = make_meeting_test_data() meeting = make_meeting_test_data()
url = urlreverse("ietf.meeting.views.session_details", kwargs=dict(num=meeting.number, acronym="mars")) url = urlreverse("ietf.meeting.views.session_details", kwargs=dict(num=meeting.number, acronym="mars"))
r = self.client.get(url) r = self.client.get(url)
self.assertTrue(all([x in r.content for x in ('slides','agenda','minutes')])) self.assertTrue(all([x in unicontent(r) for x in ('slides','agenda','minutes')]))
self.assertFalse('deleted' in r.content) self.assertFalse('deleted' in unicontent(r))
def test_materials(self): def test_materials(self):
meeting = make_meeting_test_data() meeting = make_meeting_test_data()
@ -173,7 +173,7 @@ class MeetingTests(TestCase):
r = self.client.get(urlreverse("ietf.meeting.views.session_agenda", r = self.client.get(urlreverse("ietf.meeting.views.session_agenda",
kwargs=dict(num=meeting.number, session=session.group.acronym))) kwargs=dict(num=meeting.number, session=session.group.acronym)))
self.assertEqual(r.status_code, 200) 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 # early materials page
r = self.client.get(urlreverse("ietf.meeting.views.current_materials")) r = self.client.get(urlreverse("ietf.meeting.views.current_materials"))
@ -198,8 +198,8 @@ class MeetingTests(TestCase):
r = self.client.get("/feed/wg-proceedings/") r = self.client.get("/feed/wg-proceedings/")
self.assertEqual(r.status_code, 200) self.assertEqual(r.status_code, 200)
self.assertTrue("agenda" in r.content) self.assertTrue("agenda" in unicontent(r))
self.assertTrue(session.group.acronym in r.content) self.assertTrue(session.group.acronym in unicontent(r))
class EditTests(TestCase): class EditTests(TestCase):
def setUp(self): def setUp(self):
@ -215,7 +215,7 @@ class EditTests(TestCase):
self.client.login(username="secretary", password="secretary+password") self.client.login(username="secretary", password="secretary+password")
r = self.client.get(urlreverse("ietf.meeting.views.edit_agenda", kwargs=dict(num=meeting.number))) r = self.client.get(urlreverse("ietf.meeting.views.edit_agenda", kwargs=dict(num=meeting.number)))
self.assertEqual(r.status_code, 200) 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): def test_save_agenda_as_and_read_permissions(self):
meeting = make_meeting_test_data() meeting = make_meeting_test_data()
@ -311,7 +311,7 @@ class EditTests(TestCase):
self.client.login(username="secretary", password="secretary+password") self.client.login(username="secretary", password="secretary+password")
r = self.client.get(urlreverse("ietf.meeting.views.edit_timeslots", kwargs=dict(num=meeting.number))) r = self.client.get(urlreverse("ietf.meeting.views.edit_timeslots", kwargs=dict(num=meeting.number)))
self.assertEqual(r.status_code, 200) 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): def test_slot_to_the_right(self):
meeting = make_meeting_test_data() meeting = make_meeting_test_data()

View file

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

View file

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

View file

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
from django.core.urlresolvers import reverse from django.core.urlresolvers import reverse
from ietf.utils.test_utils import TestCase from ietf.utils.test_utils import TestCase
from ietf.group.models import Group from ietf.group.models import Group
@ -89,7 +90,7 @@ class GroupsTest(TestCase):
make_test_data() make_test_data()
group = Group.objects.filter(acronym='mars')[0] group = Group.objects.filter(acronym='mars')[0]
area = Group.objects.filter(acronym='farfut')[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}) url = reverse('groups_edit', kwargs={'acronym':group.acronym})
target = reverse('groups_view', kwargs={'acronym':group.acronym}) target = reverse('groups_view', kwargs={'acronym':group.acronym})
post_data = {'acronym':group.acronym, post_data = {'acronym':group.acronym,
@ -120,7 +121,7 @@ class GroupsTest(TestCase):
def test_people_add(self): def test_people_add(self):
make_test_data() make_test_data()
person = Person.objects.get(name='Aread Irector') person = Person.objects.get(name='Areað Irector')
group = Group.objects.filter(acronym='mars')[0] group = Group.objects.filter(acronym='mars')[0]
url = reverse('groups_people', kwargs={'acronym':group.acronym}) url = reverse('groups_people', kwargs={'acronym':group.acronym})
post_data = {'name':'chair', 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.models import Meeting, Session
from ietf.meeting.test_data import make_meeting_test_data from ietf.meeting.test_data import make_meeting_test_data
from ietf.utils.test_data import make_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.name.models import SessionStatusName
from ietf.secr.utils.meeting import get_proceedings_path 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) dict(acronym='mars',meeting_id=meeting.id,material_type='bluesheets',file=upfile),follow=True)
self.assertEqual(r.status_code, 200) self.assertEqual(r.status_code, 200)
doc = Document.objects.get(type='bluesheets') 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))) self.failUnless(os.path.exists(os.path.join(doc.get_file_path(),doc.external_url)))
# test that proceedings has bluesheets on it # test that proceedings has bluesheets on it
path = get_proceedings_path(meeting,group) path = get_proceedings_path(meeting,group)
self.failUnless(os.path.exists(path)) self.failUnless(os.path.exists(path))
with open(path) as f: with open(path) as f:
data = f.read() 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 django.core.urlresolvers import reverse
from ietf.utils.test_utils import TestCase from ietf.utils.test_utils import TestCase
@ -37,7 +38,7 @@ class MainTestCase(TestCase):
def test_roles_add(self): def test_roles_add(self):
make_test_data() make_test_data()
augment_data() augment_data()
person = Person.objects.get(name='Aread Irector') person = Person.objects.get(name='Areað Irector')
group = Group.objects.filter(acronym='mars')[0] group = Group.objects.filter(acronym='mars')[0]
url = reverse('roles') url = reverse('roles')
target = reverse('roles') + '?group=%s' % group.acronym target = reverse('roles') + '?group=%s' % group.acronym

View file

@ -1,6 +1,6 @@
from django.core.urlresolvers import reverse 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.group.models import Group
#from ietf.meeting.models import Session #from ietf.meeting.models import Session
#from ietf.utils.test_data import make_test_data #from ietf.utils.test_data import make_test_data
@ -67,7 +67,7 @@ class SubmitRequestCase(TestCase):
self.assertEqual(r.status_code, 200) self.assertEqual(r.status_code, 200)
q = PyQuery(r.content) q = PyQuery(r.content)
self.assertEqual(len(q('#session-request-form')),1) 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): class LockAppTestCase(TestCase):
def test_edit_request(self): 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 # 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.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) r = self.client.get(url,follow=True)
self.assertEqual(r.status_code, 200) 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.assertEqual(len(outbox),1)
self.assertTrue('Not having a session' in outbox[0]['Subject']) self.assertTrue('Not having a session' in outbox[0]['Subject'])

View file

@ -11,7 +11,7 @@ from pyquery import PyQuery
import debug # pyflakes:ignore 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.test_data import make_test_data
from ietf.utils.mail import outbox from ietf.utils.mail import outbox
from ietf.utils.test_utils import TestCase from ietf.utils.test_utils import TestCase
@ -279,7 +279,7 @@ class SubmitTests(TestCase):
status_url = r["Location"] status_url = r["Location"]
r = self.client.get(status_url) r = self.client.get(status_url)
self.assertEqual(r.status_code, 200) 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) self.assertEqual(len(outbox), mailbox_before + 1)
confirm_email = outbox[-1] confirm_email = outbox[-1]
@ -361,7 +361,7 @@ class SubmitTests(TestCase):
status_url = r["Location"] status_url = r["Location"]
r = self.client.get(status_url) r = self.client.get(status_url)
self.assertEqual(r.status_code, 200) 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) self.assertEqual(len(outbox), mailbox_before + 1)
confirm_email = outbox[-1] confirm_email = outbox[-1]
@ -408,16 +408,16 @@ class SubmitTests(TestCase):
replaced_alias = draft.docalias_set.first() replaced_alias = draft.docalias_set.first()
r = self.supply_extra_metadata(name, status_url, "Submitter Name", "author@example.com", replaces=str(replaced_alias.pk)) 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.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') 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)) 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.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-iesg',slug='approved'))
replaced_alias.document.set_state(State.objects.get(type='draft',slug='active')) 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)) 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.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='') r = self.supply_extra_metadata(name, status_url, "Submitter Name", "author@example.com", replaces='')
self.assertEqual(r.status_code, 302) self.assertEqual(r.status_code, 302)
status_url = r["Location"] status_url = r["Location"]
@ -587,7 +587,7 @@ class SubmitTests(TestCase):
# search status page # search status page
r = self.client.get(urlreverse("submit_search_submission")) r = self.client.get(urlreverse("submit_search_submission"))
self.assertEqual(r.status_code, 200) self.assertEqual(r.status_code, 200)
self.assertTrue("submission status" in r.content) self.assertTrue("submission status" in unicontent(r))
# search # search
r = self.client.post(urlreverse("submit_search_submission"), dict(name=name)) 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 # status page as unpriviliged => no edit button
r = self.client.get(unprivileged_status_url) r = self.client.get(unprivileged_status_url)
self.assertEqual(r.status_code, 200) 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) q = PyQuery(r.content)
adjust_button = q('[type=submit]:contains("Adjust")') adjust_button = q('[type=submit]:contains("Adjust")')
self.assertEqual(len(adjust_button), 0) 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.sync import iana, rfceditor
from ietf.utils.mail import outbox, empty_outbox from ietf.utils.mail import outbox, empty_outbox
from ietf.utils.test_data import make_test_data 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 from ietf.utils.test_utils import TestCase
@ -202,7 +202,7 @@ ICANN
login_testing_unauthorized(self, "secretary", url) login_testing_unauthorized(self, "secretary", url)
r = self.client.get(url) r = self.client.get(url)
self.assertEqual(r.status_code, 200) 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 # 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")) doc.set_state(State.objects.get(used=True, type="draft-iesg", slug="ann"))
r = self.client.get(urlreverse("ietf.sync.views.discrepancies")) 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 # draft with IANA state "In Progress" but RFC Editor state not IANA
doc = Document.objects.create(name="draft-ietf-test2", type_id="draft") 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")) doc.set_state(State.objects.get(used=True, type="draft-rfceditor", slug="auth"))
r = self.client.get(urlreverse("ietf.sync.views.discrepancies")) 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" # draft with IANA state "Waiting on RFC Editor" or "RFC-Ed-Ack"
# but RFC Editor state is IANA # 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")) doc.set_state(State.objects.get(used=True, type="draft-rfceditor", slug="iana"))
r = self.client.get(urlreverse("ietf.sync.views.discrepancies")) 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" # draft with state other than "RFC Ed Queue" or "RFC Published"
# that are in RFC Editor or IANA queues # 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")) doc.set_state(State.objects.get(used=True, type="draft-rfceditor", slug="auth"))
r = self.client.get(urlreverse("ietf.sync.views.discrepancies")) 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): class RFCEditorUndoTests(TestCase):
def test_rfceditor_undo(self): def test_rfceditor_undo(self):
@ -477,7 +477,7 @@ class RFCEditorUndoTests(TestCase):
# get # get
r = self.client.get(url) r = self.client.get(url)
self.assertEqual(r.status_code, 200) self.assertEqual(r.status_code, 200)
self.assertTrue(e2.doc_id in r.content) self.assertTrue(e2.doc_id in unicontent(r))
# delete e2 # delete e2
deleted_before = DeletedEvent.objects.count() deleted_before = DeletedEvent.objects.count()

View file

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
import datetime import datetime
from django.conf import settings from django.conf import settings
@ -75,7 +76,7 @@ def make_immutable_base_data():
create_person(iepg, "chair") create_person(iepg, "chair")
iana = create_group(name="IANA", acronym="iana", type_id="ietf") 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") 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") 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 # one area
area = create_group(name="Far Future", acronym="farfut", type_id="area", parent=ietf) 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 # create a bunch of ads for swarm tests
for i in range(1, 10): for i in range(1, 10):
@ -173,13 +174,13 @@ def make_test_data():
email = Email.objects.create(address="plain@example.com", person=plainman) email = Email.objects.create(address="plain@example.com", person=plainman)
# group personnel # group personnel
create_person(mars_wg, "chair", name="WG Chair Man", username="marschairman") create_person(mars_wg, "chair", name="WG Cháir Man", username="marschairman")
create_person(mars_wg, "delegate", name="WG Delegate", username="marsdelegate") 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.role_set.get_or_create(name_id='ad',person=ad,email=ad.role_email('ad'))
mars_wg.save() mars_wg.save()
create_person(ames_wg, "chair", name="WG Chair Man", username="ameschairman") create_person(ames_wg, "chair", name="WG Cháir Man", username="ameschairman")
create_person(ames_wg, "delegate", name="WG Delegate", username="amesdelegate") 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.role_set.get_or_create(name_id='ad',person=ad,email=ad.role_email('ad'))
ames_wg.save() ames_wg.save()

View file

@ -262,6 +262,16 @@ def login_testing_unauthorized(test_case, username, url, password=None):
password = username + "+password" password = username + "+password"
return test_case.client.login(username=username, password=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): class ReverseLazyTest(django.test.TestCase):
def test_redirect_with_lazy_reverse(self): def test_redirect_with_lazy_reverse(self):
response = self.client.get('/ipr/update/') response = self.client.get('/ipr/update/')