def test_00_rlkeygen(self): apikey = rlkeygen.key_generate(SECRET, 1, 1, 0) meta = rlkeygen.key_verify(SECRET, apikey) self.assertTrue(meta != None) self.assertEqual(1, meta['org_id']) self.assertEqual(1, meta['app_id']) self.assertEqual(0, meta['credits']) self.assertEqual(None, meta['expires'])
def test_credit_deduction_generated_key(self): # credit limit of 3 inside the key apikey = rlkeygen.key_generate(SECRET, 1, 1, 3) r, body = self.http.get('/test.json', apikey=apikey) self.assertEqual(200, r.status) self.assertEqual('2', r.getheader('x-ratelimit-remaining', 'bad')) # this key will have a credit limit of 2 apikey = rlkeygen.key_generate(SECRET, 1, 1, 2) r, body = self.http.get('/test.json', apikey=apikey) self.assertEqual(200, r.status) self.assertEqual('0', r.getheader('x-ratelimit-remaining', 'bad')) reset_time = float(r.getheader('x-ratelimit-reset', 'bad')) r, body = self.http.get('/credit.json', apikey=apikey) self.assertEqual(200, r.status) self.assertEqual(reset_time, float(r.getheader('x-ratelimit-reset', 'bad'))) js = json.loads(body) self.assertEqual('0', r.getheader('x-ratelimit-remaining', 'bad')) self.assertEqual(0, js['response']['remaining']) self.assertEqual(2, js['response']['limit'])