Ejemplo n.º 1
0
    def test_import_videos_only_first_page(self, service_mock):
        playlistitems_mock = service_mock.return_value.playlistItems.return_value.list

        playlistitems_mock.return_value.execute = MockExecute([
            {
                'items': [],
                'nextPageToken': '123',
            },
            {
                'items': [],
            },
        ])

        user = get_user_model().objects.create(username='******')
        OauthToken.objects.create(user=user, data={})
        subscription = Subscription.objects.create(user=user, channel_id="123", last_update=timezone.now())
        bucket = BucketFactory(user=user, subs=[subscription])

        import_videos(user.id, subscription.id, "upload123", [bucket.id], only_first_page=True)
        self.assertEqual(playlistitems_mock.call_count, 1)

        self.assertEqual(playlistitems_mock.call_args_list, [
            ((), {'part': 'contentDetails', 'playlistId': 'upload123', 'fields': 'items(contentDetails(videoId))',
                  'maxResults': API_MAX_RESULTS, 'pageToken': None}),
        ])
Ejemplo n.º 2
0
    def test_import_videos_only_first_page_and_page_token(self, service_mock):
        service_mock

        user = get_user_model().objects.create(username='******')
        OauthToken.objects.create(user=user, data={})
        subscription = Subscription.objects.create(user=user, channel_id="123", last_update=timezone.now())

        import_videos(user.id, subscription.id, "upload123", [], page_token="123", only_first_page=True)
        self.assertEqual(service_mock.call_count, 0)
Ejemplo n.º 3
0
    def test_import_videos_runtime_exceeded(self, service_mock, defer_mock):
        playlistitems_mock = service_mock.return_value.playlistItems.return_value.list

        playlistitems_mock.return_value.execute = MockExecute([
            {
                'items': [],
                'nextPageToken': '123',
            },
            RuntimeExceededError(),
        ])

        user = get_user_model().objects.create(username='******')
        OauthToken.objects.create(user=user, data={})
        subscription = Subscription.objects.create(user=user, channel_id="123", last_update=timezone.now())
        bucket = BucketFactory(user=user, subs=[subscription])

        import_videos(user.id, subscription.id, "upload123", [bucket.id])
        self.assertEqual(playlistitems_mock.call_count, 2)
        self.assertEqual(defer_mock.defer.call_count, 1)
        self.assertEqual(defer_mock.defer.call_args, (
            (import_videos, user.id, subscription.id, "upload123", [bucket.id]),
            {"page_token": "123", "only_first_page": False},
        ))
Ejemplo n.º 4
0
    def test_import_videos(self, service_mock, defer_mock):
        playlistitems_mock = service_mock.return_value.playlistItems.return_value.list
        videos_mock = service_mock.return_value.videos.return_value.list

        playlistitems_mock.return_value.execute.return_value = {
            'items': [
                {'contentDetails': {'videoId': 'video123'}},
                {'contentDetails': {'videoId': 'video456'}},
            ],
        }
        videos_mock.return_value.execute.return_value = {
            'items': [
                {
                    'id': 'video123',
                    'snippet': {
                        'title': 'my video',
                        'description': 'this is my video',
                        'thumbnails': {},
                        'publishedAt': '1997-07-16T19:20:30.45Z',
                    },
                },
                {
                    'id': 'video456',
                    'snippet': {
                        'title': 'my other video',
                        'description': 'this is my other video',
                        'thumbnails': {},
                        'publishedAt': '1997-07-16T19:20:30.45Z',
                    },
                },
            ],
        }

        user = get_user_model().objects.create(username='******')
        OauthToken.objects.create(user=user, data={})
        subscription = Subscription.objects.create(user=user, channel_id="123", last_update=timezone.now())
        bucket = BucketFactory(user=user, subs=[subscription])

        import_videos(user.id, subscription.id, "upload123", [bucket.id])
        self.assertEqual(playlistitems_mock.call_count, 1)
        self.assertEqual(videos_mock.call_count, 1)
        self.assertEqual(defer_mock.call_count, 0)

        self.assertEqual(playlistitems_mock.call_args, (
            (),
            {'playlistId': 'upload123', 'part': 'contentDetails',
             'fields': 'items(contentDetails(videoId))', 'maxResults': API_MAX_RESULTS, 'pageToken': None}
        ))
        self.assertEqual(videos_mock.call_args, (
            (),
            {'id': 'video123,video456', 'part': 'snippet',
             'fields': 'items(snippet(publishedAt,thumbnails))', 'maxResults': API_MAX_RESULTS}
        ))

        self.assertEqual(Video.objects.count(), 2)
        video1 = Video.objects.get(youtube_id="video123")
        self.assertEqual(video1.published_at, datetime(1997, 7, 16, 19, 20, 30, 450000, tzinfo=UTC))
        self.assertEqual(video1.ordering_key,
                         create_composite_key(str(datetime(1997, 7, 16, 19, 20, 30, 450000, tzinfo=UTC)), "video123"))
        video2 = Video.objects.get(youtube_id="video456")
        self.assertEqual(video2.published_at, datetime(1997, 7, 16, 19, 20, 30, 450000, tzinfo=UTC))
        self.assertEqual(video2.ordering_key,
                         create_composite_key(str(datetime(1997, 7, 16, 19, 20, 30, 450000, tzinfo=UTC)), "video456"))
Ejemplo n.º 5
0
    def test_missing_oauth_token(self):
        user = get_user_model().objects.create(username='******')
        subscription = Subscription.objects.create(user=user, channel_id="123", last_update=timezone.now())
        bucket = BucketFactory(user=user, subs=[subscription])

        import_videos(user.id, subscription.id, "upload123", [bucket.id])