From 97a555936ddf71a4c75c936d5162d1da71196c16 Mon Sep 17 00:00:00 2001 From: Henrik Levkowetz Date: Sun, 30 Jun 2019 21:03:34 +0000 Subject: [PATCH] Changed a large number of test assertions to use assertContains() and removed separate, now unnecessary,status_code checks. Also changed many assertTrue(... in ...) to use assertIn(). - Legacy-Id: 16346 --- ietf/doc/tests_ballot.py | 8 +- ietf/doc/tests_conflict_review.py | 8 +- ietf/doc/tests_downref.py | 48 ++---- ietf/doc/tests_status_change.py | 22 +-- ietf/group/tests_info.py | 4 +- ietf/group/tests_review.py | 20 ++- ietf/iesg/tests.py | 78 +++++----- ietf/ietfauth/tests.py | 18 +-- ietf/ipr/tests.py | 2 +- ietf/liaisons/forms.py | 2 +- ietf/meeting/tests_views.py | 169 ++++++++++----------- ietf/nomcom/tests.py | 8 +- ietf/submit/tests.py | 12 +- ietf/utils/management/commands/pyflakes.py | 2 +- 14 files changed, 184 insertions(+), 217 deletions(-) diff --git a/ietf/doc/tests_ballot.py b/ietf/doc/tests_ballot.py index 9284f8172..fa679b25b 100644 --- a/ietf/doc/tests_ballot.py +++ b/ietf/doc/tests_ballot.py @@ -112,8 +112,7 @@ class EditPositionTests(TestCase): discuss=" This is a discussion test. \n ", comment=" This is a test. \n ") ) - self.assertEqual(r.content, "Done") - self.assertEqual(r.status_code, 200) + self.assertContains(r, "Done") pos = draft.latest_event(BallotPositionDocEvent, ad=ad) self.assertEqual(pos.pos.slug, "discuss") @@ -733,13 +732,11 @@ class ApproveBallotTests(TestCase): # Only Secretariat can use this URL login_testing_unauthorized(self, "ad", url) r = self.client.get(url) - self.assertEqual(r.status_code, 403) - self.assertContains(r, "Restricted to role Secretariat") + self.assertContains(r, "Restricted to role Secretariat", status_code=403) # There are no downrefs, the page should say so login_testing_unauthorized(self, "secretary", url) r = self.client.get(url) - self.assertEqual(r.status_code, 200) self.assertContains(r, "No downward references for") # Add a downref, the page should ask if it should be added to the registry @@ -747,7 +744,6 @@ class ApproveBallotTests(TestCase): d = [rdoc for rdoc in draft.relateddocument_set.all() if rel.is_approved_downref()] original_len = len(d) r = self.client.get(url) - self.assertEqual(r.status_code, 200) self.assertContains(r, "normatively references rfc6666") # POST with the downref checked diff --git a/ietf/doc/tests_conflict_review.py b/ietf/doc/tests_conflict_review.py index b328af217..f9f85a77d 100644 --- a/ietf/doc/tests_conflict_review.py +++ b/ietf/doc/tests_conflict_review.py @@ -279,9 +279,9 @@ class ConflictReviewTests(TestCase): q = PyQuery(r.content) self.assertEqual(len(q('[type=submit]:contains("Send announcement")')), 1) if approve_type == 'appr-noprob': - self.assertIn( 'IESG has no problem', ''.join(wrap(r.content,2**16))) + self.assertContains(r, 'IESG has no problem') else: - self.assertIn( 'NOT be published', ''.join(wrap(r.content,2**16))) + self.assertContains(r, 'NOT be published') # submit empty_outbox() @@ -298,9 +298,9 @@ class ConflictReviewTests(TestCase): self.assertIn('ietf-announce@', outbox[0]['Cc']) self.assertIn('iana@', outbox[0]['Cc']) if approve_type == 'appr-noprob': - self.assertIn( 'IESG has no problem', ''.join(wrap(str(outbox[0]),2**16))) + self.assertContains(r, 'IESG has no problem') else: - self.assertIn( 'NOT be published', ''.join(wrap(str(outbox[0]),2**16))) + self.assertContains(r, 'NOT be published') def test_approve_reqnopub(self): diff --git a/ietf/doc/tests_downref.py b/ietf/doc/tests_downref.py index e2c6b7652..d7f617256 100644 --- a/ietf/doc/tests_downref.py +++ b/ietf/doc/tests_downref.py @@ -32,26 +32,20 @@ class Downref(TestCase): # normal - get the table without the "Add downref" button self.client.login(username="plain", password="plain+password") r = self.client.get(url) - self.assertEqual(r.status_code, 200) - content = unicontent(r) - self.assertTrue('

Downref registry

' in content) - self.assertFalse('Add downref' in content) + self.assertContains(r, '

Downref registry

') + self.assertNotContains(r, 'Add downref') # secretariat - get the table with the "Add downref" button self.client.login(username='secretary', password='secretary+password') r = self.client.get(url) - self.assertEqual(r.status_code, 200) - content = unicontent(r) - self.assertTrue('

Downref registry

' in content) - self.assertTrue('Add downref' in content) + self.assertContains(r, '

Downref registry

') + self.assertContains(r, ('Add downref') # area director - get the table with the "Add downref" button self.client.login(username='ad', password='ad+password') r = self.client.get(url) - self.assertEqual(r.status_code, 200) - content = unicontent(r) - self.assertTrue('

Downref registry

' in content) - self.assertTrue('Add downref' in content) + self.assertContains(r, ('

Downref registry

