def test_process_s3_key(self):
        # Setup
        key = 'test-process-s3-key.mov'
        iphone_key = 'test-process-s3-key-iphone.mp4'
        if not self.bucket.get_key(key):
            worker.upload_to_s3(self.test_video, key)
        self.bucket.delete_key(iphone_key)

        # Test
        self.assertIsNone(self.bucket.get_key(iphone_key))
        worker.process_s3_key(key)
        self.assertIsNotNone(self.bucket.get_key(iphone_key))
    def test_download_url(self):
        # Setup
        key = 'test-download-url.mov'
        url = helper.get_s3url(key)
        path = os.path.join(TMPDIR, key)
        if not self.bucket.get_key(key):
            worker.upload_to_s3(self.test_video, key)

        if os.path.isfile(path):
            os.remove(path)
        self.assertFalse(os.path.isfile(path))
        worker.download_url(url)
        self.assertTrue(os.path.isfile(path))
    def test_process_fullcopy(self, key='test-process-fullcopy.mov'):
        iphone_key = os.path.splitext(key)[0] + '-iphone.mp4'
        if not self.bucket.get_key(key):
            worker.upload_to_s3(self.test_video, key)
        self.bucket.delete_key(iphone_key)
        for video in db.query(Video).filter(Video.key.in_([key, iphone_key])):
            db.delete(video)

        self.assertEqual(0, db.query(Video).filter(Video.key.in_([key, iphone_key])).count())
        self.assertIsNone(self.bucket.get_key(iphone_key))
        worker._process_fullcopy(key)
        self.assertEqual(2, db.query(Video).filter(Video.key.in_([key, iphone_key])).count())
        self.assertIsNotNone(self.bucket.get_key(iphone_key))
        for k in [key, iphone_key]:
            self.assertFalse(os.path.isfile(os.path.join(TMPDIR, k)))
 def test_create_video(self):
     bucket = helper.get_bucket()
     keyname = 'test-create-video.mov'
     key = bucket.get_key(keyname)
     if not key:
         key = worker.upload_to_s3(TEST_VIDEO, keyname)
     attrs = {
         'key': keyname,
         'video_bitrate': 1095,
         'audio_bitrate': 126,
         'framerate': 29970,
         'width': 640,
         'height': 360,
         'num_audio_channels': 2,
         'duration': 3180,
         # 'filesize':
     }
     video = Video(**attrs)
     db.add(video)
     db.commit()
     self.assertIsInstance(video.id, int)
     self.assertEqual(attrs['key'],                video.key)
     self.assertEqual(attrs['video_bitrate'],      video.video_bitrate)
     self.assertEqual(attrs['audio_bitrate'],      video.audio_bitrate)
     self.assertEqual(attrs['framerate'],          video.framerate)
     self.assertEqual(attrs['width'],              video.width)
     self.assertEqual(attrs['height'],             video.height)
     self.assertEqual(attrs['num_audio_channels'], video.num_audio_channels)
     self.assertEqual(attrs['duration'],           video.duration)
     self.assertEqual(31.8,                        video.total_seconds())
 def test_upload_to_s3(self):
     key = 'test-upload-to-s3.mov'
     self.bucket.delete_key(key)
     self.assertIsNone(self.bucket.get_key(key))
     worker.upload_to_s3(self.test_video, key)
     self.assertIsNotNone(self.bucket.get_key(key))