From f33ecaa1a4f40cdf8ea02eb7f6bc5ece48fb5c1a Mon Sep 17 00:00:00 2001 From: Henrik Levkowetz Date: Thu, 4 Jul 2019 16:01:32 +0000 Subject: [PATCH] Fixed a test that compared an int with a meeting number string. Changed meeting test data to use meeting number 72 instead of 42, because proceedings code gives 404 for meetings before 65. Changed a number of StringIO() to BytesIO(). - Legacy-Id: 16378 --- ietf/doc/tests.py | 29 +++++++++++++-------------- ietf/meeting/test_data.py | 19 +++++++++--------- ietf/meeting/tests_api.py | 5 +++-- ietf/meeting/tests_js.py | 8 ++++---- ietf/meeting/tests_views.py | 36 ++++++++++++++++------------------ ietf/secr/meetings/tests.py | 18 ++++++++--------- ietf/secr/proceedings/tests.py | 14 ++++++------- ietf/utils/test_data.py | 2 +- 8 files changed, 65 insertions(+), 66 deletions(-) diff --git a/ietf/doc/tests.py b/ietf/doc/tests.py index 980c36281..b5160bc4e 100644 --- a/ietf/doc/tests.py +++ b/ietf/doc/tests.py @@ -4,7 +4,6 @@ import os import shutil import datetime -import json import sys import urllib.parse import bibtexparser @@ -129,9 +128,9 @@ class SearchTests(TestCase): CharterFactory(group=draft.group,name='charter-ietf-mars') DocumentFactory(type_id='conflrev',name='conflict-review-imaginary-irtf-submission') DocumentFactory(type_id='statchg',name='status-change-imaginary-mid-review') - DocumentFactory(type_id='agenda',name='agenda-42-mars') - DocumentFactory(type_id='minutes',name='minutes-42-mars') - DocumentFactory(type_id='slides',name='slides-42-mars') + DocumentFactory(type_id='agenda',name='agenda-72-mars') + DocumentFactory(type_id='minutes',name='minutes-72-mars') + DocumentFactory(type_id='slides',name='slides-72-mars') draft.save_with_history([DocEvent.objects.create(doc=draft, rev=draft.rev, type="changed_document", by=Person.objects.get(user__username="secretary"), desc="Test")]) @@ -629,9 +628,9 @@ Man Expires September 22, 2015 [Page 3] IndividualDraftFactory(name='draft-imaginary-independent-submission') ConflictReviewFactory(name='conflict-review-imaginary-irtf-submission') CharterFactory(name='charter-ietf-mars') - DocumentFactory(type_id='agenda',name='agenda-42-mars') - DocumentFactory(type_id='minutes',name='minutes-42-mars') - DocumentFactory(type_id='slides',name='slides-42-mars-1-active') + DocumentFactory(type_id='agenda',name='agenda-72-mars') + DocumentFactory(type_id='minutes',name='minutes-72-mars') + DocumentFactory(type_id='slides',name='slides-72-mars-1-active') statchg = DocumentFactory(type_id='statchg',name='status-change-imaginary-mid-review') statchg.set_state(State.objects.get(type_id='statchg',slug='adrev')) @@ -640,12 +639,12 @@ Man Expires September 22, 2015 [Page 3] "conflict-review-imaginary-irtf-submission", "status-change-imaginary-mid-review", "charter-ietf-mars", - "agenda-42-mars", - "minutes-42-mars", - "slides-42-mars-1-active", + "agenda-72-mars", + "minutes-72-mars", + "slides-72-mars-1-active", # TODO: add - #"bluesheets-42-mars-1", - #"recording-42-mars-1-00", + #"bluesheets-72-mars-1", + #"recording-72-mars-1-00", ]: doc = Document.objects.get(name=docname) # give it some history @@ -678,7 +677,7 @@ class DocTestCase(TestCase): self.assertEqual(r.status_code, 200) def test_document_material(self): - MeetingFactory(type_id='ietf',number='42') + MeetingFactory(type_id='ietf',number='72') mars = GroupFactory(type_id='wg',acronym='mars') marschairman = PersonFactory(user__username='marschairman') mars.role_set.create(name_id='chair',person=marschairman,email=marschairman.email()) @@ -692,8 +691,8 @@ class DocTestCase(TestCase): doc.set_state(State.objects.get(type="slides", slug="active")) session = Session.objects.create( - name = "session-42-mars-1", - meeting = Meeting.objects.get(number='42'), + name = "session-72-mars-1", + meeting = Meeting.objects.get(number='72'), group = Group.objects.get(acronym='mars'), status = SessionStatusName.objects.create(slug='scheduled', name='Scheduled'), modified = datetime.datetime.now(), diff --git a/ietf/meeting/test_data.py b/ietf/meeting/test_data.py index 349f1fbe7..53879166f 100644 --- a/ietf/meeting/test_data.py +++ b/ietf/meeting/test_data.py @@ -1,3 +1,4 @@ +# Copyright The IETF Trust 2013-2019, All Rights Reserved import datetime from django.utils.text import slugify @@ -70,7 +71,7 @@ def make_meeting_test_data(meeting=None): #secretary = Person.objects.get(user__username="secretary") ## not used if not meeting: - meeting = Meeting.objects.get(number="42", type="ietf") + meeting = Meeting.objects.get(number="72", type="ietf") schedule = Schedule.objects.create(meeting=meeting, owner=plainman, name="test-agenda", visible=True, public=True) unofficial_schedule = Schedule.objects.create(meeting=meeting, owner=plainman, name="test-unofficial-agenda", visible=True, public=True) @@ -157,24 +158,24 @@ def make_meeting_test_data(meeting=None): meeting.unofficial_schedule = unofficial_schedule - doc = DocumentFactory.create(name='agenda-42-mars', type_id='agenda', title="Agenda", - uploaded_filename="agenda-42-mars.txt", group=mars, rev='00', states=[('draft','active')]) + doc = DocumentFactory.create(name='agenda-72-mars', type_id='agenda', title="Agenda", + uploaded_filename="agenda-72-mars.txt", group=mars, rev='00', states=[('draft','active')]) pres = SessionPresentation.objects.create(session=mars_session,document=doc,rev=doc.rev) mars_session.sessionpresentation_set.add(pres) # - doc = DocumentFactory.create(name='minutes-42-mars', type_id='minutes', title="Minutes", - uploaded_filename="minutes-42-mars.txt", group=mars, rev='00', states=[('minutes','active')]) + doc = DocumentFactory.create(name='minutes-72-mars', type_id='minutes', title="Minutes", + uploaded_filename="minutes-72-mars.txt", group=mars, rev='00', states=[('minutes','active')]) pres = SessionPresentation.objects.create(session=mars_session,document=doc,rev=doc.rev) mars_session.sessionpresentation_set.add(pres) - doc = DocumentFactory.create(name='slides-42-mars-1-active', type_id='slides', title="Slideshow", - uploaded_filename="slides-42-mars.txt", group=mars, rev='00', + doc = DocumentFactory.create(name='slides-72-mars-1-active', type_id='slides', title="Slideshow", + uploaded_filename="slides-72-mars.txt", group=mars, rev='00', states=[('slides','active'), ('reuse_policy', 'single')]) pres = SessionPresentation.objects.create(session=mars_session,document=doc,rev=doc.rev) mars_session.sessionpresentation_set.add(pres) - doc = DocumentFactory.create(name='slides-42-mars-2-deleted', type_id='slides', - title="Bad Slideshow", uploaded_filename="slides-42-mars-2-deleted.txt", group=mars, rev='00', + doc = DocumentFactory.create(name='slides-72-mars-2-deleted', type_id='slides', + title="Bad Slideshow", uploaded_filename="slides-72-mars-2-deleted.txt", group=mars, rev='00', states=[('slides','deleted'), ('reuse_policy', 'single')]) pres = SessionPresentation.objects.create(session=mars_session,document=doc,rev=doc.rev) mars_session.sessionpresentation_set.add(pres) diff --git a/ietf/meeting/tests_api.py b/ietf/meeting/tests_api.py index f1c80a440..51f5c1ae1 100644 --- a/ietf/meeting/tests_api.py +++ b/ietf/meeting/tests_api.py @@ -1,6 +1,7 @@ # Copyright The IETF Trust 2013-2019, All Rights Reserved +# -*- coding: utf-8 -*- + import datetime -import json from urllib.parse import urlsplit from django.urls import reverse as urlreverse @@ -18,7 +19,7 @@ from ietf.utils.mail import outbox class ApiTests(TestCase): def test_update_agenda(self): meeting = make_meeting_test_data() - schedule = Schedule.objects.get(meeting__number=42,name="test-agenda") + schedule = Schedule.objects.get(meeting__number=72,name="test-agenda") mars_session = Session.objects.filter(meeting=meeting, group__acronym="mars").first() ames_session = Session.objects.filter(meeting=meeting, group__acronym="ames").first() diff --git a/ietf/meeting/tests_js.py b/ietf/meeting/tests_js.py index 914833f78..6dd0ef6e1 100644 --- a/ietf/meeting/tests_js.py +++ b/ietf/meeting/tests_js.py @@ -80,10 +80,10 @@ class ScheduleEditTests(StaticLiveServerTestCase): def testUnschedule(self): - self.assertEqual(SchedTimeSessAssignment.objects.filter(session__meeting__number=42,session__group__acronym='mars',schedule__name='test-agenda').count(),1) + self.assertEqual(SchedTimeSessAssignment.objects.filter(session__meeting__number=72,session__group__acronym='mars',schedule__name='test-agenda').count(),1) self.login() - url = self.absreverse('ietf.meeting.views.edit_agenda',kwargs=dict(num='42',name='test-agenda',owner='plain@example.com')) + url = self.absreverse('ietf.meeting.views.edit_agenda',kwargs=dict(num='72',name='test-agenda',owner='plain@example.com')) self.driver.get(url) q = PyQuery(self.driver.page_source) @@ -97,7 +97,7 @@ class ScheduleEditTests(StaticLiveServerTestCase): self.assertTrue(len(q('#sortable-list #session_1'))>0) time.sleep(0.1) # The API that modifies the database runs async - self.assertEqual(SchedTimeSessAssignment.objects.filter(session__meeting__number=42,session__group__acronym='mars',schedule__name='test-agenda').count(),0) + self.assertEqual(SchedTimeSessAssignment.objects.filter(session__meeting__number=72,session__group__acronym='mars',schedule__name='test-agenda').count(),0) @skipIf(skip_selenium, skip_message) class SlideReorderTests(StaticLiveServerTestCase): @@ -169,5 +169,5 @@ class SlideReorderTests(StaticLiveServerTestCase): # condition_data() # # def testOpenSchedule(self): -# url = urlreverse('ietf.meeting.views.edit_agenda', kwargs=dict(num='42',name='test-agenda')) +# url = urlreverse('ietf.meeting.views.edit_agenda', kwargs=dict(num='72',name='test-agenda')) # r = self.client.get(url) diff --git a/ietf/meeting/tests_views.py b/ietf/meeting/tests_views.py index 5436aae2e..1af0ebd78 100644 --- a/ietf/meeting/tests_views.py +++ b/ietf/meeting/tests_views.py @@ -1,24 +1,24 @@ # Copyright The IETF Trust 2009-2019, All Rights Reserved # -*- coding: utf-8 -*- -import json import os import shutil import datetime import urllib.parse +import six import random -from unittest import skipIf -import debug # pyflakes:ignore +from unittest import skipIf +from mock import patch +from pyquery import PyQuery +from io import StringIO, BytesIO +from bs4 import BeautifulSoup from django.urls import reverse as urlreverse from django.conf import settings from django.contrib.auth.models import User -from mock import patch -from pyquery import PyQuery -from io import StringIO -from bs4 import BeautifulSoup +import debug # pyflakes:ignore from ietf.doc.models import Document from ietf.group.models import Group, Role @@ -393,9 +393,9 @@ class MeetingTests(TestCase): self.assertEqual(response.status_code, 200) self.assertIn('test acknowledgements', response.content) - @patch('urllib2.urlopen') + @patch('six.moves.urllib.request.urlopen') def test_proceedings_attendees(self, mock_urlopen): - mock_urlopen.return_value = StringIO('[{"LastName":"Smith","FirstName":"John","Company":"ABC","Country":"US"}]') + mock_urlopen.return_value = BytesIO(b'[{"LastName":"Smith","FirstName":"John","Company":"ABC","Country":"US"}]') make_meeting_test_data() meeting = MeetingFactory(type_id='ietf', date=datetime.date(2016,7,14), number="96") finalize(meeting) @@ -406,12 +406,12 @@ class MeetingTests(TestCase): q = PyQuery(response.content) self.assertEqual(1,len(q("#id_attendees tbody tr"))) - @patch('urllib2.urlopen') + @patch('six.moves.urllib.request.urlopen') def test_proceedings_overview(self, mock_urlopen): '''Test proceedings IETF Overview page. Note: old meetings aren't supported so need to add a new meeting then test. ''' - mock_urlopen.return_value = StringIO('[{"LastName":"Smith","FirstName":"John","Company":"ABC","Country":"US"}]') + mock_urlopen.return_value = BytesIO(b'[{"LastName":"Smith","FirstName":"John","Company":"ABC","Country":"US"}]') make_meeting_test_data() meeting = MeetingFactory(type_id='ietf', date=datetime.date(2016,7,14), number="96") finalize(meeting) @@ -952,7 +952,7 @@ class InterimTests(TestCase): ames_interim = Meeting.objects.filter(date__gt=today, type='interim', session__group__acronym='ames', session__status='canceled').first() self.assertContains(r, mars_interim.number) self.assertContains(r, ames_interim.number) - self.assertContains(r, 'IETF - 42') + self.assertContains(r, 'IETF - 72') # cancelled session q = PyQuery(r.content) self.assertIn('CANCELLED', q('[id*="-ames"]').text()) @@ -1642,7 +1642,7 @@ class AjaxTests(TestCase): self.assertIn('timezone', data) self.assertIn('time', data) self.assertIn('utc', data) - self.assertIn('error' not, data) + self.assertNotIn('error', data) self.assertEqual(data['utc'], '20:00') class FloorPlanTests(TestCase): @@ -1688,9 +1688,9 @@ class IphoneAppJsonTests(TestCase): self.assertEqual(r.status_code,200) class FinalizeProceedingsTests(TestCase): - @patch('urllib2.urlopen') + @patch('six.moves.urllib.request.urlopen') def test_finalize_proceedings(self, mock_urlopen): - mock_urlopen.return_value = StringIO('[{"LastName":"Smith","FirstName":"John","Company":"ABC","Country":"US"}]') + mock_urlopen.return_value = BytesIO(b'[{"LastName":"Smith","FirstName":"John","Company":"ABC","Country":"US"}]') make_meeting_test_data() meeting = Meeting.objects.filter(type_id='ietf').order_by('id').last() meeting.session_set.filter(group__acronym='mars').first().sessionpresentation_set.create(document=Document.objects.filter(type='draft').first(),rev=None) @@ -1731,8 +1731,6 @@ class MaterialsTests(TestCase): def follow(url): seen.add(url) r = self.client.get(url) - if r.status_code != 200: - debug.show('url') self.assertEqual(r.status_code, 200) if not ('.' in url and url.rsplit('.', 1)[1] in ['tgz', 'pdf', ]): if r.content: @@ -1754,7 +1752,7 @@ class MaterialsTests(TestCase): q = PyQuery(r.content) 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 = StringIO('%PDF-1.4\n%âãÏÓ\nthis is some text for a test') test_file.name = "not_really.pdf" r = self.client.post(url,dict(file=test_file)) self.assertEqual(r.status_code, 302) @@ -1789,7 +1787,7 @@ class MaterialsTests(TestCase): q = PyQuery(r.content) 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 = StringIO('%PDF-1.4\n%âãÏÓ\nthis is some text for a test') test_file.name = "not_really.pdf" r = self.client.post(url,dict(file=test_file)) self.assertEqual(r.status_code, 302) diff --git a/ietf/secr/meetings/tests.py b/ietf/secr/meetings/tests.py index 325b53202..2ebe85dc2 100644 --- a/ietf/secr/meetings/tests.py +++ b/ietf/secr/meetings/tests.py @@ -154,7 +154,7 @@ class SecrMeetingTestCase(TestCase): def test_notifications(self): "Test Notifications" meeting = make_meeting_test_data() - url = reverse('ietf.secr.meetings.views.notifications',kwargs={'meeting_id':42}) + url = reverse('ietf.secr.meetings.views.notifications',kwargs={'meeting_id':72}) self.client.login(username="secretary", password="secretary+password") response = self.client.get(url) self.assertEqual(response.status_code, 200) @@ -187,7 +187,7 @@ class SecrMeetingTestCase(TestCase): def test_meetings_rooms(self): meeting = make_meeting_test_data() - url = reverse('ietf.secr.meetings.views.rooms',kwargs={'meeting_id':42,'schedule_name':'test-agenda'}) + url = reverse('ietf.secr.meetings.views.rooms',kwargs={'meeting_id':72,'schedule_name':'test-agenda'}) self.client.login(username="secretary", password="secretary+password") response = self.client.get(url) self.assertEqual(response.status_code, 200) @@ -213,7 +213,7 @@ class SecrMeetingTestCase(TestCase): def test_meetings_times(self): make_meeting_test_data() - url = reverse('ietf.secr.meetings.views.times',kwargs={'meeting_id':42,'schedule_name':'test-agenda'}) + url = reverse('ietf.secr.meetings.views.times',kwargs={'meeting_id':72,'schedule_name':'test-agenda'}) self.client.login(username="secretary", password="secretary+password") response = self.client.get(url) self.assertEqual(response.status_code, 200) @@ -252,7 +252,7 @@ class SecrMeetingTestCase(TestCase): meeting = make_meeting_test_data() timeslot = TimeSlot.objects.filter(meeting=meeting,type='session').first() url = reverse('ietf.secr.meetings.views.times_edit',kwargs={ - 'meeting_id':42, + 'meeting_id':72, 'schedule_name':'test-agenda', 'time':timeslot.time.strftime("%Y:%m:%d:%H:%M") }) @@ -268,7 +268,7 @@ class SecrMeetingTestCase(TestCase): def test_meetings_nonsession(self): make_meeting_test_data() - url = reverse('ietf.secr.meetings.views.non_session',kwargs={'meeting_id':42,'schedule_name':'test-agenda'}) + url = reverse('ietf.secr.meetings.views.non_session',kwargs={'meeting_id':72,'schedule_name':'test-agenda'}) self.client.login(username="secretary", password="secretary+password") response = self.client.get(url) self.assertEqual(response.status_code, 200) @@ -277,7 +277,7 @@ class SecrMeetingTestCase(TestCase): meeting = make_meeting_test_data() room = meeting.room_set.first() group = Group.objects.get(acronym='secretariat') - url = reverse('ietf.secr.meetings.views.non_session',kwargs={'meeting_id':42,'schedule_name':'test-agenda'}) + url = reverse('ietf.secr.meetings.views.non_session',kwargs={'meeting_id':72,'schedule_name':'test-agenda'}) self.client.login(username="secretary", password="secretary+password") response = self.client.post(url, { 'day':'1', @@ -298,7 +298,7 @@ class SecrMeetingTestCase(TestCase): def test_meetings_nonsession_add_invalid(self): make_meeting_test_data() group = Group.objects.get(acronym='secretariat') - url = reverse('ietf.secr.meetings.views.non_session',kwargs={'meeting_id':42,'schedule_name':'test-agenda'}) + url = reverse('ietf.secr.meetings.views.non_session',kwargs={'meeting_id':72,'schedule_name':'test-agenda'}) self.client.login(username="secretary", password="secretary+password") response = self.client.post(url, { 'day':'1', @@ -316,8 +316,8 @@ class SecrMeetingTestCase(TestCase): meeting = make_meeting_test_data() session = meeting.session_set.exclude(name='').first() # get first non-session session timeslot = session.official_timeslotassignment().timeslot - url = reverse('ietf.secr.meetings.views.non_session_edit',kwargs={'meeting_id':42,'schedule_name':meeting.agenda.name,'slot_id':timeslot.pk}) - redirect_url = reverse('ietf.secr.meetings.views.non_session',kwargs={'meeting_id':42,'schedule_name':'test-agenda'}) + url = reverse('ietf.secr.meetings.views.non_session_edit',kwargs={'meeting_id':72,'schedule_name':meeting.agenda.name,'slot_id':timeslot.pk}) + redirect_url = reverse('ietf.secr.meetings.views.non_session',kwargs={'meeting_id':72,'schedule_name':'test-agenda'}) new_time = timeslot.time + datetime.timedelta(days=1) self.client.login(username="secretary", password="secretary+password") response = self.client.get(url) diff --git a/ietf/secr/proceedings/tests.py b/ietf/secr/proceedings/tests.py index 0c8dc6af9..e6271fcf3 100644 --- a/ietf/secr/proceedings/tests.py +++ b/ietf/secr/proceedings/tests.py @@ -121,7 +121,7 @@ class RecordingTestCase(TestCase): date=timeslot.time.strftime('%Y%m%d-%H%M')) def test_import_audio_files_shared_timeslot(self): - meeting = MeetingFactory(type_id='ietf',number='42') + meeting = MeetingFactory(type_id='ietf',number='72') mars_session = SessionFactory(meeting=meeting,status_id='sched',group__acronym='mars') ames_session = SessionFactory(meeting=meeting,status_id='sched',group__acronym='ames') scheduled = SessionStatusName.objects.get(slug='sched') @@ -135,8 +135,8 @@ class RecordingTestCase(TestCase): import_audio_files(meeting) doc = mars_session.materials.filter(type='recording').first() self.assertTrue(doc in ames_session.materials.all()) - self.assertTrue(doc.docalias.filter(name='recording-42-mars-1')) - self.assertTrue(doc.docalias.filter(name='recording-42-ames-1')) + self.assertTrue(doc.docalias.filter(name='recording-72-mars-1')) + self.assertTrue(doc.docalias.filter(name='recording-72-ames-1')) def test_normalize_room_name(self): self.assertEqual(normalize_room_name('Test Room'),'testroom') @@ -149,7 +149,7 @@ class RecordingTestCase(TestCase): self.assertEqual(get_timeslot_for_filename(name),timeslot) def test_get_or_create_recording_document(self): - session = SessionFactory(meeting__type_id='ietf', meeting__number=42, group__acronym='mars') + session = SessionFactory(meeting__type_id='ietf', meeting__number=72, group__acronym='mars') # test create filename = 'ietf42-testroom-20000101-0800.mp3' @@ -167,17 +167,17 @@ class RecordingTestCase(TestCase): self.assertEqual(doc,doc2) def test_create_recording(self): - session = SessionFactory(meeting__type_id='ietf', meeting__number=42, group__acronym='mars') + session = SessionFactory(meeting__type_id='ietf', meeting__number=72, group__acronym='mars') filename = 'ietf42-testroomt-20000101-0800.mp3' url = settings.IETF_AUDIO_URL + 'ietf{}/{}'.format(session.meeting.number, filename) doc = create_recording(session, url) - self.assertEqual(doc.name,'recording-42-mars-1') + self.assertEqual(doc.name,'recording-72-mars-1') self.assertEqual(doc.group,session.group) self.assertEqual(doc.external_url,url) self.assertTrue(doc in session.materials.all()) def test_get_next_sequence(self): - session = SessionFactory(meeting__type_id='ietf', meeting__number=42, group__acronym='mars') + session = SessionFactory(meeting__type_id='ietf', meeting__number=72, group__acronym='mars') meeting = session.meeting group = session.group sequence = get_next_sequence(group,meeting,'recording') diff --git a/ietf/utils/test_data.py b/ietf/utils/test_data.py index be8f7b791..2351727f9 100644 --- a/ietf/utils/test_data.py +++ b/ietf/utils/test_data.py @@ -338,7 +338,7 @@ def make_test_data(): # meeting Meeting.objects.create( - number="42", + number="72", type_id="ietf", date=datetime.date.today() + datetime.timedelta(days=180), city="New York",