def subtitle_url(self): backend = aws_backend.Backend() url = backend.subtitle_url('videoid', 'subid', 'uk') self.assertIsNotNone(url) self.assertIn('videoid', url) self.assertIn('subid', url) self.assertIn('uk', url)
def test_delete_subtitle(self): backend = aws_backend.Backend() backend._s3_client = Mock(list_objects=Mock(return_value={})) backend.delete_subtitle('videoid', 'subid') backend.s3_client.list_objects.assert_any_call( Bucket='publics3bucket', Prefix='videos/videoid/subs/subid.')
def test_start_transcoding_with_thumbnails(self): create_job_fixture = utils.load_json_fixture( "elastictranscoder_create_job.json" ) backend = aws_backend.Backend() backend.get_src_file_key = Mock( return_value="videos/videoid/src/Some video file.mpg" ) backend._elastictranscoder_client = Mock( create_job=Mock(return_value=create_job_fixture) ) backend.start_transcoding("videoid") # SD + Thumbnails backend.elastictranscoder_client.create_job.assert_any_call( PipelineId="pipelineid", Input={"Key": "videos/videoid/src/Some video file.mpg"}, Output={"PresetId": "sdpresetid", "Key": "videos/videoid/SD.mp4"}, ) # HD + Thumbnails backend.elastictranscoder_client.create_job.assert_any_call( PipelineId="pipelineid", Input={"Key": "videos/videoid/src/Some video file.mpg"}, Output={ "PresetId": "hdpresetid", "Key": "videos/videoid/HD.mp4", "ThumbnailPattern": "videos/videoid/thumbs/{count}", }, )
def subtitle_url(self): backend = aws_backend.Backend() url = backend.subtitle_url("videoid", "subid", "uk") self.assertIsNotNone(url) self.assertIn("videoid", url) self.assertIn("subid", url) self.assertIn("uk", url)
def test_delete_thumbnail(self, mock_s3_client): backend = aws_backend.Backend() backend.delete_thumbnail('videoid', 'thumbid') mock_s3_client.delete_object.assert_called_once_with( Bucket="publics3bucket", Key="videos/videoid/thumbs/thumbid.jpg")
def test_start_transcoding_with_thumbnails(self): create_job_fixture = utils.load_json_fixture( 'elastictranscoder_create_job.json') backend = aws_backend.Backend() backend.get_src_file_key = Mock( return_value='videos/videoid/src/Some video file.mpg') backend._elastictranscoder_client = Mock( create_job=Mock(return_value=create_job_fixture), ) backend.start_transcoding('videoid') # SD + Thumbnails backend.elastictranscoder_client.create_job.assert_any_call( PipelineId='pipelineid', Input={'Key': 'videos/videoid/src/Some video file.mpg'}, Output={ 'PresetId': 'sdpresetid', 'Key': 'videos/videoid/SD.mp4' }, ) # HD + Thumbnails backend.elastictranscoder_client.create_job.assert_any_call( PipelineId='pipelineid', Input={'Key': 'videos/videoid/src/Some video file.mpg'}, Output={ 'PresetId': 'hdpresetid', 'Key': 'videos/videoid/HD.mp4', 'ThumbnailPattern': 'videos/videoid/thumbs/{count}' }, )
def test_delete_video_no_content(self): backend = aws_backend.Backend() backend._s3_client = Mock(list_objects=Mock(return_value={})) backend.delete_video('videoid') backend.s3_client.list_objects.assert_any_call( Bucket='privates3bucket', Prefix='videos/videoid/') backend.s3_client.list_objects.assert_any_call( Bucket='publics3bucket', Prefix='videos/videoid/')
def test_iter_formats(self): backend = aws_backend.Backend() def head_object(Bucket=None, Key=None): if Key != "videos/videoid/HD.mp4": raise ClientError({"Error": {}}, "head_object") backend.s3_client.head_object = head_object formats = list(backend.iter_formats("videoid")) self.assertEqual([("HD", 256)], formats)
def test_create_thumbnail(self, mock_s3_client, mock_resize_image): thumbnail_file = BytesIO(b"") mock_s3_client.get_object = Mock(return_value={'Body': thumbnail_file}) backend = aws_backend.Backend() backend.create_thumbnail('videoid', 'thumbid') mock_s3_client.get_object.assert_called_once() self.assertEqual('videos/videoid/thumbs/00001.png', mock_s3_client.get_object.call_args[1]['Key']) mock_resize_image.assert_called_once()
def test_iter_formats(self): backend = aws_backend.Backend() def head_object(Bucket=None, Key=None): if Key != 'videos/videoid/HD.mp4': raise ClientError({'Error': {}}, 'head_object') backend.s3_client.head_object = head_object formats = list(backend.iter_formats('videoid')) self.assertEqual([('HD', 256)], formats)
def test_create_thumbnail(self, mock_s3_client, mock_resize_image): thumbnail_file = BytesIO(b"") mock_s3_client.get_object = Mock(return_value={"Body": thumbnail_file}) backend = aws_backend.Backend() backend.create_thumbnail("videoid", "thumbid") mock_s3_client.get_object.assert_called_once() self.assertEqual( "videos/videoid/thumbs/00001.png", mock_s3_client.get_object.call_args[1]["Key"], ) mock_resize_image.assert_called_once()
def test_transcoding_pipeline_compatibility(self): create_job_fixture = utils.load_json_fixture( 'elastictranscoder_create_job.json') read_job_fixture = utils.load_json_fixture( 'elastictranscoder_read_job_complete.json') backend = aws_backend.Backend() backend.get_src_file_key = Mock( return_value='videos/videoid/src/Some video file.mpg') backend._elastictranscoder_client = Mock( create_job=Mock(return_value=create_job_fixture), read_job=Mock(return_value=read_job_fixture)) jobs = backend.start_transcoding('videoid') backend.check_progress(jobs[0])
def test_check_progress(self): job = utils.load_json_fixture('elastictranscoder_create_job.json') read_job_fixture = utils.load_json_fixture( 'elastictranscoder_read_job_complete.json') backend = aws_backend.Backend() backend._elastictranscoder_client = Mock( read_job=Mock(return_value=read_job_fixture), ) progress, finished = backend.check_progress(job['Job']) self.assertEqual(100, progress) self.assertTrue(finished) backend.elastictranscoder_client.read_job.assert_called_once_with( Id='jobid' # job id in test fixture )
def test_upload_video(self): backend = aws_backend.Backend() backend._s3_client = Mock(put_object=Mock()) file_object = Mock() file_object.name = "somevideo.mp4" backend.upload_video('videoid', file_object) backend.s3_client.put_object.assert_called_once() self.assertEqual("private", backend.s3_client.put_object.call_args[1]['ACL']) self.assertEqual("videos/videoid/src/somevideo.mp4", backend.s3_client.put_object.call_args[1]['Key']) self.assertEqual("privates3bucket", backend.s3_client.put_object.call_args[1]['Bucket'])
def test_start_transcoding(self): create_job_fixture = utils.load_json_fixture( 'elastictranscoder_create_job.json') backend = aws_backend.Backend() backend.get_src_file_key = Mock( return_value='videos/videoid/src/Some video file.mpg') backend._elastictranscoder_client = Mock( create_job=Mock(return_value=create_job_fixture), ) jobs = backend.start_transcoding('videoid') self.assertEqual(1, len(jobs)) backend.elastictranscoder_client.create_job.assert_called_once_with( PipelineId='pipelineid', Input={'Key': 'videos/videoid/src/Some video file.mpg'}, Output={ 'PresetId': 'presetid', 'Key': 'videos/videoid/SD.mp4' }) backend.get_src_file_key.assert_called_once_with('videoid')
def test_start_transcoding(self): create_job_fixture = utils.load_json_fixture( "elastictranscoder_create_job.json" ) backend = aws_backend.Backend() backend.get_src_file_key = Mock( return_value="videos/videoid/src/Some video file.mpg" ) backend._elastictranscoder_client = Mock( create_job=Mock(return_value=create_job_fixture) ) jobs = backend.start_transcoding("videoid") self.assertEqual(1, len(jobs)) backend.elastictranscoder_client.create_job.assert_called_once_with( PipelineId="pipelineid", Input={"Key": "videos/videoid/src/Some video file.mpg"}, Output={"PresetId": "presetid", "Key": "videos/videoid/SD.mp4"}, ) backend.get_src_file_key.assert_called_once_with("videoid")
def test_subtitle_url(self): backend = aws_backend.Backend() url = backend.subtitle_url("videoid", "subid", "uk") self.assertTrue(url.startswith("https://cloudfrontid.cloudfront.net"))
def test_thumbnail_url(self): backend = aws_backend.Backend() thumbnail_url = backend.thumbnail_url("videoid", "thumbid") self.assertIsNotNone(thumbnail_url) self.assertIn("videoid", thumbnail_url) self.assertIn("thumbid.jpg", thumbnail_url)
def test_subtitle_url(self): backend = aws_backend.Backend() url = backend.subtitle_url('videoid', 'subid', 'uk') self.assertTrue(url.startswith('https://cloudfrontid.cloudfront.net'))
def test_thumbnail_url(self): backend = aws_backend.Backend() thumbnail_url = backend.thumbnail_url('videoid', 'thumbid') self.assertIsNotNone(thumbnail_url) self.assertIn('videoid', thumbnail_url) self.assertIn('thumbid.jpg', thumbnail_url)