def test_wont_fetch_unless_recent_or_expiring(self):
        metadata = VimeoMetadata('123')
        metadata._fetch_and_save_data()
        store.maybe_fetch_metadata('123')
        self.assertFalse(self.calls)

        rc.conn.expire(metadata.key, 3599)
        store.maybe_fetch_metadata('123')
        self.assertTrue(self.calls.pop())
Example #2
0
    def test_permitted_user(self):
        banned_user = '******'
        api.BANNED_UPLOADERS = set([banned_user])

        self.banned_vid = VimeoMetadata('123')
        self.banned_vid._populate({'user_name': banned_user})
        self.assertFalse(permitted_user(self.banned_vid))

        self.normal_vid = VimeoMetadata('234')
        self.normal_vid._populate({'user_name': 'normal dude'})
        self.assertTrue(permitted_user(self.normal_vid))
Example #3
0
def popular():
    return_value = rc.conn.get(CACHE_KEY)
    if not return_value:
        videos = VimeoMetadata.load_multiple([id for id, _ in top_scoring()])
        videos = filter(permitted_user, videos)[:15]
        videos_data = [video.__dict__ for video in videos]
        return_value = json.dumps(videos_data)
        rc.conn.set(CACHE_KEY, return_value)
        rc.conn.expire(CACHE_KEY, CACHE_TTL)
    return return_value
class VimeoMetaDataTests(RedisTestCase):
    def setUp(self):
        super(VimeoMetaDataTests, self).setUp()
        self.metadata = VimeoMetadata('123')
        store.vimeo.vimeo_data = lambda x: {'somekey': 'value'}

    def test_present(self):
        self.assertFalse(self.metadata.present())
        self.metadata._fetch_and_save_data()
        self.assertTrue(self.metadata.present())

    def test_needs_refresh(self):
        self.metadata._fetch_and_save_data()
        self.assertFalse(self.metadata.needs_refresh())

        rc.conn.expire(self.metadata.key, 3599)
        self.assertTrue(self.metadata.needs_refresh())
 def setUp(self):
     super(VimeoMetaDataTests, self).setUp()
     self.metadata = VimeoMetadata('123')
     store.vimeo.vimeo_data = lambda x: {'somekey': 'value'}