This commit is contained in:
@ -104,7 +104,7 @@ describe ('authority', () => {
|
||||
const token = await auth.sign ('access_token', 60);
|
||||
jasmine.clock ()
|
||||
.tick (30000);
|
||||
bl.add_signature (token.id);
|
||||
await bl.add_signature (token.id);
|
||||
const res = await auth.verify (token.signature);
|
||||
expect (res.authorized)
|
||||
.toBeFalse ();
|
||||
@ -144,7 +144,7 @@ describe ('authority', () => {
|
||||
const token = await auth.sign ('refresh_token', 600);
|
||||
jasmine.clock ()
|
||||
.tick (30000);
|
||||
bl.add_signature (token.id);
|
||||
await bl.add_signature (token.id);
|
||||
const res = await auth.verify (token.signature);
|
||||
expect (res.authorized)
|
||||
.toBeFalse ();
|
||||
|
@ -18,70 +18,70 @@ describe ('blacklist', () => {
|
||||
clock_finalize ();
|
||||
});
|
||||
|
||||
it ('should validate any string', () => {
|
||||
expect (blacklist.is_valid ('foo'))
|
||||
it ('should validate any string', async () => {
|
||||
expect (await blacklist.is_valid ('foo'))
|
||||
.toBeTrue ();
|
||||
expect (blacklist.is_valid ('bar'))
|
||||
expect (await blacklist.is_valid ('bar'))
|
||||
.toBeTrue ();
|
||||
expect (blacklist.is_valid ('baz'))
|
||||
expect (await blacklist.is_valid ('baz'))
|
||||
.toBeTrue ();
|
||||
});
|
||||
|
||||
it ('should blacklist strings', () => {
|
||||
blacklist.add_signature ('foo');
|
||||
blacklist.add_signature ('bar');
|
||||
expect (blacklist.is_valid ('foo'))
|
||||
it ('should blacklist strings', async () => {
|
||||
await blacklist.add_signature ('foo');
|
||||
await blacklist.add_signature ('bar');
|
||||
expect (await blacklist.is_valid ('foo'))
|
||||
.toBeFalse ();
|
||||
expect (blacklist.is_valid ('bar'))
|
||||
expect (await blacklist.is_valid ('bar'))
|
||||
.toBeFalse ();
|
||||
expect (blacklist.is_valid ('baz'))
|
||||
expect (await blacklist.is_valid ('baz'))
|
||||
.toBeTrue ();
|
||||
});
|
||||
|
||||
it ('should remove one string', () => {
|
||||
blacklist.remove_signature ('foo');
|
||||
expect (blacklist.is_valid ('foo'))
|
||||
it ('should remove one string', async () => {
|
||||
await blacklist.remove_signature ('foo');
|
||||
expect (await blacklist.is_valid ('foo'))
|
||||
.toBeTrue ();
|
||||
expect (blacklist.is_valid ('bar'))
|
||||
expect (await blacklist.is_valid ('bar'))
|
||||
.toBeFalse ();
|
||||
expect (blacklist.is_valid ('baz'))
|
||||
expect (await blacklist.is_valid ('baz'))
|
||||
.toBeTrue ();
|
||||
});
|
||||
|
||||
it ('should clear after time', () => {
|
||||
it ('should clear after time', async () => {
|
||||
jasmine.clock ()
|
||||
.tick (5000);
|
||||
blacklist.add_signature ('baz');
|
||||
blacklist.clear (Date.now () - 100);
|
||||
expect (blacklist.is_valid ('foo'))
|
||||
await blacklist.add_signature ('baz');
|
||||
await blacklist.clear (Date.now () - 100);
|
||||
expect (await blacklist.is_valid ('foo'))
|
||||
.toBeTrue ();
|
||||
expect (blacklist.is_valid ('bar'))
|
||||
expect (await blacklist.is_valid ('bar'))
|
||||
.toBeTrue ();
|
||||
expect (blacklist.is_valid ('baz'))
|
||||
expect (await blacklist.is_valid ('baz'))
|
||||
.toBeFalse ();
|
||||
});
|
||||
|
||||
it ('should clear all', () => {
|
||||
blacklist.add_signature ('foo');
|
||||
blacklist.add_signature ('bar');
|
||||
blacklist.add_signature ('baz');
|
||||
expect (blacklist.is_valid ('foo'))
|
||||
it ('should clear all', async () => {
|
||||
await blacklist.add_signature ('foo');
|
||||
await blacklist.add_signature ('bar');
|
||||
await blacklist.add_signature ('baz');
|
||||
expect (await blacklist.is_valid ('foo'))
|
||||
.toBeFalse ();
|
||||
expect (blacklist.is_valid ('bar'))
|
||||
expect (await blacklist.is_valid ('bar'))
|
||||
.toBeFalse ();
|
||||
expect (blacklist.is_valid ('baz'))
|
||||
expect (await blacklist.is_valid ('baz'))
|
||||
.toBeFalse ();
|
||||
blacklist.clear ();
|
||||
expect (blacklist.is_valid ('foo'))
|
||||
await blacklist.clear ();
|
||||
expect (await blacklist.is_valid ('foo'))
|
||||
.toBeTrue ();
|
||||
expect (blacklist.is_valid ('bar'))
|
||||
expect (await blacklist.is_valid ('bar'))
|
||||
.toBeTrue ();
|
||||
expect (blacklist.is_valid ('baz'))
|
||||
expect (await blacklist.is_valid ('baz'))
|
||||
.toBeTrue ();
|
||||
});
|
||||
|
||||
it ('should export and import data', () => {
|
||||
blacklist.add_signature ('baz');
|
||||
it ('should export and import data', async () => {
|
||||
await blacklist.add_signature ('baz');
|
||||
const exp = blacklist.export_blacklist ();
|
||||
// eslint-disable-next-line dot-notation
|
||||
expect (blacklist['_signatures'])
|
||||
|
@ -127,7 +127,7 @@ describe ('gateway', () => {
|
||||
|
||||
it ('should reject a blacklisted access token', async () => {
|
||||
const token = await authority.sign ('access_token', 60);
|
||||
blacklist.add_signature (token.id);
|
||||
await blacklist.add_signature (token.id);
|
||||
const resp = await get ({ authorization: `Bearer ${token.signature}` });
|
||||
expect (resp.statusCode)
|
||||
.toEqual (302);
|
||||
|
@ -5,17 +5,25 @@
|
||||
* Created by Timo Hocker <timo@scode.ovh>, August 2022
|
||||
*/
|
||||
|
||||
/* eslint-disable dot-notation */
|
||||
|
||||
import { blacklist } from '../../lib';
|
||||
import ks from '../../lib/KeyStore';
|
||||
import { redis } from '../../lib/Redis';
|
||||
import { Redis } from '../../lib/Redis';
|
||||
import { clock_finalize, clock_setup } from '../Helper';
|
||||
|
||||
const frame = 3600;
|
||||
const redis_url = process.env.TEST_REDIS_URL || 'redis://localhost';
|
||||
const redis = new Redis;
|
||||
redis.connect (redis_url);
|
||||
|
||||
// eslint-disable-next-line max-lines-per-function
|
||||
describe ('redis', () => {
|
||||
beforeAll (() => {
|
||||
beforeAll (async () => {
|
||||
ks.reset_instance ();
|
||||
ks.sync_redis (redis_url);
|
||||
await blacklist.clear ();
|
||||
blacklist.sync_redis (redis_url);
|
||||
clock_setup ();
|
||||
});
|
||||
|
||||
@ -48,11 +56,9 @@ describe ('redis', () => {
|
||||
});
|
||||
|
||||
it ('should have two keys in redis', async () => {
|
||||
// eslint-disable-next-line dot-notation
|
||||
expect (JSON.parse (await redis['_redis']
|
||||
?.get (`keystore_${i1}`) as string).key)
|
||||
.toEqual (k1);
|
||||
// eslint-disable-next-line dot-notation
|
||||
expect (JSON.parse (await redis['_redis']
|
||||
?.get (`keystore_${i2}`) as string).key)
|
||||
.toEqual (k2);
|
||||
@ -72,4 +78,28 @@ describe ('redis', () => {
|
||||
expect (await ks.get_key (iat2, old_instance))
|
||||
.toEqual (k2);
|
||||
});
|
||||
|
||||
it ('should add two keys to the blacklist', async () => {
|
||||
await blacklist.add_signature ('test');
|
||||
await blacklist.add_signature ('foo');
|
||||
});
|
||||
|
||||
it ('should have two keys in redis blacklist', async () => {
|
||||
expect ((await redis['_redis']?.sismember ('blacklist', 'test')) === 1)
|
||||
.toBeTrue ();
|
||||
expect ((await redis['_redis']?.sismember ('blacklist', 'foo')) === 1)
|
||||
.toBeTrue ();
|
||||
expect ((await redis['_redis']?.sismember ('blacklist', 'bar')) === 1)
|
||||
.toBeFalse ();
|
||||
});
|
||||
|
||||
it ('should read keys from redis', async () => {
|
||||
blacklist['_signatures'].splice (0, blacklist['_signatures'].length);
|
||||
expect (await blacklist.is_valid ('test'))
|
||||
.toBeFalse ();
|
||||
expect (await blacklist.is_valid ('foo'))
|
||||
.toBeFalse ();
|
||||
expect (await blacklist.is_valid ('bar'))
|
||||
.toBeTrue ();
|
||||
});
|
||||
});
|
||||
|
Reference in New Issue
Block a user