def test_redis(self): handler = FrequentVisitorHandler(visit_count=3, time_frame=14, more_or_less=1) req = HttpRequest() req.GET = {'t': self.website.token, 'c': self.cid1} req.redis = self.redis self._more_than_2(req, handler) #now if we delete the DB objects, it should still work as the data should be in redis ClientVisitStart.objects.all().delete() logging.debug('True? %s' % handler.check(req)) self.assertTrue(handler.check(req)) handler = FrequentVisitorHandler(visit_count=4, time_frame=14, more_or_less=2) req.GET['c'] = self.cid2 self._less_than_4(req, handler) ClientVisitStart.objects.all().delete() logging.debug('False? %s' % handler.check(req)) self.assertFalse(handler.check(req)) req.GET['c'] = self.cid3 self._unlimited_time(req)
def test_redis_ztime(self): handler = FrequentVisitorHandler(visit_count=1, time_frame=14, more_or_less=1) req = HttpRequest() req.GET = {'t': self.website.token, 'c': self.cid1} req.redis = self.redis zkey = get_visits_redis_key(self.website.token, self.cid1) other_side_of_fourteen = time.time() - (86400*14) - 3 self.redis.zadd(zkey, other_side_of_fourteen, other_side_of_fourteen) self.assertFalse(handler.check(req)) self.redis.flushdb() this_side_of_fourteen = time.time() - (86400*14) + 3 self.redis.zadd(zkey, this_side_of_fourteen, this_side_of_fourteen) self.assertTrue(handler.check(req))
def test_general(self): handler = FrequentVisitorHandler(visit_count=3, time_frame=14, more_or_less=1) req = HttpRequest() self.assertFalse(handler.check(req)) req.GET = {'t': self.website.token} self.assertFalse(handler.check(req)) for c in [None, '', 'garbage']: req.GET['c'] = c self.assertFalse(handler.check(req)) req.redis = self.redis for c in [None, '', 'garbage']: req.GET['c'] = c self.assertFalse(handler.check(req))