') + self.assertContains(r, ('Add downref') def test_downref_registry_add(self): url = urlreverse('ietf.doc.views_downref.downref_registry_add') @@ -60,42 +54,32 @@ class Downref(TestCase): # secretariat - get the form to add entries to the registry self.client.login(username='secretary', password='secretary+password') r = self.client.get(url) - self.assertEqual(r.status_code, 200) - content = unicontent(r) - self.assertTrue('

Add entry to the downref registry

' in content) - self.assertTrue('Save downref' in content) + self.assertContains(r, ('

Add entry to the downref registry

') + self.assertContains(r, ('Save downref') # area director - get the form to add entries to the registry self.client.login(username='ad', password='ad+password') r = self.client.get(url) - self.assertEqual(r.status_code, 200) - content = unicontent(r) - self.assertTrue('

Add entry to the downref registry

' in content) - self.assertTrue('Save downref' in content) + self.assertContains(r, ('

Add entry to the downref registry

') + self.assertContains(r, ('Save downref') # error - already in the downref registry r = self.client.post(url, dict(rfc=self.rfcalias.pk, drafts=(self.doc.pk, ))) - self.assertEqual(r.status_code, 200) - content = unicontent(r) - self.assertTrue('Downref is already in the registry' in content) + self.assertContains(r, ('Downref is already in the registry') # error - source is not in an approved state r = self.client.get(url) self.assertEqual(r.status_code, 200) r = self.client.post(url, dict(rfc=self.rfcalias.pk, drafts=(self.draft.pk, ))) - self.assertEqual(r.status_code, 200) - content = unicontent(r) - self.assertTrue('Draft is not yet approved' in content) + self.assertContains(r, ('Draft is not yet approved') # error - the target is not a normative reference of the source self.draft.set_state(State.objects.get(used=True, type="draft-iesg", slug="pub")) r = self.client.get(url) self.assertEqual(r.status_code, 200) r = self.client.post(url, dict(rfc=self.rfcalias.pk, drafts=(self.draft.pk, ))) - self.assertEqual(r.status_code, 200) - content = unicontent(r) - self.assertTrue('There does not seem to be a normative reference to RFC' in content) - self.assertTrue('Save downref anyway' in content) + self.assertContains(r, ('There does not seem to be a normative reference to RFC') + self.assertContains(r, ('Save downref anyway') # normal - approve the document so the downref is now okay RelatedDocument.objects.create(source=self.draft, target=self.rfcalias, relationship_id='refnorm') @@ -108,9 +92,7 @@ class Downref(TestCase): self.assertEqual(r.status_code, 302) newurl = urlreverse('ietf.doc.views_downref.downref_registry') r = self.client.get(newurl) - self.assertEqual(r.status_code, 200) - content = unicontent(r) - self.assertTrue('0) self.assertTrue(draft.latest_event(TelechatDocEvent, "scheduled_for_telechat")) diff --git a/ietf/ietfauth/tests.py b/ietf/ietfauth/tests.py index 958784f4a..a8bd0a93a 100644 --- a/ietf/ietfauth/tests.py +++ b/ietf/ietfauth/tests.py @@ -98,7 +98,7 @@ class IetfAuthTests(TestCase): def extract_confirm_url(self, confirm_email): # dig out confirm_email link - msg = confirm_email.get_payload(decode=True) + msg = confirm_email.get_payload(decode=True).decode(confirm_email.get_content_charset()) line_start = "http" confirm_url = None for line in msg.split("\n"): @@ -131,7 +131,7 @@ class IetfAuthTests(TestCase): empty_outbox() r = self.client.post(url, { 'email': email }) self.assertEqual(r.status_code, 200) - self.assertIn("Account creation failed", unicontent(r)) + self.assertContains(r, "Account creation failed") def register_and_verify(self, email): url = urlreverse(ietf.ietfauth.views.create_account) @@ -140,7 +140,7 @@ class IetfAuthTests(TestCase): empty_outbox() r = self.client.post(url, { 'email': email }) self.assertEqual(r.status_code, 200) - self.assertIn("Account request received", unicontent(r)) + self.assertContains(r, "Account request received") self.assertEqual(len(outbox), 1) # go to confirm page @@ -172,11 +172,11 @@ class IetfAuthTests(TestCase): r = self.client.get(urlreverse(ietf.ietfauth.views.add_account_whitelist)) self.assertEqual(r.status_code, 200) - self.assertIn("Add a whitelist entry", unicontent(r)) + self.assertContains(r, "Add a whitelist entry") r = self.client.post(urlreverse(ietf.ietfauth.views.add_account_whitelist), {"email": email}) self.assertEqual(r.status_code, 200) - self.assertIn("Whitelist entry creation successful", unicontent(r)) + self.assertContains(r, "Whitelist entry creation successful") # log out r = self.client.get(urlreverse(django.contrib.auth.views.logout)) @@ -590,19 +590,19 @@ class IetfAuthTests(TestCase): # missing apikey r = self.client.post(url, {'dummy':'dummy',}) self.assertEqual(r.status_code, 400) - self.assertIn('Missing apikey parameter', unicontent(r)) + self.assertContains(r, 'Missing apikey parameter') # invalid apikey r = self.client.post(url, {'apikey':BAD_KEY, 'dummy':'dummy',}) self.assertEqual(r.status_code, 400) - self.assertIn('Invalid apikey', unicontent(r)) + self.assertContains(r, 'Invalid apikey') # too long since regular login person.user.last_login = datetime.datetime.now() - datetime.timedelta(days=settings.UTILS_APIKEY_GUI_LOGIN_LIMIT_DAYS+1) person.user.save() r = self.client.post(url, {'apikey':key.hash(), 'dummy':'dummy',}) self.assertEqual(r.status_code, 400) - self.assertIn('Too long since last regular login', unicontent(r)) + self.assertContains(r, 'Too long since last regular login') person.user.last_login = datetime.datetime.now() person.user.save() @@ -610,7 +610,7 @@ class IetfAuthTests(TestCase): key2 = PersonalApiKey.objects.create(person=person, endpoint='/') r = self.client.post(url, {'apikey':key2.hash(), 'dummy':'dummy',}) self.assertEqual(r.status_code, 400) - self.assertIn('Apikey endpoint mismatch', unicontent(r)) + self.assertContains(r, 'Apikey endpoint mismatch') key2.delete() def test_send_apikey_report(self): diff --git a/ietf/ipr/tests.py b/ietf/ipr/tests.py index 5a4c656d1..ae787eb7a 100644 --- a/ietf/ipr/tests.py +++ b/ietf/ipr/tests.py @@ -476,7 +476,7 @@ class IprTests(TestCase): self.assertContains(r, 'Private comment') self.client.logout() r = self.client.get(url) - self.assertFalse('Private comment' in unicontent(r)) + self.assertNotContains(r, 'Private comment') def test_addemail(self): ipr = HolderIprDisclosureFactory() diff --git a/ietf/liaisons/forms.py b/ietf/liaisons/forms.py index 23879ba7e..54c5c6c35 100644 --- a/ietf/liaisons/forms.py +++ b/ietf/liaisons/forms.py @@ -376,7 +376,7 @@ class LiaisonModelForm(BetterModelForm): if created: DocAlias.objects.create(name=attach.name).docs.add(attach) LiaisonStatementAttachment.objects.create(statement=self.instance,document=attach) - attach_file = open(os.path.join(settings.LIAISON_ATTACH_PATH, attach.name + extension), 'w') + attach_file = open(os.path.join(settings.LIAISON_ATTACH_PATH, attach.name + extension), 'wb') attach_file.write(attached_file.read()) attach_file.close() diff --git a/ietf/meeting/tests_views.py b/ietf/meeting/tests_views.py index 8c7ff4ad0..5436aae2e 100644 --- a/ietf/meeting/tests_views.py +++ b/ietf/meeting/tests_views.py @@ -105,11 +105,11 @@ class MeetingTests(TestCase): self.assertEqual(r.status_code, 200) q = PyQuery(r.content) agenda_content = q("#content").html() - self.assertTrue(session.group.acronym in agenda_content) - self.assertTrue(session.group.name in agenda_content) - self.assertTrue(session.group.parent.acronym.upper() in agenda_content) - self.assertTrue(slot.location.name in agenda_content) - self.assertTrue(time_interval in agenda_content) + self.assertIn(session.group.acronym, agenda_content) + self.assertIn(session.group.name, agenda_content) + self.assertIn(session.group.parent.acronym.upper(), agenda_content) + self.assertIn(slot.location.name, agenda_content) + self.assertIn(time_interval, agenda_content) # plain time_interval = "%s-%s" % (slot.time.strftime("%H:%M").lstrip("0"), (slot.time + slot.duration).strftime("%H:%M").lstrip("0")) @@ -118,11 +118,11 @@ class MeetingTests(TestCase): self.assertEqual(r.status_code, 200) q = PyQuery(r.content) agenda_content = q("#content").html() - self.assertTrue(session.group.acronym in agenda_content) - self.assertTrue(session.group.name in agenda_content) - self.assertTrue(session.group.parent.acronym.upper() in agenda_content) - self.assertTrue(slot.location.name in agenda_content) - self.assertTrue(time_interval in agenda_content) + self.assertIn(session.group.acronym, agenda_content) + self.assertIn(session.group.name, agenda_content) + self.assertIn(session.group.parent.acronym.upper(), agenda_content) + self.assertIn(slot.location.name, agenda_content) + self.assertIn(time_interval, agenda_content) # Make sure there's a frame for the agenda and it points to the right place self.assertTrue(any([session.materials.get(type='agenda').href() in x.attrib["data-src"] for x in q('tr div.modal-body div.frame')])) @@ -133,7 +133,6 @@ class MeetingTests(TestCase): # future meeting, no agenda r = self.client.get(urlreverse("ietf.meeting.views.agenda", kwargs=dict(num=future_meeting.number))) - self.assertEqual(r.status_code, 200) self.assertContains(r, "There is no agenda available yet.") self.assertTemplateUsed(r, 'meeting/no-agenda.html') @@ -144,20 +143,18 @@ class MeetingTests(TestCase): r = self.client.get(urlreverse("ietf.meeting.views.agenda", kwargs=dict(num=meeting.number, ext=".txt"))) self.assertEqual(r.status_code, 200) agenda_content = r.content - self.assertTrue(session.group.acronym in agenda_content) - self.assertTrue(session.group.name in agenda_content) - self.assertTrue(session.group.parent.acronym.upper() in agenda_content) - self.assertTrue(slot.location.name in agenda_content) + self.assertIn(session.group.acronym, agenda_content) + self.assertIn(session.group.name, agenda_content) + self.assertIn(session.group.parent.acronym.upper(), agenda_content) + self.assertIn(slot.location.name, agenda_content) - self.assertTrue(time_interval in agenda_content) + self.assertIn(time_interval, agenda_content) r = self.client.get(urlreverse("ietf.meeting.views.agenda", kwargs=dict(num=meeting.number,name=meeting.unofficial_schedule.name,owner=meeting.unofficial_schedule.owner.email()))) - self.assertEqual(r.status_code, 200) self.assertContains(r, 'not the official schedule') # future meeting, no agenda r = self.client.get(urlreverse("ietf.meeting.views.agenda", kwargs=dict(num=future_meeting.number, ext=".txt"))) - self.assertEqual(r.status_code, 200) self.assertContains(r, "There is no agenda available yet.") self.assertTemplateUsed(r, 'meeting/no-agenda.txt') @@ -165,48 +162,42 @@ class MeetingTests(TestCase): r = self.client.get(urlreverse("ietf.meeting.views.agenda", kwargs=dict(num=meeting.number, ext=".csv"))) self.assertEqual(r.status_code, 200) agenda_content = r.content - self.assertTrue(session.group.acronym in agenda_content) - self.assertTrue(session.group.name in agenda_content) - self.assertTrue(session.group.parent.acronym.upper() in agenda_content) - self.assertTrue(slot.location.name in agenda_content) + self.assertIn(session.group.acronym, agenda_content) + self.assertIn(session.group.name, agenda_content) + self.assertIn(session.group.parent.acronym.upper(), agenda_content) + self.assertIn(slot.location.name, agenda_content) self.assertContains(r, session.materials.get(type='agenda').uploaded_filename) self.assertContains(r, session.materials.filter(type='slides').exclude(states__type__slug='slides',states__slug='deleted').first().uploaded_filename) - self.assertFalse(session.materials.filter(type='slides',states__type__slug='slides',states__slug='deleted').first().uploaded_filename in unicontent(r)) + self.assertNotContains(r, session.materials.filter(type='slides',states__type__slug='slides',states__slug='deleted').first().uploaded_filename) # iCal r = self.client.get(urlreverse("ietf.meeting.views.ical_agenda", kwargs=dict(num=meeting.number)) + "?" + session.group.parent.acronym.upper()) - self.assertEqual(r.status_code, 200) - agenda_content = r.content - self.assertTrue(session.group.acronym in agenda_content) - self.assertTrue(session.group.name in agenda_content) - self.assertTrue(slot.location.name in agenda_content) - self.assertTrue("BEGIN:VTIMEZONE" in agenda_content) - self.assertTrue("END:VTIMEZONE" in agenda_content) + self.assertContains(r, session.group.acronym) + self.assertContains(r, session.group.name) + self.assertContains(r, slot.location.name) + self.assertContains(r, "BEGIN:VTIMEZONE") + self.assertContains(r, "END:VTIMEZONE") self.assertContains(r, session.agenda().href()) self.assertContains(r, session.materials.filter(type='slides').exclude(states__type__slug='slides',states__slug='deleted').first().href()) # 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 unicontent(r)) + #self.assertNotContains(r, session.materials.filter(type='slides',states__type__slug='slides',states__slug='deleted').first().get_absolute_url()) # week view r = self.client.get(urlreverse("ietf.meeting.views.week_view", kwargs=dict(num=meeting.number))) - self.assertEqual(r.status_code, 200) - agenda_content = unicontent(r) - self.assertNotIn('CANCELLED',agenda_content) - self.assertTrue(session.group.acronym in agenda_content) - self.assertTrue(slot.location.name in agenda_content) + self.assertNotContains(r, 'CANCELLED') + self.assertContains(r, session.group.acronym) + self.assertContains(r, slot.location.name) # week view with a cancelled session session.status_id='canceled' session.save() r = self.client.get(urlreverse("ietf.meeting.views.week_view", kwargs=dict(num=meeting.number))) - self.assertEqual(r.status_code, 200) - agenda_content = unicontent(r) - self.assertIn('CANCELLED',agenda_content) - self.assertTrue(session.group.acronym in agenda_content) - self.assertTrue(slot.location.name in agenda_content) + self.assertContains(r, 'CANCELLED') + self.assertContains(r, session.group.acronym) + self.assertContains(r, slot.location.name) def test_agenda_current_audio(self): date = datetime.date.today() @@ -226,7 +217,7 @@ class MeetingTests(TestCase): url = urlreverse("ietf.meeting.views.agenda_by_room",kwargs=dict(num=meeting.number,name=meeting.unofficial_schedule.name,owner=meeting.unofficial_schedule.owner.email())) r = self.client.get(url) self.assertTrue(all([x in unicontent(r) for x in ['mars','Test Room',]])) - self.assertFalse('IESG Breakfast' in unicontent(r)) + self.assertNotContains(r, 'IESG Breakfast') def test_agenda_by_type(self): meeting = make_meeting_test_data() @@ -239,7 +230,7 @@ class MeetingTests(TestCase): url = urlreverse("ietf.meeting.views.agenda_by_type",kwargs=dict(num=meeting.number,name=meeting.unofficial_schedule.name,owner=meeting.unofficial_schedule.owner.email())) r = self.client.get(url) self.assertTrue(all([x in unicontent(r) for x in ['mars','Test Room',]])) - self.assertFalse('IESG Breakfast' in unicontent(r)) + self.assertNotContains(r, 'IESG Breakfast') url = urlreverse("ietf.meeting.views.agenda_by_type",kwargs=dict(num=meeting.number,type='session')) r = self.client.get(url) @@ -266,7 +257,7 @@ class MeetingTests(TestCase): r = self.client.get(url) self.assertEqual(r.status_code,200) self.assertTrue(all([x in unicontent(r) for x in ['mars','Test Room','Breakfast Room']])) - self.assertFalse('IESG Breakfast' in unicontent(r)) + self.assertNotContains(r, 'IESG Breakfast') def test_agenda_week_view(self): @@ -364,7 +355,7 @@ class MeetingTests(TestCase): self.assertEqual(r.status_code, 200) self.assertContains(r, meeting.number) self.assertContains(r, "mars") - self.assertFalse("No session requested" in unicontent(r)) + self.assertNotContains(r, "No session requested") self.client.login(username="ad", password="ad+password") r = self.client.get(urlreverse("ietf.meeting.views.materials_editable_groups", kwargs={'num':meeting.number})) @@ -400,7 +391,7 @@ class MeetingTests(TestCase): url = urlreverse('ietf.meeting.views.proceedings_acknowledgements',kwargs={'num':meeting.number}) response = self.client.get(url) self.assertEqual(response.status_code, 200) - self.assertTrue('test acknowledgements' in response.content) + self.assertIn('test acknowledgements', response.content) @patch('urllib2.urlopen') def test_proceedings_attendees(self, mock_urlopen): @@ -411,7 +402,7 @@ class MeetingTests(TestCase): url = urlreverse('ietf.meeting.views.proceedings_attendees',kwargs={'num':96}) response = self.client.get(url) self.assertEqual(response.status_code, 200) - self.assertTrue('Attendee List' in response.content) + self.assertIn('Attendee List', response.content) q = PyQuery(response.content) self.assertEqual(1,len(q("#id_attendees tbody tr"))) @@ -427,7 +418,7 @@ class MeetingTests(TestCase): url = urlreverse('ietf.meeting.views.proceedings_overview',kwargs={'num':96}) response = self.client.get(url) self.assertEqual(response.status_code, 200) - self.assertTrue('The Internet Engineering Task Force' in response.content) + self.assertIn('The Internet Engineering Task Force', response.content) def test_proceedings_progress_report(self): make_meeting_test_data() @@ -437,7 +428,7 @@ class MeetingTests(TestCase): url = urlreverse('ietf.meeting.views.proceedings_progress_report',kwargs={'num':96}) response = self.client.get(url) self.assertEqual(response.status_code, 200) - self.assertTrue('Progress Report' in response.content) + self.assertIn('Progress Report', response.content) def test_feed(self): meeting = make_meeting_test_data() @@ -456,7 +447,7 @@ class MeetingTests(TestCase): url = urlreverse('ietf.meeting.views.important_dates',kwargs={'num':meeting.number}) r = self.client.get(url) self.assertEqual(r.status_code, 200) - self.assertIn(str(meeting.importantdate_set.first().date), unicontent(r)) + self.assertContains(r, str(meeting.importantdate_set.first().date)) idn = ImportantDateName.objects.filter(used=True).first() pre_date = meeting.importantdate_set.get(name=idn).date idn.default_offset_days -= 1 @@ -480,7 +471,7 @@ class MeetingTests(TestCase): self.assertEqual(r.status_code, 200) self.assertEqual(r.get('Content-Type'), "text/calendar") self.assertContains(r, 'BEGIN:VEVENT') - self.assertEqual(r.content.count('UID'), 2) + self.assertEqual(r.content.count(b'UID'), 2) self.assertContains(r, 'SUMMARY:mars - Martian Special Interest Group') self.assertContains(r, t1.time.strftime('%Y%m%dT%H%M%S')) self.assertContains(r, t2.time.strftime('%Y%m%dT%H%M%S')) @@ -491,7 +482,7 @@ class MeetingTests(TestCase): self.assertEqual(r.status_code, 200) self.assertEqual(r.get('Content-Type'), "text/calendar") self.assertContains(r, 'BEGIN:VEVENT') - self.assertEqual(r.content.count('UID'), 1) + self.assertEqual(r.content.count(b'UID'), 1) self.assertContains(r, 'SUMMARY:mars - Martian Special Interest Group') self.assertContains(r, t1.time.strftime('%Y%m%dT%H%M%S')) self.assertNotContains(r, t2.time.strftime('%Y%m%dT%H%M%S')) @@ -736,7 +727,7 @@ class SessionDetailsTests(TestCase): url = urlreverse('ietf.meeting.views.session_details', kwargs=dict(num=session.meeting.number, acronym=group.acronym)) r = self.client.get(url) self.assertTrue(all([x in unicontent(r) for x in ('slides','agenda','minutes','draft')])) - self.assertFalse('deleted' in unicontent(r)) + self.assertNotContains(r, 'deleted') def test_add_session_drafts(self): group = GroupFactory.create(type_id='wg',state_id='active') @@ -764,7 +755,7 @@ class SessionDetailsTests(TestCase): r = self.client.post(url,dict(drafts=[new_draft.pk, old_draft.pk])) self.assertTrue(r.status_code, 200) q = PyQuery(r.content) - self.assertTrue("Already linked:" in q('form .alert-danger').text()) + self.assertIn("Already linked:", q('form .alert-danger').text()) self.assertEqual(1,session.sessionpresentation_set.count()) r = self.client.post(url,dict(drafts=[new_draft.pk,])) @@ -913,7 +904,7 @@ class InterimTests(TestCase): r = self.client.post(url, initial) self.assertRedirects(r, urlreverse('ietf.meeting.views.interim_announce')) self.assertEqual(len(outbox), len_before + 1) - self.assertTrue('WG Virtual Meeting' in outbox[-1]['Subject']) + self.assertIn('WG Virtual Meeting', outbox[-1]['Subject']) def test_interim_approve_by_ad(self): make_meeting_test_data() @@ -926,7 +917,7 @@ class InterimTests(TestCase): for session in meeting.session_set.all(): self.assertEqual(session.status.slug, 'scheda') self.assertEqual(len(outbox), length_before + 1) - self.assertTrue('ready for announcement' in outbox[-1]['Subject']) + self.assertIn('ready for announcement', outbox[-1]['Subject']) def test_interim_approve_by_secretariat(self): make_meeting_test_data() @@ -949,7 +940,7 @@ class InterimTests(TestCase): self.assertContains(r, 'IETF - %02d'%int(ietf.meeting.number)) q = PyQuery(r.content) id="-%s" % interim.group.acronym - self.assertTrue('CANCELLED' in q('[id*="'+id+'"]').text()) + self.assertIn('CANCELLED', q('[id*="'+id+'"]').text()) def test_upcoming(self): make_meeting_test_data() @@ -964,7 +955,7 @@ class InterimTests(TestCase): self.assertContains(r, 'IETF - 42') # cancelled session q = PyQuery(r.content) - self.assertTrue('CANCELLED' in q('[id*="-ames"]').text()) + self.assertIn('CANCELLED', q('[id*="-ames"]').text()) self.check_interim_tabs(url) def test_upcoming_ical(self): @@ -973,14 +964,14 @@ class InterimTests(TestCase): r = self.client.get(url) self.assertEqual(r.status_code, 200) self.assertEqual(r.get('Content-Type'), "text/calendar") - self.assertEqual(r.content.count('UID'), 7) + self.assertEqual(r.content.count(b'UID'), 7) # check filtered output url = url + '?filters=mars' r = self.client.get(url) self.assertEqual(r.status_code, 200) self.assertEqual(r.get('Content-Type'), "text/calendar") # print r.content - self.assertEqual(r.content.count('UID'), 2) + self.assertEqual(r.content.count(b'UID'), 2) def test_interim_request_permissions(self): @@ -1094,8 +1085,8 @@ class InterimTests(TestCase): self.assertTrue(os.path.exists(path)) # check notice to secretariat self.assertEqual(len(outbox), length_before + 1) - self.assertTrue('interim meeting ready for announcement' in outbox[-1]['Subject']) - self.assertTrue('iesg-secretary@ietf.org' in outbox[-1]['To']) + self.assertIn('interim meeting ready for announcement', outbox[-1]['Subject']) + self.assertIn('iesg-secretary@ietf.org', outbox[-1]['To']) def test_interim_request_single_in_person(self): make_meeting_test_data() @@ -1467,7 +1458,7 @@ class InterimTests(TestCase): self.assertEqual(session.status_id, 'canceled') self.assertEqual(session.agenda_note, comments) self.assertEqual(len(outbox), length_before + 1) - self.assertTrue('Interim Meeting Cancelled' in outbox[-1]['Subject']) + self.assertIn('Interim Meeting Cancelled', outbox[-1]['Subject']) def test_interim_request_edit_no_notice(self): '''Edit a request. No notice should go out if it hasn't been announced yet''' @@ -1542,7 +1533,7 @@ class InterimTests(TestCase): r = self.client.post(url, data) self.assertRedirects(r, urlreverse('ietf.meeting.views.interim_request_details', kwargs={'number': meeting.number})) self.assertEqual(len(outbox),length_before+1) - self.assertTrue('CHANGED' in outbox[-1]['Subject']) + self.assertIn('CHANGED', outbox[-1]['Subject']) session = meeting.session_set.first() timeslot = session.official_timeslotassignment().timeslot self.assertEqual(timeslot.time,new_time) @@ -1570,7 +1561,7 @@ class InterimTests(TestCase): length_before = len(outbox) send_interim_approval_request(meetings=[meeting]) self.assertEqual(len(outbox),length_before+1) - self.assertTrue('New Interim Meeting Request' in outbox[-1]['Subject']) + self.assertIn('New Interim Meeting Request', outbox[-1]['Subject']) def test_send_interim_cancellation_notice(self): make_meeting_test_data() @@ -1578,7 +1569,7 @@ class InterimTests(TestCase): length_before = len(outbox) send_interim_cancellation_notice(meeting=meeting) self.assertEqual(len(outbox),length_before+1) - self.assertTrue('Interim Meeting Cancelled' in outbox[-1]['Subject']) + self.assertIn('Interim Meeting Cancelled', outbox[-1]['Subject']) def test_send_interim_minutes_reminder(self): make_meeting_test_data() @@ -1588,7 +1579,7 @@ class InterimTests(TestCase): length_before = len(outbox) send_interim_minutes_reminder(meeting=meeting) self.assertEqual(len(outbox),length_before+1) - self.assertTrue('Action Required: Minutes' in outbox[-1]['Subject']) + self.assertIn('Action Required: Minutes', outbox[-1]['Subject']) def test_group_ical(self): @@ -1607,7 +1598,7 @@ class InterimTests(TestCase): self.assertEqual(r.status_code, 200) self.assertEqual(r.get('Content-Type'), "text/calendar") self.assertContains(r, 'BEGIN:VEVENT') - self.assertEqual(r.content.count('UID'), 2) + self.assertEqual(r.content.count(b'UID'), 2) self.assertContains(r, 'SUMMARY:mars - Martian Special Interest Group') self.assertContains(r, t1.time.strftime('%Y%m%dT%H%M%S')) self.assertContains(r, t2.time.strftime('%Y%m%dT%H%M%S')) @@ -1618,7 +1609,7 @@ class InterimTests(TestCase): self.assertEqual(r.status_code, 200) self.assertEqual(r.get('Content-Type'), "text/calendar") self.assertContains(r, 'BEGIN:VEVENT') - self.assertEqual(r.content.count('UID'), 1) + self.assertEqual(r.content.count(b'UID'), 1) self.assertContains(r, 'SUMMARY:mars - Martian Special Interest Group') self.assertContains(r, t1.time.strftime('%Y%m%dT%H%M%S')) self.assertNotContains(r, t2.time.strftime('%Y%m%dT%H%M%S')) @@ -1631,27 +1622,27 @@ class AjaxTests(TestCase): url = urlreverse('ietf.meeting.views.ajax_get_utc') + "?date=2016-1-1&time=badtime&timezone=UTC" r = self.client.get(url) self.assertEqual(r.status_code, 200) - data = json.loads(r.content) + data = r.json() self.assertEqual(data["error"], True) url = urlreverse('ietf.meeting.views.ajax_get_utc') + "?date=2016-1-1&time=25:99&timezone=UTC" r = self.client.get(url) self.assertEqual(r.status_code, 200) - data = json.loads(r.content) + data = r.json() self.assertEqual(data["error"], True) url = urlreverse('ietf.meeting.views.ajax_get_utc') + "?date=2016-1-1&time=10:00am&timezone=UTC" r = self.client.get(url) self.assertEqual(r.status_code, 200) - data = json.loads(r.content) + data = r.json() self.assertEqual(data["error"], True) # test good query url = urlreverse('ietf.meeting.views.ajax_get_utc') + "?date=2016-1-1&time=12:00&timezone=America/Los_Angeles" r = self.client.get(url) self.assertEqual(r.status_code, 200) - data = json.loads(r.content) - self.assertTrue('timezone' in data) - self.assertTrue('time' in data) - self.assertTrue('utc' in data) - self.assertTrue('error' not in data) + data = r.json() + self.assertIn('timezone', data) + self.assertIn('time', data) + self.assertIn('utc', data) + self.assertIn('error' not, data) self.assertEqual(data['utc'], '20:00') class FloorPlanTests(TestCase): @@ -1761,7 +1752,7 @@ class MaterialsTests(TestCase): r = self.client.get(url) self.assertEqual(r.status_code, 200) q = PyQuery(r.content) - self.assertTrue('Upload' in str(q("title"))) + self.assertIn('Upload', str(q("title"))) self.assertFalse(session.sessionpresentation_set.exists()) test_file = StringIO(b'%PDF-1.4\n%âãÏÓ\nthis is some text for a test') test_file.name = "not_really.pdf" @@ -1772,7 +1763,7 @@ class MaterialsTests(TestCase): r = self.client.get(url) self.assertEqual(r.status_code, 200) q = PyQuery(r.content) - self.assertTrue('Revise' in str(q("title"))) + self.assertIn('Revise', str(q("title"))) test_file = StringIO('%PDF-1.4\n%âãÏÓ\nthis is some different text for a test') test_file.name = "also_not_really.pdf" r = self.client.post(url,dict(file=test_file)) @@ -1796,7 +1787,7 @@ class MaterialsTests(TestCase): r = self.client.get(url) self.assertEqual(r.status_code, 200) q = PyQuery(r.content) - self.assertTrue('Upload' in str(q("title"))) + self.assertIn('Upload', str(q("title"))) self.assertFalse(session.sessionpresentation_set.exists()) test_file = StringIO(b'%PDF-1.4\n%âãÏÓ\nthis is some text for a test') test_file.name = "not_really.pdf" @@ -1814,7 +1805,7 @@ class MaterialsTests(TestCase): r = self.client.get(url) self.assertEqual(r.status_code, 200) q = PyQuery(r.content) - self.assertTrue('Upload' in str(q("title"))) + self.assertIn('Upload', str(q("title"))) def test_upload_minutes_agenda(self): @@ -1829,7 +1820,7 @@ class MaterialsTests(TestCase): r = self.client.get(url) self.assertEqual(r.status_code, 200) q = PyQuery(r.content) - self.assertTrue('Upload' in str(q("Title"))) + self.assertIn('Upload', str(q("Title"))) self.assertFalse(session.sessionpresentation_set.exists()) self.assertFalse(q('form input[type="checkbox"]')) @@ -1883,7 +1874,7 @@ class MaterialsTests(TestCase): r = self.client.get(url) self.assertEqual(r.status_code, 200) q = PyQuery(r.content) - self.assertTrue('Revise' in str(q("Title"))) + self.assertIn('Revise', str(q("Title"))) test_file = StringIO('this is some different text for a test') test_file.name = "also_not_really.txt" r = self.client.post(url,dict(file=test_file,apply_to_all=True)) @@ -1917,7 +1908,7 @@ class MaterialsTests(TestCase): r = self.client.get(url) self.assertEqual(r.status_code, 200) q = PyQuery(r.content) - self.assertTrue('Upload' in str(q("Title"))) + self.assertIn('Upload', str(q("Title"))) self.assertFalse(session.sessionpresentation_set.exists()) self.assertFalse(q('form input[type="checkbox"]')) @@ -1938,7 +1929,7 @@ class MaterialsTests(TestCase): r = self.client.get(url) self.assertEqual(r.status_code, 200) q = PyQuery(r.content) - self.assertTrue('Upload' in str(q("title"))) + self.assertIn('Upload', str(q("title"))) self.assertFalse(session.sessionpresentation_set.filter(document__type_id=doctype)) test_file = StringIO('this is some text for a test') test_file.name = "not_really.txt" @@ -1961,7 +1952,7 @@ class MaterialsTests(TestCase): r = self.client.get(url) self.assertEqual(r.status_code, 200) q = PyQuery(r.content) - self.assertTrue('Upload' in str(q("title"))) + self.assertIn('Upload', str(q("title"))) self.assertFalse(session1.sessionpresentation_set.filter(document__type_id='slides')) test_file = StringIO('this is not really a slide') test_file.name = 'not_really.txt' @@ -1989,7 +1980,7 @@ class MaterialsTests(TestCase): r = self.client.get(url) self.assertTrue(r.status_code, 200) q = PyQuery(r.content) - self.assertTrue('Revise' in str(q("title"))) + self.assertIn('Revise', str(q("title"))) test_file = StringIO('new content for the second slide deck') test_file.name = 'doesnotmatter.txt' r = self.client.post(url,dict(file=test_file,title='rename the presentation',apply_to_all=False)) @@ -2158,8 +2149,8 @@ class SessionTests(TestCase): url = urlreverse('ietf.meeting.views.request_minutes',kwargs={'num':meeting.number}) login_testing_unauthorized(self,"secretary",url) r = self.client.get(url) - self.assertNotIn(has_minutes.group.acronym, unicontent(r).lower()) - self.assertIn(has_no_minutes.group.acronym, unicontent(r).lower()) + self.assertNotContains(r, has_minutes.group.acronym) + self.assertContains(r, has_no_minutes.group.acronym) r = self.client.post(url,{'to':'wgchairs@ietf.org', 'cc': 'irsg@irtf.org', 'subject': 'I changed the subject', diff --git a/ietf/nomcom/tests.py b/ietf/nomcom/tests.py index 061ce5e9b..6953026cc 100644 --- a/ietf/nomcom/tests.py +++ b/ietf/nomcom/tests.py @@ -1461,7 +1461,7 @@ class NewActiveNomComTests(TestCase): fb_count_before = Feedback.objects.count() response = self.client.post(url,{'email_text':"""To: rjsparks@nostrum.com From: Robert Sparks -Subject: Junk message for feedback testing +Subject: Junk message for feedback testing =?iso-8859-1?q?p=F6stal?= Message-ID: <566F2FE5.1050401@nostrum.com> Date: Mon, 14 Dec 2015 15:08:53 -0600 Content-Type: text/plain; charset=utf-8; format=flowed @@ -2058,8 +2058,7 @@ class TopicTests(TestCase): feedback_url = reverse('ietf.nomcom.views.public_feedback',kwargs={'year':self.nc.year() }) login_testing_unauthorized(self, self.plain_person.user.username, feedback_url) r = self.client.get(feedback_url) - self.assertEqual(r.status_code,200) - self.assertNotIn(topic.subject, unicontent(r)) + self.assertNotContains(r, topic.subject) topic_url = feedback_url + '?topic=%d'%topic.pk r = self.client.get(topic_url) self.assertEqual(r.status_code,404) @@ -2073,8 +2072,7 @@ class TopicTests(TestCase): valid_user = self.nc.nominee_set.first().person self.client.login(username=valid_user.user.username,password=valid_user.user.username+"+password") r = self.client.get(feedback_url) - self.assertEqual(r.status_code,200) - self.assertIn(topic.subject, unicontent(r)) + self.assertContains(r, topic.subject) r = self.client.get(topic_url) self.assertEqual(r.status_code,200) r = self.client.post(topic_url, {'comments':'junk', 'confirmation':False}) diff --git a/ietf/submit/tests.py b/ietf/submit/tests.py index be5f7cc58..04c74642b 100644 --- a/ietf/submit/tests.py +++ b/ietf/submit/tests.py @@ -499,8 +499,8 @@ class SubmitTests(TestCase): self.assertTrue(name in str(outbox[-1])) r = self.client.get(urlreverse('ietf.doc.views_search.recent_drafts')) self.assertEqual(r.status_code, 200) - self.assertIn(draft.name, unicontent(r)) - self.assertIn(draft.title, unicontent(r)) + self.assertContains(r, draft.name) + self.assertContains(r, draft.title) def test_submit_existing_txt(self): @@ -624,9 +624,8 @@ class SubmitTests(TestCase): self.assertEqual(draft.relateddocument_set.filter(relationship_id='replaces').count(), replaces_count) # r = self.client.get(urlreverse('ietf.doc.views_search.recent_drafts')) - self.assertEqual(r.status_code, 200) - self.assertIn(draft.name, unicontent(r)) - self.assertIn(draft.title, unicontent(r)) + self.assertContains(r, draft.name) + self.assertContains(r, draft.title) def test_submit_cancel_confirmation(self): ad=Person.objects.get(user__username='ad') @@ -819,8 +818,7 @@ class SubmitTests(TestCase): # status page as unpriviliged => no edit button r = self.client.get(unprivileged_status_url) - self.assertEqual(r.status_code, 200) - self.assertTrue(("submission status of %s" % name) in unicontent(r).lower()) + self.assertContains(r, "submission status of %s" % name) q = PyQuery(r.content) adjust_button = q('[type=submit]:contains("Adjust")') self.assertEqual(len(adjust_button), 0) diff --git a/ietf/utils/management/commands/pyflakes.py b/ietf/utils/management/commands/pyflakes.py index e3b1b0a69..ab2b5e046 100644 --- a/ietf/utils/management/commands/pyflakes.py +++ b/ietf/utils/management/commands/pyflakes.py @@ -66,7 +66,7 @@ def check(codeString, filename, verbosity=1): if lines[message.lineno-1].find('pyflakes:ignore') < 0] # honour pyflakes: - messages.sort(lambda a, b: cmp(a.lineno, b.lineno)) + messages.sort(key=lambda x: x.lineno) if verbosity > 0: if len(messages): sys.stderr.write('F')