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
This commit is contained in:
Henrik Levkowetz 2019-07-04 16:01:32 +00:00
parent b7690fbdcd
commit f33ecaa1a4
8 changed files with 65 additions and 66 deletions

View file

@ -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(),

View file

@ -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)

View file

@ -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()

View file

@ -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)

View file

@ -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)

View file

@ -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)

View file

@ -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')

View file

@ -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",