Merge lp:~mhall119/summit/777171-percentage-problem-tests into lp:summit

Proposed by Michael Hall
Status: Merged
Approved by: James Westby
Approved revision: 167
Merged at revision: 167
Proposed branch: lp:~mhall119/summit/777171-percentage-problem-tests
Merge into: lp:summit
Diff against target: 221 lines (+161/-9)
2 files modified
summit/schedule/tests.py (+155/-3)
summit/urls.py (+6/-6)
To merge this branch: bzr merge lp:~mhall119/summit/777171-percentage-problem-tests
Reviewer Review Type Date Requested Status
James Westby (community) Approve
Review via email: mp+75360@code.launchpad.net

Commit message

Adds test cases to make sure % signs are being properly escaped in render.py

Description of the change

Adds test cases to make sure % signs are being properly escaped in render.py

Once Nigel's branch passes these tests, it'll be ready to land.

To post a comment you must log in.
Revision history for this message
James Westby (james-w) wrote :

Looks good.

I won't overall-approve so that tarmac doesn't waste time on it.

Thanks,

James

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'summit/schedule/tests.py'
--- summit/schedule/tests.py 2011-09-14 01:00:37 +0000
+++ summit/schedule/tests.py 2011-09-14 14:53:23 +0000
@@ -66,6 +66,7 @@
66 Meeting.SchedulingError,66 Meeting.SchedulingError,
67 meeting.check_schedule, agenda.slot, agenda.room)67 meeting.check_schedule, agenda.slot, agenda.room)
6868
69
69class ICalTestCase(djangotest.TestCase):70class ICalTestCase(djangotest.TestCase):
7071
71 def test_ical_meeting_without_name(self):72 def test_ical_meeting_without_name(self):
@@ -110,11 +111,11 @@
110 meeting = factory.make_one(Meeting, summit=summit, name='test.name')111 meeting = factory.make_one(Meeting, summit=summit, name='test.name')
111 agenda = factory.make_one(Agenda, slot=slot, meeting=meeting, room=room)112 agenda = factory.make_one(Agenda, slot=slot, meeting=meeting, room=room)
112 113
113 self.assertEquals(meeting.meeting_page_url, '/uds-test/meeting/%s/test-name/' % meeting.id)114 self.assertEquals(meeting.meeting_page_url, '/uds-test/meeting/%s/test.name/' % meeting.id)
114 115
115 response = self.client.get('/uds-test.ical')116 response = self.client.get('/uds-test.ical')
116 self.assertEquals(response.status_code, 200)117 self.assertEquals(response.status_code, 200)
117 self.assertContains(response, 'URL:http://summit.ubuntu.com/uds-test/meeting/%s/test-name/' % meeting.id, 1)118 self.assertContains(response, 'URL:http://summit.ubuntu.com/uds-test/meeting/%s/test.name/' % meeting.id, 1)
118119
119class MeetingPageTestCase(djangotest.TestCase):120class MeetingPageTestCase(djangotest.TestCase):
120121
@@ -179,6 +180,7 @@
179 reverse_url = reverse('summit.schedule.views.meeting', args=rev_args)180 reverse_url = reverse('summit.schedule.views.meeting', args=rev_args)
180 self.assertEquals(reverse_url, '/uds-test/meeting/%s/test.meeting/' % meeting.id)181 self.assertEquals(reverse_url, '/uds-test/meeting/%s/test.meeting/' % meeting.id)
181182
183
182 def test_room_name_with_period(self):184 def test_room_name_with_period(self):
183 ''' Test the following Room urlconfs185 ''' Test the following Room urlconfs
184 (r'^(?P<summit_name>[\w-]+)/(?P<room_name>[\w-]+)/$', 'by_room'),186 (r'^(?P<summit_name>[\w-]+)/(?P<room_name>[\w-]+)/$', 'by_room'),
@@ -217,6 +219,55 @@
217 reverse_url = reverse('summit.schedule.views.user_ical', args=rev_args)219 reverse_url = reverse('summit.schedule.views.user_ical', args=rev_args)
218 self.assertEquals(reverse_url, '/uds-test/participant/test.user.ical')220 self.assertEquals(reverse_url, '/uds-test/participant/test.user.ical')
219 221
222 def test_meeting_name_with_percent(self):
223 ''' Test the following Meeting urlconf
224 (r'^(?P<summit_name>[\w-]+)/meeting/(?P<meeting_id>\d+)/(?P<meeting_slug>[\.\w-]+)/$', 'meeting'),
225 '''
226 meeting = factory.make_one(Meeting, summit=self.summit, name='test.meeting')
227
228 rev_args = ['uds-test', meeting.id, 'test%meeting']
229 reverse_url = reverse('summit.schedule.views.meeting', args=rev_args)
230 self.assertEquals(reverse_url, '/uds-test/meeting/%s/test%%meeting/' % meeting.id)
231
232 def test_room_name_with_percent(self):
233 ''' Test the following Room urlconfs
234 (r'^(?P<summit_name>[\w-]+)/(?P<room_name>[\.\w-]+)/$', 'by_room'),
235 (r'^(?P<summit_name>[\w-]+)/room/(?P<room_name>[\.\w-]+).ical$', 'room_ical'),
236 '''
237 room = factory.make_one(Room, summit=self.summit, name='test.room')
238
239 rev_args = ['uds-test', 'test%room']
240 reverse_url = reverse('summit.schedule.views.by_room', args=rev_args)
241 self.assertEquals(reverse_url, '/uds-test/test%room/')
242
243 reverse_url = reverse('summit.schedule.views.room_ical', args=rev_args)
244 self.assertEquals(reverse_url, '/uds-test/room/test%room.ical')
245
246 def test_track_name_with_percent(self):
247 ''' Test the following Track urlconfs
248 (r'^(?P<summit_name>[\w-]+)/track/(?P<track_slug>[\.\w-]+)/$', 'by_track'),
249 (r'^(?P<summit_name>[\w-]+)/track/(?P<track_slug>[\.\w-]+).ical$', 'track_ical'),
250 '''
251 track = factory.make_one(Track, summit=self.summit, slug='test.track')
252
253 rev_args = ['uds-test', 'test%track']
254 reverse_url = reverse('summit.schedule.views.by_track', args=rev_args)
255 self.assertEquals(reverse_url, '/uds-test/track/test%track/')
256
257 reverse_url = reverse('summit.schedule.views.track_ical', args=rev_args)
258 self.assertEquals(reverse_url, '/uds-test/track/test%track.ical')
259
260 def test_participant_name_with_percent(self):
261 ''' Test the following User urlconf
262 (r'^(?P<summit_name>[\w-]+)/participant/(?P<username>[\.\w-]+)\.ical$', 'user_ical'),
263 '''
264 user = factory.make_one(User, username='test.user')
265
266 rev_args = ['uds-test', 'test%user']
267 reverse_url = reverse('summit.schedule.views.user_ical', args=rev_args)
268 self.assertEquals(reverse_url, '/uds-test/participant/test%user.ical')
269
270
220class EtherpadEditUrl(djangotest.TestCase):271class EtherpadEditUrl(djangotest.TestCase):
221272
222 def setUp(self):273 def setUp(self):
@@ -398,4 +449,105 @@
398 # Public meeting should be autoscheduled into one of the two open rooms449 # Public meeting should be autoscheduled into one of the two open rooms
399 self.assertEquals(1, self.public_meeting.agenda_set.count())450 self.assertEquals(1, self.public_meeting.agenda_set.count())
400 self.assertEquals(1, Agenda.objects.filter(room__type='open').count())451 self.assertEquals(1, Agenda.objects.filter(room__type='open').count())
401 452
453
454class RenderScheduleTestCase(djangotest.TestCase):
455
456 def setUp(self):
457 now = datetime.datetime.utcnow()
458 one_hour = datetime.timedelta(0, 3600)
459 week = datetime.timedelta(days=5)
460 self.summit = factory.make_one(Summit, name='uds-test', timezone='UTC')
461 self.slot = factory.make_one(
462 Slot,
463 start_utc=now+one_hour,
464 end_utc=now+(2*one_hour),
465 type='open',
466 summit=self.summit)
467
468 self.track1 = factory.make_one(Track, summit=self.summit)
469 self.room1 = factory.make_one(Room, summit=self.summit)
470 self.meeting1 = factory.make_one(Meeting, summit=self.summit, name='meeting1', private=False)
471 self.agenda1 = factory.make_one(Agenda, slot=self.slot, meeting=self.meeting1, room=self.room1)
472
473 self.user = factory.make_one(User, username='testuser', first_name='Test', last_name='User')
474 self.attendee = factory.make_one(Attendee, summit=self.summit, user=self.user, start_utc=now, end_utc=now+week)
475
476 def tearDown(self):
477 # Cached requests cause render.py to return old data, so clear the cache
478 if hasattr(cache, 'clear'):
479 cache.clear()
480 # Older django didn't have .clear, but locmem cache did have ._cull
481 elif hasattr(cache, '_cull'):
482 cache._cull()
483
484 def test_percent_in_meeting_name(self):
485 self.meeting1.name = 'test%meeting'
486 self.meeting1.save()
487
488 schedule_args = ['uds-test', self.agenda1.slot.start_utc.date()]
489 schedule_url = reverse('summit.schedule.views.by_date', args=schedule_args)
490 response = self.client.get(schedule_url)
491
492 self.assertContains(response, 'test%meeting', 1)
493
494 def test_percent_in_meeting_title(self):
495 self.meeting1.title = 'test % meeting'
496 self.meeting1.save()
497
498 schedule_args = ['uds-test', self.agenda1.slot.start_utc.date()]
499 schedule_url = reverse('summit.schedule.views.by_date', args=schedule_args)
500 response = self.client.get(schedule_url)
501
502 self.assertContains(response, 'test % meeting', 1)
503
504 def test_percent_in_room_name(self):
505 self.room1.title = 'test % room'
506 self.room1.save()
507
508 schedule_args = ['uds-test', self.agenda1.slot.start_utc.date()]
509 schedule_url = reverse('summit.schedule.views.by_date', args=schedule_args)
510 response = self.client.get(schedule_url)
511
512 # Room name is displayed at top and bottom of the schedule, and also
513 # on the meeting div for self.meeting1 which is scheduled for that room
514 self.assertContains(response, 'test % room', 3)
515
516 def test_percent_in_meeting_track_title(self):
517 self.track1.title = 'test % track'
518 self.track1.save()
519 self.meeting1.tracks.add(self.track1)
520
521 schedule_args = ['uds-test', self.agenda1.slot.start_utc.date()]
522 schedule_url = reverse('summit.schedule.views.by_date', args=schedule_args)
523 response = self.client.get(schedule_url)
524
525 self.assertContains(response, 'test % track', 1)
526
527 def test_percent_in_room_track_title(self):
528 self.track1.title = 'test % track'
529 self.track1.save()
530 self.room1.tracks.add(self.track1)
531
532 schedule_args = ['uds-test', self.agenda1.slot.start_utc.date()]
533 schedule_url = reverse('summit.schedule.views.by_date', args=schedule_args)
534 response = self.client.get(schedule_url)
535
536 # Displayed above the room name at the top and bottom of the schedule
537 self.assertContains(response, 'test % track', 2)
538
539 def test_percent_in_attendee_username(self):
540 self.attendee.user.username = 'test%user'
541 self.attendee.user.first_name = 'Test %'
542 self.attendee.user.save()
543 participant = factory.make_one(Participant, meeting=self.meeting1, attendee=self.attendee, required=True)
544
545 schedule_args = ['uds-test', self.agenda1.slot.start_utc.date()]
546 schedule_url = reverse('summit.schedule.views.by_date', args=schedule_args)
547 response = self.client.get(schedule_url)
548
549 # Displayed inside the self.meeting1 div with LP link
550 self.assertContains(response, 'test%user', 2)
551 self.assertContains(response, 'Test % User', 1)
552
553
402554
=== modified file 'summit/urls.py'
--- summit/urls.py 2011-09-14 00:31:06 +0000
+++ summit/urls.py 2011-09-14 14:53:23 +0000
@@ -62,14 +62,14 @@
6262
63 (r'^(?P<summit_name>[\w-]+)/next$', 'next_session'),63 (r'^(?P<summit_name>[\w-]+)/next$', 'next_session'),
64 (r'^(?P<summit_name>[\w-]+)/(?P<date>[\d-]+)/$', 'by_date'),64 (r'^(?P<summit_name>[\w-]+)/(?P<date>[\d-]+)/$', 'by_date'),
65 (r'^(?P<summit_name>[\w-]+)/(?P<room_name>[\.\w-]+)/$', 'by_room'),65 (r'^(?P<summit_name>[\w-]+)/(?P<room_name>[%\.\w-]+)/$', 'by_room'),
66 (r'^(?P<summit_name>[\w-]+)/track/(?P<track_slug>[\.\w-]+)/$', 'by_track'),66 (r'^(?P<summit_name>[\w-]+)/track/(?P<track_slug>[%\.\w-]+)/$', 'by_track'),
67 (r'^(?P<summit_name>[\w-]+)/meeting/(?P<meeting_id>\d+)/(?P<meeting_slug>[\.\w-]+)/$', 'meeting'),67 (r'^(?P<summit_name>[\w-]+)/meeting/(?P<meeting_id>\d+)/(?P<meeting_slug>[%\.\w-]+)/$', 'meeting'),
68 (r'^(?P<summit_name>[\w-]+)\.csv$', 'csv'),68 (r'^(?P<summit_name>[\w-]+)\.csv$', 'csv'),
69 (r'^(?P<summit_name>[\w-]+)\.ical$', 'ical'),69 (r'^(?P<summit_name>[\w-]+)\.ical$', 'ical'),
70 (r'^(?P<summit_name>[\w-]+)/participant/(?P<username>[\.\w-]+)\.ical$', 'user_ical'),70 (r'^(?P<summit_name>[\w-]+)/participant/(?P<username>[%\.\w-]+)\.ical$', 'user_ical'),
71 (r'^(?P<summit_name>[\w-]+)/room/(?P<room_name>[\.\w-]+).ical$', 'room_ical'),71 (r'^(?P<summit_name>[\w-]+)/room/(?P<room_name>[%\.\w-]+).ical$', 'room_ical'),
72 (r'^(?P<summit_name>[\w-]+)/track/(?P<track_slug>[\.\w-]+).ical$', 'track_ical'),72 (r'^(?P<summit_name>[\w-]+)/track/(?P<track_slug>[%\.\w-]+).ical$', 'track_ical'),
73)73)
7474
75if settings.DEBUG or settings.SERVE_STATIC:75if settings.DEBUG or settings.SERVE_STATIC:

Subscribers

People subscribed via source and target branches