def test_get_uploaded_video_ids(self): mocker = test_utils.RequestsMocker() mocker.expect_request('get', 'https://www.googleapis.com/youtube/v3/channels', params={ 'part': 'contentDetails', 'id': 'test-channel-id', 'key': 'test-youtube-api-key', }, body=json.dumps({ 'items': [ { 'contentDetails': { 'relatedPlaylists': { 'uploads': 'test-playlist-id', }, }, }, ] })) mocker.expect_request( 'get', 'https://www.googleapis.com/youtube/v3/playlistItems', params={ 'part': 'snippet', 'playlistId': 'test-playlist-id', 'key': 'test-youtube-api-key', }, body=json.dumps({ 'items': [ { 'snippet': { 'resourceId': { 'kind': u'youtube#video', 'videoId': 'test-video-id1', } } }, { 'snippet': { 'resourceId': { 'kind': u'youtube#video', 'videoId': 'test-video-id2', } } }, { 'snippet': { 'resourceId': { 'kind': u'youtube#something-else', } } }, ] })) google.get_uploaded_video_ids.run_original_for_test() with mocker: video_ids = google.get_uploaded_video_ids('test-channel-id') assert_equal(video_ids, ['test-video-id1', 'test-video-id2'])
def test_get_video_info(self): mocker = test_utils.RequestsMocker() mocker.expect_request('get', 'https://www.googleapis.com/youtube/v3/videos', params={ 'part': 'snippet,contentDetails', 'id': 'test-video-id', 'key': settings.YOUTUBE_API_KEY, }, body=json.dumps({ 'items': [{ 'snippet': { 'title': 'test-title', 'channelId': 'test-channel-id', 'description': 'test-description', 'thumbnails': { 'high': { 'url': 'test-thumbnail-url', } } }, 'contentDetails': { 'duration': 'PT10M10S', } }] })) google.get_video_info.run_original_for_test() with mocker: video_info = google.get_video_info('test-video-id') self.assertEqual(video_info.channel_id, 'test-channel-id') self.assertEqual(video_info.title, 'test-title') self.assertEqual(video_info.description, 'test-description') self.assertEqual(video_info.duration, 610) self.assertEqual(video_info.thumbnail_url, 'test-thumbnail-url')
def test_get_uploaded_video_ids_multiple_pages(self): mocker = test_utils.RequestsMocker() mocker.expect_request('get', 'https://www.googleapis.com/youtube/v3/channels', params={ 'part': 'contentDetails', 'id': 'test-channel-id', 'key': 'test-youtube-api-key', }, body=json.dumps({ 'items': [ { 'contentDetails': { 'relatedPlaylists': { 'uploads': 'test-playlist-id', }, }, }, ] })) mocker.expect_request( 'get', 'https://www.googleapis.com/youtube/v3/playlistItems', params={ 'part': 'snippet', 'maxResults': 50, 'playlistId': 'test-playlist-id', 'key': 'test-youtube-api-key', }, body=json.dumps({ 'items': [ self.make_video_snippet('test-video-id{}'.format(i)) for i in range(50) ], 'nextPageToken': 'test-page-token', })) mocker.expect_request( 'get', 'https://www.googleapis.com/youtube/v3/playlistItems', params={ 'part': 'snippet', 'maxResults': 50, 'playlistId': 'test-playlist-id', 'key': 'test-youtube-api-key', 'pageToken': 'test-page-token', }, body=json.dumps({ 'items': [ self.make_video_snippet('test-video-id{}'.format(i)) for i in range(50, 75) ], })) google.get_uploaded_video_ids.run_original_for_test() with mocker: video_ids = google.get_uploaded_video_ids('test-channel-id') assert_equal(video_ids, ['test-video-id{}'.format(i) for i in range(75)])
def test_update_video_description(self): mocker = test_utils.RequestsMocker() mocker.expect_request('get', 'https://www.googleapis.com/youtube/v3/videos', params={ 'part': 'snippet', 'id': 'test-video-id', }, headers={ 'Authorization': 'Bearer test-access-token', }, body=json.dumps({ 'items': [{ 'snippet': { 'title': 'test-title', 'channelId': 'test-channel-id', 'description': 'test-description', 'thumbnails': { 'high': { 'url': 'test-thumbnail-url', } } } }] })) mocker.expect_request('put', 'https://www.googleapis.com/youtube/v3/videos', params={ 'part': 'snippet', }, headers={ 'Authorization': 'Bearer test-access-token', 'content-type': 'application/json', }, data=json.dumps({ 'id': 'test-video-id', 'snippet': { 'title': 'test-title', 'channelId': 'test-channel-id', 'description': 'test-updated-description', 'thumbnails': { 'high': { 'url': 'test-thumbnail-url', } } } })) google.update_video_description.run_original_for_test() with mocker: google.update_video_description('test-video-id', 'test-access-token', 'test-updated-description')
def test_get_video_invalid_body(self): mocker = test_utils.RequestsMocker() mocker.expect_request( 'get', 'https://www.googleapis.com/youtube/v3/videos', params={ 'part': 'snippet,contentDetails', 'id': 'test-video-id', 'key': settings.YOUTUBE_API_KEY, }, body="Invalid body") google.get_video_info.run_original_for_test() with mocker: with assert_raises(google.APIError): google.get_video_info('test-video-id')
def test_get_video_info_no_items(self): mocker = test_utils.RequestsMocker() mocker.expect_request( 'get', 'https://www.googleapis.com/youtube/v3/videos', params={ 'part': 'snippet,contentDetails', 'id': 'test-video-id', 'key': settings.GOOGLE_API_KEY, }, body=json.dumps({ 'items': [ ] }) ) google.get_video_info.run_original_for_test() with mocker: with assert_raises(google.APIError): google.get_video_info('test-video-id')
def test_get_user_info(self): mocker = test_utils.RequestsMocker() mocker.expect_request('get', 'https://www.googleapis.com/youtube/v3/channels', params={ 'part': 'id,snippet', 'mine': 'true', }, headers={ 'Authorization': 'Bearer test-access-token', }, body=json.dumps({ 'items': [{ 'id': 'test-channel-id', 'snippet': { 'title': 'test-username', }, }] })) google.get_youtube_user_info.run_original_for_test() with mocker: user_info = google.get_youtube_user_info('test-access-token') self.assertEqual(user_info, ('test-channel-id', 'test-username'))