blob: 09e654b5dab8793e731e42a62ecec8341b2a24c6 [file] [log] [blame]
#!/usr/bin/python
#
# Copyright (C) 2006 Google Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
__author__ = 'api.jhartmann@gmail.com (Jochen Hartmann)'
import unittest
from gdata import test_data
import gdata.youtube
import gdata.youtube.service
import atom
YOUTUBE_TEMPLATE = '{http://gdata.youtube.com/schemas/2007}%s'
YT_FORMAT = YOUTUBE_TEMPLATE % ('format')
class VideoEntryTest(unittest.TestCase):
def setUp(self):
self.video_feed = gdata.youtube.YouTubeVideoFeedFromString(
test_data.YOUTUBE_VIDEO_FEED)
def testCorrectXmlParsing(self):
self.assertEquals(self.video_feed.id.text,
'http://gdata.youtube.com/feeds/api/standardfeeds/top_rated')
self.assertEquals(len(self.video_feed.entry), 2)
for entry in self.video_feed.entry:
if (entry.id.text ==
'http://gdata.youtube.com/feeds/api/videos/C71ypXYGho8'):
self.assertEquals(entry.published.text, '2008-03-20T10:17:27.000-07:00')
self.assertEquals(entry.updated.text, '2008-05-14T04:26:37.000-07:00')
self.assertEquals(entry.category[0].scheme,
'http://gdata.youtube.com/schemas/2007/keywords.cat')
self.assertEquals(entry.category[0].term, 'karyn')
self.assertEquals(entry.category[1].scheme,
'http://gdata.youtube.com/schemas/2007/keywords.cat')
self.assertEquals(entry.category[1].term, 'garcia')
self.assertEquals(entry.category[2].scheme,
'http://gdata.youtube.com/schemas/2007/keywords.cat')
self.assertEquals(entry.category[2].term, 'me')
self.assertEquals(entry.category[3].scheme,
'http://schemas.google.com/g/2005#kind')
self.assertEquals(entry.category[3].term,
'http://gdata.youtube.com/schemas/2007#video')
self.assertEquals(entry.title.text,
'Me odeio por te amar - KARYN GARCIA')
self.assertEquals(entry.content.text, 'http://www.karyngarcia.com.br')
self.assertEquals(entry.link[0].rel, 'alternate')
self.assertEquals(entry.link[0].href,
'http://www.youtube.com/watch?v=C71ypXYGho8')
self.assertEquals(entry.link[1].rel,
'http://gdata.youtube.com/schemas/2007#video.related')
self.assertEquals(entry.link[1].href,
'http://gdata.youtube.com/feeds/api/videos/C71ypXYGho8/related')
self.assertEquals(entry.link[2].rel, 'self')
self.assertEquals(entry.link[2].href,
('http://gdata.youtube.com/feeds/api/standardfeeds'
'/top_rated/C71ypXYGho8'))
self.assertEquals(entry.author[0].name.text, 'TvKarynGarcia')
self.assertEquals(entry.author[0].uri.text,
'http://gdata.youtube.com/feeds/api/users/tvkaryngarcia')
self.assertEquals(entry.media.title.text,
'Me odeio por te amar - KARYN GARCIA')
self.assertEquals(entry.media.description.text,
'http://www.karyngarcia.com.br')
self.assertEquals(entry.media.keywords.text,
'amar, boyfriend, garcia, karyn, me, odeio, por, te')
self.assertEquals(entry.media.duration.seconds, '203')
self.assertEquals(entry.media.category[0].label, 'Music')
self.assertEquals(entry.media.category[0].scheme,
'http://gdata.youtube.com/schemas/2007/categories.cat')
self.assertEquals(entry.media.category[0].text, 'Music')
self.assertEquals(entry.media.category[1].label, 'test111')
self.assertEquals(entry.media.category[1].scheme,
'http://gdata.youtube.com/schemas/2007/developertags.cat')
self.assertEquals(entry.media.category[1].text, 'test111')
self.assertEquals(entry.media.category[2].label, 'test222')
self.assertEquals(entry.media.category[2].scheme,
'http://gdata.youtube.com/schemas/2007/developertags.cat')
self.assertEquals(entry.media.category[2].text, 'test222')
self.assertEquals(entry.media.content[0].url,
'http://www.youtube.com/v/C71ypXYGho8')
self.assertEquals(entry.media.content[0].type,
'application/x-shockwave-flash')
self.assertEquals(entry.media.content[0].medium, 'video')
self.assertEquals(
entry.media.content[0].extension_attributes['isDefault'], 'true')
self.assertEquals(
entry.media.content[0].extension_attributes['expression'], 'full')
self.assertEquals(
entry.media.content[0].extension_attributes['duration'], '203')
self.assertEquals(
entry.media.content[0].extension_attributes[YT_FORMAT], '5')
self.assertEquals(entry.media.content[1].url,
('rtsp://rtsp2.youtube.com/ChoLENy73wIaEQmPhgZ2pXK9CxMYDSANFEgGDA'
'==/0/0/0/video.3gp'))
self.assertEquals(entry.media.content[1].type, 'video/3gpp')
self.assertEquals(entry.media.content[1].medium, 'video')
self.assertEquals(
entry.media.content[1].extension_attributes['expression'], 'full')
self.assertEquals(
entry.media.content[1].extension_attributes['duration'], '203')
self.assertEquals(
entry.media.content[1].extension_attributes[YT_FORMAT], '1')
self.assertEquals(entry.media.content[2].url,
('rtsp://rtsp2.youtube.com/ChoLENy73wIaEQmPhgZ2pXK9CxMYESARFEgGDA=='
'/0/0/0/video.3gp'))
self.assertEquals(entry.media.content[2].type, 'video/3gpp')
self.assertEquals(entry.media.content[2].medium, 'video')
self.assertEquals(
entry.media.content[2].extension_attributes['expression'], 'full')
self.assertEquals(
entry.media.content[2].extension_attributes['duration'], '203')
self.assertEquals(
entry.media.content[2].extension_attributes[YT_FORMAT], '6')
self.assertEquals(entry.media.player.url,
'http://www.youtube.com/watch?v=C71ypXYGho8')
self.assertEquals(entry.media.thumbnail[0].url,
'http://img.youtube.com/vi/C71ypXYGho8/2.jpg')
self.assertEquals(entry.media.thumbnail[0].height, '97')
self.assertEquals(entry.media.thumbnail[0].width, '130')
self.assertEquals(entry.media.thumbnail[0].extension_attributes['time'],
'00:01:41.500')
self.assertEquals(entry.media.thumbnail[1].url,
'http://img.youtube.com/vi/C71ypXYGho8/1.jpg')
self.assertEquals(entry.media.thumbnail[1].height, '97')
self.assertEquals(entry.media.thumbnail[1].width, '130')
self.assertEquals(entry.media.thumbnail[1].extension_attributes['time'],
'00:00:50.750')
self.assertEquals(entry.media.thumbnail[2].url,
'http://img.youtube.com/vi/C71ypXYGho8/3.jpg')
self.assertEquals(entry.media.thumbnail[2].height, '97')
self.assertEquals(entry.media.thumbnail[2].width, '130')
self.assertEquals(entry.media.thumbnail[2].extension_attributes['time'],
'00:02:32.250')
self.assertEquals(entry.media.thumbnail[3].url,
'http://img.youtube.com/vi/C71ypXYGho8/0.jpg')
self.assertEquals(entry.media.thumbnail[3].height, '240')
self.assertEquals(entry.media.thumbnail[3].width, '320')
self.assertEquals(entry.media.thumbnail[3].extension_attributes['time'],
'00:01:41.500')
self.assertEquals(entry.statistics.view_count, '138864')
self.assertEquals(entry.statistics.favorite_count, '2474')
self.assertEquals(entry.rating.min, '1')
self.assertEquals(entry.rating.max, '5')
self.assertEquals(entry.rating.num_raters, '4626')
self.assertEquals(entry.rating.average, '4.95')
self.assertEquals(entry.comments.feed_link[0].href,
('http://gdata.youtube.com/feeds/api/videos/'
'C71ypXYGho8/comments'))
self.assertEquals(entry.comments.feed_link[0].count_hint, '27')
self.assertEquals(entry.GetSwfUrl(),
'http://www.youtube.com/v/C71ypXYGho8')
self.assertEquals(entry.GetYouTubeCategoryAsString(), 'Music')
class VideoEntryPrivateTest(unittest.TestCase):
def setUp(self):
self.entry = gdata.youtube.YouTubeVideoEntryFromString(
test_data.YOUTUBE_ENTRY_PRIVATE)
def testCorrectXmlParsing(self):
self.assert_(isinstance(self.entry,
gdata.youtube.YouTubeVideoEntry))
self.assert_(self.entry.media.private)
class VideoFeedTest(unittest.TestCase):
def setUp(self):
self.feed = gdata.youtube.YouTubeVideoFeedFromString(
test_data.YOUTUBE_VIDEO_FEED)
def testCorrectXmlParsing(self):
self.assertEquals(self.feed.id.text,
'http://gdata.youtube.com/feeds/api/standardfeeds/top_rated')
self.assertEquals(self.feed.generator.text, 'YouTube data API')
self.assertEquals(self.feed.generator.uri, 'http://gdata.youtube.com/')
self.assertEquals(len(self.feed.author), 1)
self.assertEquals(self.feed.author[0].name.text, 'YouTube')
self.assertEquals(len(self.feed.category), 1)
self.assertEquals(self.feed.category[0].scheme,
'http://schemas.google.com/g/2005#kind')
self.assertEquals(self.feed.category[0].term,
'http://gdata.youtube.com/schemas/2007#video')
self.assertEquals(self.feed.items_per_page.text, '25')
self.assertEquals(len(self.feed.link), 4)
self.assertEquals(self.feed.link[0].href,
'http://www.youtube.com/browse?s=tr')
self.assertEquals(self.feed.link[0].rel, 'alternate')
self.assertEquals(self.feed.link[1].href,
'http://gdata.youtube.com/feeds/api/standardfeeds/top_rated')
self.assertEquals(self.feed.link[1].rel,
'http://schemas.google.com/g/2005#feed')
self.assertEquals(self.feed.link[2].href,
('http://gdata.youtube.com/feeds/api/standardfeeds/top_rated?'
'start-index=1&max-results=25'))
self.assertEquals(self.feed.link[2].rel, 'self')
self.assertEquals(self.feed.link[3].href,
('http://gdata.youtube.com/feeds/api/standardfeeds/top_rated?'
'start-index=26&max-results=25'))
self.assertEquals(self.feed.link[3].rel, 'next')
self.assertEquals(self.feed.start_index.text, '1')
self.assertEquals(self.feed.title.text, 'Top Rated')
self.assertEquals(self.feed.total_results.text, '100')
self.assertEquals(self.feed.updated.text, '2008-05-14T02:24:07.000-07:00')
self.assertEquals(len(self.feed.entry), 2)
class YouTubePlaylistFeedTest(unittest.TestCase):
def setUp(self):
self.feed = gdata.youtube.YouTubePlaylistFeedFromString(
test_data.YOUTUBE_PLAYLIST_FEED)
def testCorrectXmlParsing(self):
self.assertEquals(len(self.feed.entry), 1)
self.assertEquals(
self.feed.category[0].scheme, 'http://schemas.google.com/g/2005#kind')
self.assertEquals(self.feed.category[0].term,
'http://gdata.youtube.com/schemas/2007#playlistLink')
class YouTubePlaylistEntryTest(unittest.TestCase):
def setUp(self):
self.feed = gdata.youtube.YouTubePlaylistFeedFromString(
test_data.YOUTUBE_PLAYLIST_FEED)
def testCorrectXmlParsing(self):
for entry in self.feed.entry:
self.assertEquals(entry.category[0].scheme,
'http://schemas.google.com/g/2005#kind')
self.assertEquals(entry.category[0].term,
'http://gdata.youtube.com/schemas/2007#playlistLink')
self.assertEquals(entry.description.text,
'My new playlist Description')
self.assertEquals(entry.feed_link[0].href,
'http://gdata.youtube.com/feeds/playlists/8BCDD04DE8F771B2')
self.assertEquals(entry.feed_link[0].rel,
'http://gdata.youtube.com/schemas/2007#playlist')
class YouTubePlaylistVideoFeedTest(unittest.TestCase):
def setUp(self):
self.feed = gdata.youtube.YouTubePlaylistVideoFeedFromString(
test_data.YOUTUBE_PLAYLIST_VIDEO_FEED)
def testCorrectXmlParsing(self):
self.assertEquals(len(self.feed.entry), 1)
self.assertEquals(self.feed.category[0].scheme,
'http://schemas.google.com/g/2005#kind')
self.assertEquals(self.feed.category[0].term,
'http://gdata.youtube.com/schemas/2007#playlist')
self.assertEquals(self.feed.category[1].scheme,
'http://gdata.youtube.com/schemas/2007/tags.cat')
self.assertEquals(self.feed.category[1].term, 'videos')
self.assertEquals(self.feed.category[2].scheme,
'http://gdata.youtube.com/schemas/2007/tags.cat')
self.assertEquals(self.feed.category[2].term, 'python')
class YouTubePlaylistVideoEntryTest(unittest.TestCase):
def setUp(self):
self.feed = gdata.youtube.YouTubePlaylistVideoFeedFromString(
test_data.YOUTUBE_PLAYLIST_VIDEO_FEED)
def testCorrectXmlParsing(self):
self.assertEquals(len(self.feed.entry), 1)
for entry in self.feed.entry:
self.assertEquals(entry.position.text, '1')
class YouTubeVideoCommentFeedTest(unittest.TestCase):
def setUp(self):
self.feed = gdata.youtube.YouTubeVideoCommentFeedFromString(
test_data.YOUTUBE_COMMENT_FEED)
def testCorrectXmlParsing(self):
self.assertEquals(len(self.feed.category), 1)
self.assertEquals(self.feed.category[0].scheme,
'http://schemas.google.com/g/2005#kind')
self.assertEquals(self.feed.category[0].term,
'http://gdata.youtube.com/schemas/2007#comment')
self.assertEquals(len(self.feed.link), 4)
self.assertEquals(self.feed.link[0].rel, 'related')
self.assertEquals(self.feed.link[0].href,
'http://gdata.youtube.com/feeds/videos/2Idhz9ef5oU')
self.assertEquals(self.feed.link[1].rel, 'alternate')
self.assertEquals(self.feed.link[1].href,
'http://www.youtube.com/watch?v=2Idhz9ef5oU')
self.assertEquals(self.feed.link[2].rel,
'http://schemas.google.com/g/2005#feed')
self.assertEquals(self.feed.link[2].href,
'http://gdata.youtube.com/feeds/videos/2Idhz9ef5oU/comments')
self.assertEquals(self.feed.link[3].rel, 'self')
self.assertEquals(self.feed.link[3].href,
('http://gdata.youtube.com/feeds/videos/2Idhz9ef5oU/comments?'
'start-index=1&max-results=25'))
self.assertEquals(len(self.feed.entry), 3)
class YouTubeVideoCommentEntryTest(unittest.TestCase):
def setUp(self):
self.feed = gdata.youtube.YouTubeVideoCommentFeedFromString(
test_data.YOUTUBE_COMMENT_FEED)
def testCorrectXmlParsing(self):
self.assertEquals(len(self.feed.entry), 3)
self.assert_(isinstance(self.feed.entry[0],
gdata.youtube.YouTubeVideoCommentEntry))
for entry in self.feed.entry:
if (entry.id.text ==
('http://gdata.youtube.com/feeds/videos/'
'2Idhz9ef5oU/comments/91F809A3DE2EB81B')):
self.assertEquals(entry.category[0].scheme,
'http://schemas.google.com/g/2005#kind')
self.assertEquals(entry.category[0].term,
'http://gdata.youtube.com/schemas/2007#comment')
self.assertEquals(entry.link[0].href,
'http://gdata.youtube.com/feeds/videos/2Idhz9ef5oU')
self.assertEquals(entry.link[0].rel, 'related')
self.assertEquals(entry.content.text, 'test66')
class YouTubeVideoSubscriptionFeedTest(unittest.TestCase):
def setUp(self):
self.feed = gdata.youtube.YouTubeSubscriptionFeedFromString(
test_data.YOUTUBE_SUBSCRIPTION_FEED)
def testCorrectXmlParsing(self):
self.assertEquals(len(self.feed.category), 1)
self.assertEquals(self.feed.category[0].scheme,
'http://schemas.google.com/g/2005#kind')
self.assertEquals(self.feed.category[0].term,
'http://gdata.youtube.com/schemas/2007#subscription')
self.assertEquals(len(self.feed.link), 4)
self.assertEquals(self.feed.link[0].rel, 'related')
self.assertEquals(self.feed.link[0].href,
'http://gdata.youtube.com/feeds/users/andyland74')
self.assertEquals(self.feed.link[1].rel, 'alternate')
self.assertEquals(self.feed.link[1].href,
'http://www.youtube.com/profile_subscriptions?user=andyland74')
self.assertEquals(self.feed.link[2].rel,
'http://schemas.google.com/g/2005#feed')
self.assertEquals(self.feed.link[2].href,
'http://gdata.youtube.com/feeds/users/andyland74/subscriptions')
self.assertEquals(self.feed.link[3].rel, 'self')
self.assertEquals(self.feed.link[3].href,
('http://gdata.youtube.com/feeds/users/andyland74/subscriptions?'
'start-index=1&max-results=25'))
self.assertEquals(len(self.feed.entry), 1)
class YouTubeVideoSubscriptionEntryTest(unittest.TestCase):
def setUp(self):
self.feed = gdata.youtube.YouTubeSubscriptionFeedFromString(
test_data.YOUTUBE_SUBSCRIPTION_FEED)
def testCorrectXmlParsing(self):
for entry in self.feed.entry:
self.assertEquals(len(entry.category), 2)
self.assertEquals(entry.category[0].scheme,
'http://gdata.youtube.com/schemas/2007/subscriptiontypes.cat')
self.assertEquals(entry.category[0].term, 'channel')
self.assertEquals(entry.category[1].scheme,
'http://schemas.google.com/g/2005#kind')
self.assertEquals(entry.category[1].term,
'http://gdata.youtube.com/schemas/2007#subscription')
self.assertEquals(len(entry.link), 3)
self.assertEquals(entry.link[0].href,
'http://gdata.youtube.com/feeds/users/andyland74')
self.assertEquals(entry.link[0].rel, 'related')
self.assertEquals(entry.link[1].href,
'http://www.youtube.com/profile_videos?user=NBC')
self.assertEquals(entry.link[1].rel, 'alternate')
self.assertEquals(entry.link[2].href,
('http://gdata.youtube.com/feeds/users/andyland74/subscriptions/'
'd411759045e2ad8c'))
self.assertEquals(entry.link[2].rel, 'self')
self.assertEquals(len(entry.feed_link), 1)
self.assertEquals(entry.feed_link[0].href,
'http://gdata.youtube.com/feeds/api/users/nbc/uploads')
self.assertEquals(entry.feed_link[0].rel,
'http://gdata.youtube.com/schemas/2007#user.uploads')
self.assertEquals(entry.username.text, 'NBC')
class YouTubeVideoResponseFeedTest(unittest.TestCase):
def setUp(self):
self.feed = gdata.youtube.YouTubeVideoFeedFromString(
test_data.YOUTUBE_VIDEO_RESPONSE_FEED)
def testCorrectXmlParsing(self):
self.assertEquals(len(self.feed.category), 1)
self.assertEquals(self.feed.category[0].scheme,
'http://schemas.google.com/g/2005#kind')
self.assertEquals(self.feed.category[0].term,
'http://gdata.youtube.com/schemas/2007#video')
self.assertEquals(len(self.feed.link), 4)
self.assertEquals(self.feed.link[0].href,
'http://gdata.youtube.com/feeds/videos/2c3q9K4cHzY')
self.assertEquals(self.feed.link[0].rel, 'related')
self.assertEquals(self.feed.link[1].href,
'http://www.youtube.com/video_response_view_all?v=2c3q9K4cHzY')
self.assertEquals(self.feed.link[1].rel, 'alternate')
self.assertEquals(self.feed.link[2].href,
'http://gdata.youtube.com/feeds/videos/2c3q9K4cHzY/responses')
self.assertEquals(self.feed.link[2].rel,
'http://schemas.google.com/g/2005#feed')
self.assertEquals(self.feed.link[3].href,
('http://gdata.youtube.com/feeds/videos/2c3q9K4cHzY/responses?'
'start-index=1&max-results=25'))
self.assertEquals(self.feed.link[3].rel, 'self')
self.assertEquals(len(self.feed.entry), 1)
class YouTubeVideoResponseEntryTest(unittest.TestCase):
def setUp(self):
self.feed = gdata.youtube.YouTubeVideoFeedFromString(
test_data.YOUTUBE_VIDEO_RESPONSE_FEED)
def testCorrectXmlParsing(self):
for entry in self.feed.entry:
self.assert_(isinstance(entry, gdata.youtube.YouTubeVideoEntry))
class YouTubeContactFeed(unittest.TestCase):
def setUp(self):
self.feed = gdata.youtube.YouTubeContactFeedFromString(
test_data.YOUTUBE_CONTACTS_FEED)
def testCorrectXmlParsing(self):
self.assertEquals(len(self.feed.entry), 2)
self.assertEquals(self.feed.category[0].scheme,
'http://schemas.google.com/g/2005#kind')
self.assertEquals(self.feed.category[0].term,
'http://gdata.youtube.com/schemas/2007#friend')
class YouTubeContactEntry(unittest.TestCase):
def setUp(self):
self.feed= gdata.youtube.YouTubeContactFeedFromString(
test_data.YOUTUBE_CONTACTS_FEED)
def testCorrectXmlParsing(self):
for entry in self.feed.entry:
if (entry.id.text == ('http://gdata.youtube.com/feeds/users/'
'apitestjhartmann/contacts/testjfisher')):
self.assertEquals(entry.username.text, 'testjfisher')
self.assertEquals(entry.status.text, 'pending')
class YouTubeUserEntry(unittest.TestCase):
def setUp(self):
self.feed = gdata.youtube.YouTubeUserEntryFromString(
test_data.YOUTUBE_PROFILE)
def testCorrectXmlParsing(self):
self.assertEquals(self.feed.author[0].name.text, 'andyland74')
self.assertEquals(self.feed.books.text, 'Catch-22')
self.assertEquals(self.feed.category[0].scheme,
'http://gdata.youtube.com/schemas/2007/channeltypes.cat')
self.assertEquals(self.feed.category[0].term, 'Standard')
self.assertEquals(self.feed.category[1].scheme,
'http://schemas.google.com/g/2005#kind')
self.assertEquals(self.feed.category[1].term,
'http://gdata.youtube.com/schemas/2007#userProfile')
self.assertEquals(self.feed.company.text, 'Google')
self.assertEquals(self.feed.gender.text, 'm')
self.assertEquals(self.feed.hobbies.text, 'Testing YouTube APIs')
self.assertEquals(self.feed.hometown.text, 'Somewhere')
self.assertEquals(len(self.feed.feed_link), 6)
self.assertEquals(self.feed.feed_link[0].count_hint, '4')
self.assertEquals(self.feed.feed_link[0].href,
'http://gdata.youtube.com/feeds/users/andyland74/favorites')
self.assertEquals(self.feed.feed_link[0].rel,
'http://gdata.youtube.com/schemas/2007#user.favorites')
self.assertEquals(self.feed.feed_link[1].count_hint, '1')
self.assertEquals(self.feed.feed_link[1].href,
'http://gdata.youtube.com/feeds/users/andyland74/contacts')
self.assertEquals(self.feed.feed_link[1].rel,
'http://gdata.youtube.com/schemas/2007#user.contacts')
self.assertEquals(self.feed.feed_link[2].count_hint, '0')
self.assertEquals(self.feed.feed_link[2].href,
'http://gdata.youtube.com/feeds/users/andyland74/inbox')
self.assertEquals(self.feed.feed_link[2].rel,
'http://gdata.youtube.com/schemas/2007#user.inbox')
self.assertEquals(self.feed.feed_link[3].count_hint, None)
self.assertEquals(self.feed.feed_link[3].href,
'http://gdata.youtube.com/feeds/users/andyland74/playlists')
self.assertEquals(self.feed.feed_link[3].rel,
'http://gdata.youtube.com/schemas/2007#user.playlists')
self.assertEquals(self.feed.feed_link[4].count_hint, '4')
self.assertEquals(self.feed.feed_link[4].href,
'http://gdata.youtube.com/feeds/users/andyland74/subscriptions')
self.assertEquals(self.feed.feed_link[4].rel,
'http://gdata.youtube.com/schemas/2007#user.subscriptions')
self.assertEquals(self.feed.feed_link[5].count_hint, '1')
self.assertEquals(self.feed.feed_link[5].href,
'http://gdata.youtube.com/feeds/users/andyland74/uploads')
self.assertEquals(self.feed.feed_link[5].rel,
'http://gdata.youtube.com/schemas/2007#user.uploads')
self.assertEquals(self.feed.first_name.text, 'andy')
self.assertEquals(self.feed.last_name.text, 'example')
self.assertEquals(self.feed.link[0].href,
'http://www.youtube.com/profile?user=andyland74')
self.assertEquals(self.feed.link[0].rel, 'alternate')
self.assertEquals(self.feed.link[1].href,
'http://gdata.youtube.com/feeds/users/andyland74')
self.assertEquals(self.feed.link[1].rel, 'self')
self.assertEquals(self.feed.location.text, 'US')
self.assertEquals(self.feed.movies.text, 'Aqua Teen Hungerforce')
self.assertEquals(self.feed.music.text, 'Elliott Smith')
self.assertEquals(self.feed.occupation.text, 'Technical Writer')
self.assertEquals(self.feed.published.text, '2006-10-16T00:09:45.000-07:00')
self.assertEquals(self.feed.school.text, 'University of North Carolina')
self.assertEquals(self.feed.statistics.last_web_access,
'2008-02-25T16:03:38.000-08:00')
self.assertEquals(self.feed.statistics.subscriber_count, '1')
self.assertEquals(self.feed.statistics.video_watch_count, '21')
self.assertEquals(self.feed.statistics.view_count, '9')
self.assertEquals(self.feed.thumbnail.url,
'http://i.ytimg.com/vi/YFbSxcdOL-w/default.jpg')
self.assertEquals(self.feed.title.text, 'andyland74 Channel')
self.assertEquals(self.feed.updated.text, '2008-02-26T11:48:21.000-08:00')
self.assertEquals(self.feed.username.text, 'andyland74')
if __name__ == '__main__':
unittest.main()