From 6885feb9804c81186466b305a9915e765a11a380 Mon Sep 17 00:00:00 2001 From: Bastiaan Welmers Date: Thu, 7 Apr 2022 20:50:15 +0200 Subject: [PATCH] Add tests for codec orders --- tests/videodinges/views/test_video.py | 271 +++++++++++++++++++++----- 1 file changed, 225 insertions(+), 46 deletions(-) diff --git a/tests/videodinges/views/test_video.py b/tests/videodinges/views/test_video.py index 50478d5..967430e 100644 --- a/tests/videodinges/views/test_video.py +++ b/tests/videodinges/views/test_video.py @@ -245,52 +245,6 @@ class VideoTestCase(UploadMixin, TestCase): content, ) - def test_video_view_renders_transcoding_types_in_correct_order(self): - - video = factories.create( - models.Video, - title='Vid 1', - slug='vid-1', - default_quality='480p', - ) - factories.create( - models.Transcoding, - video=video, - quality='480p', - type='video/mp4; codecs="avc1.64001e,mp4a.40.2"', - url='http://480p.mp4', - ) - factories.create( - models.Transcoding, - video=video, - quality='480p', - type='video/webm; codecs="vp9, opus"', - url='http://480p.vp9.webm', - ) - factories.create( - models.Transcoding, - video=video, - quality='480p', - type='video/webm; codecs="vp8, vorbis"', - url='http://480p.vp8.webm', - ) - - resp:HttpResponse = self.client.get(reverse('video', args=['vid-1'])) - - self.assertEqual(resp.status_code, 200) - - content:str = resp.content.decode(resp.charset) - - self.assertInHTML( - """""", - content, - ) - class VideoWithTrackTestCase(UploadMixin, TestCase): def setUp(self): @@ -480,3 +434,228 @@ class VideoWithTrackTestCase(UploadMixin, TestCase): """, content, ) + + +class VideoWithCodecOrderCookieTestCase(UploadMixin, TestCase): + """ Test the order of the codecs """ + def setUp(self): + super().setUp() + self.client = Client() + + self.video = factories.create( + models.Video, + title='Vid 1', + slug='vid-1', + default_quality='480p', + ) + factories.create( + models.Transcoding, + video=self.video, + quality='480p', + type='video/mp4; codecs="avc1.64001e,mp4a.40.2"', + url='http://480p.mp4', + ) + factories.create( + models.Transcoding, + video=self.video, + quality='480p', + type='video/webm; codecs="vp9, opus"', + url='http://480p.vp9.webm', + ) + factories.create( + models.Transcoding, + video=self.video, + quality='480p', + type='video/webm; codecs="vp8, vorbis"', + url='http://480p.vp8.webm', + ) + + def test_video_view_renders_transcoding_types_in_correct_order_without_cookie(self): + + resp:HttpResponse = self.client.get(reverse('video', args=['vid-1'])) + + self.assertEqual(resp.status_code, 200) + + content:str = resp.content.decode(resp.charset) + + self.assertInHTML( + """""", + content, + ) + + def test_video_view_renders_transcoding_types_in_correct_order_with_empty_cookie(self): + + self.client.cookies['video_codecs_prio'] = '' + + resp:HttpResponse = self.client.get(reverse('video', args=['vid-1'])) + + self.assertEqual(resp.status_code, 200) + + content:str = resp.content.decode(resp.charset) + + self.assertInHTML( + """""", + content, + ) + + def test_video_view_renders_transcoding_types_in_correct_order_with_only_vp8_mentioned(self): + + self.client.cookies['video_codecs_prio'] = 'vp8' + resp:HttpResponse = self.client.get(reverse('video', args=['vid-1'])) + + self.assertEqual(resp.status_code, 200) + + content:str = resp.content.decode(resp.charset) + + self.assertInHTML( + """""", + content, + ) + + def test_video_view_renders_transcoding_types_in_correct_order_with_only_h264_mentioned(self): + + self.client.cookies['video_codecs_prio'] = 'h.264' + resp:HttpResponse = self.client.get(reverse('video', args=['vid-1'])) + + self.assertEqual(resp.status_code, 200) + + content:str = resp.content.decode(resp.charset) + + self.assertInHTML( + """""", + content, + ) + + def test_video_view_renders_transcoding_types_in_correct_order_with_vp8_and_h264_mentioned(self): + + self.client.cookies['video_codecs_prio'] = 'vp8 h.264' + resp:HttpResponse = self.client.get(reverse('video', args=['vid-1'])) + + self.assertEqual(resp.status_code, 200) + + content:str = resp.content.decode(resp.charset) + + self.assertInHTML( + """""", + content, + ) + + def test_video_view_renders_transcoding_types_in_correct_order_with_h264_and_vp8_mentioned(self): + + self.client.cookies['video_codecs_prio'] = 'h.264 vp8' + resp:HttpResponse = self.client.get(reverse('video', args=['vid-1'])) + + self.assertEqual(resp.status_code, 200) + + content:str = resp.content.decode(resp.charset) + + self.assertInHTML( + """""", + content, + ) + + def test_video_view_renders_transcoding_types_in_correct_order_with_h264_and_vp9_and_vp8_mentioned(self): + + self.client.cookies['video_codecs_prio'] = 'h.264 vp9 vp8' + resp:HttpResponse = self.client.get(reverse('video', args=['vid-1'])) + + self.assertEqual(resp.status_code, 200) + + content:str = resp.content.decode(resp.charset) + + self.assertInHTML( + """""", + content, + ) + + def test_video_view_renders_transcoding_types_in_correct_order_with_h264_and_vp8_and_vp9_mentioned(self): + + self.client.cookies['video_codecs_prio'] = 'h.264 vp8 vp9' + resp:HttpResponse = self.client.get(reverse('video', args=['vid-1'])) + + self.assertEqual(resp.status_code, 200) + + content:str = resp.content.decode(resp.charset) + + self.assertInHTML( + """""", + content, + ) + + def test_video_view_renders_transcoding_types_ignores_garbage_in_cookie(self): + + self.client.cookies['video_codecs_prio'] = 'bwarpblergh crap bla' + resp:HttpResponse = self.client.get(reverse('video', args=['vid-1'])) + + self.assertEqual(resp.status_code, 200) + + content:str = resp.content.decode(resp.charset) + + self.assertInHTML( + """""", + content, + ) + + def test_video_view_renders_transcoding_types_in_correct_order_with_h264_and_vp8_and_crap_and_vp9_mentioned(self): + + self.client.cookies['video_codecs_prio'] = 'h.264 vp8 nonexistent-thing vp9' + resp:HttpResponse = self.client.get(reverse('video', args=['vid-1'])) + + self.assertEqual(resp.status_code, 200) + + content:str = resp.content.decode(resp.charset) + + self.assertInHTML( + """""", + content, + )