blacklist with automatic garbage collector
Some checks failed
continuous-integration/drone/push Build is failing
Some checks failed
continuous-integration/drone/push Build is failing
This commit is contained in:
@ -6,10 +6,15 @@
|
||||
*/
|
||||
|
||||
import blacklist, { Blacklist } from '../../lib/Blacklist';
|
||||
import { generate_token_id, parse_token_id } from '../../lib/token_id';
|
||||
import { clock_finalize, clock_setup } from '../Helper';
|
||||
|
||||
// eslint-disable-next-line max-lines-per-function
|
||||
describe ('blacklist', () => {
|
||||
const token1 = generate_token_id (new Date (Date.now () + 3600000));
|
||||
const token2 = generate_token_id (new Date (Date.now () + 3600000));
|
||||
const token3 = generate_token_id (new Date (Date.now () + 3600000));
|
||||
|
||||
beforeAll (() => {
|
||||
clock_setup ();
|
||||
});
|
||||
@ -19,77 +24,88 @@ describe ('blacklist', () => {
|
||||
});
|
||||
|
||||
it ('should validate any string', async () => {
|
||||
expect (await blacklist.is_valid ('foo'))
|
||||
expect (await blacklist.is_valid (token1))
|
||||
.toBeTrue ();
|
||||
expect (await blacklist.is_valid ('bar'))
|
||||
expect (await blacklist.is_valid (token2))
|
||||
.toBeTrue ();
|
||||
expect (await blacklist.is_valid ('baz'))
|
||||
expect (await blacklist.is_valid (token3))
|
||||
.toBeTrue ();
|
||||
});
|
||||
|
||||
it ('should blacklist strings', async () => {
|
||||
await blacklist.add_signature ('foo');
|
||||
await blacklist.add_signature ('bar');
|
||||
expect (await blacklist.is_valid ('foo'))
|
||||
await blacklist.add_signature (token1);
|
||||
await blacklist.add_signature (token2);
|
||||
expect (await blacklist.is_valid (token1))
|
||||
.toBeFalse ();
|
||||
expect (await blacklist.is_valid ('bar'))
|
||||
expect (await blacklist.is_valid (token2))
|
||||
.toBeFalse ();
|
||||
expect (await blacklist.is_valid ('baz'))
|
||||
expect (await blacklist.is_valid (token3))
|
||||
.toBeTrue ();
|
||||
});
|
||||
|
||||
it ('should remove one string', async () => {
|
||||
await blacklist.remove_signature ('foo');
|
||||
expect (await blacklist.is_valid ('foo'))
|
||||
await blacklist.remove_signature (token1);
|
||||
expect (await blacklist.is_valid (token1))
|
||||
.toBeTrue ();
|
||||
expect (await blacklist.is_valid ('bar'))
|
||||
expect (await blacklist.is_valid (token2))
|
||||
.toBeFalse ();
|
||||
expect (await blacklist.is_valid ('baz'))
|
||||
expect (await blacklist.is_valid (token3))
|
||||
.toBeTrue ();
|
||||
});
|
||||
|
||||
it ('should clear after time', async () => {
|
||||
jasmine.clock ()
|
||||
.tick (5000);
|
||||
await blacklist.add_signature ('baz');
|
||||
await blacklist.add_signature (token3);
|
||||
await blacklist.clear (Date.now () - 100);
|
||||
expect (await blacklist.is_valid ('foo'))
|
||||
expect (await blacklist.is_valid (token1))
|
||||
.toBeTrue ();
|
||||
expect (await blacklist.is_valid ('bar'))
|
||||
expect (await blacklist.is_valid (token2))
|
||||
.toBeTrue ();
|
||||
expect (await blacklist.is_valid ('baz'))
|
||||
expect (await blacklist.is_valid (token3))
|
||||
.toBeFalse ();
|
||||
});
|
||||
|
||||
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'))
|
||||
await blacklist.add_signature (token1);
|
||||
await blacklist.add_signature (token2);
|
||||
await blacklist.add_signature (token3);
|
||||
expect (await blacklist.is_valid (token1))
|
||||
.toBeFalse ();
|
||||
expect (await blacklist.is_valid ('bar'))
|
||||
expect (await blacklist.is_valid (token2))
|
||||
.toBeFalse ();
|
||||
expect (await blacklist.is_valid ('baz'))
|
||||
expect (await blacklist.is_valid (token3))
|
||||
.toBeFalse ();
|
||||
await blacklist.clear ();
|
||||
expect (await blacklist.is_valid ('foo'))
|
||||
expect (await blacklist.is_valid (token1))
|
||||
.toBeTrue ();
|
||||
expect (await blacklist.is_valid ('bar'))
|
||||
expect (await blacklist.is_valid (token2))
|
||||
.toBeTrue ();
|
||||
expect (await blacklist.is_valid ('baz'))
|
||||
expect (await blacklist.is_valid (token3))
|
||||
.toBeTrue ();
|
||||
});
|
||||
|
||||
it ('should export and import data', async () => {
|
||||
await blacklist.add_signature ('baz');
|
||||
const exp = blacklist.export_blacklist ();
|
||||
const time = new Date;
|
||||
const token = generate_token_id (time);
|
||||
await blacklist.add_signature (token);
|
||||
// eslint-disable-next-line dot-notation
|
||||
expect (blacklist['_signatures'])
|
||||
.toEqual (exp);
|
||||
.toEqual ([
|
||||
{
|
||||
token_id: token,
|
||||
iat: time.getTime (),
|
||||
valid_until: time
|
||||
}
|
||||
]);
|
||||
const exp = blacklist.export_blacklist ();
|
||||
expect (exp)
|
||||
.toEqual ([ { token_id: token, iat: time.getTime () } ]);
|
||||
const bl2 = (new Blacklist);
|
||||
bl2.import_blacklist (exp);
|
||||
// eslint-disable-next-line dot-notation
|
||||
expect (bl2['_signatures'])
|
||||
.toEqual (exp);
|
||||
// eslint-disable-next-line dot-notation
|
||||
.toEqual (blacklist['_signatures']);
|
||||
});
|
||||
});
|
||||
|
@ -192,7 +192,7 @@ describe ('gateway', () => {
|
||||
expect (resp.statusCode)
|
||||
.toEqual (200);
|
||||
const blacklisted = blacklist.export_blacklist ()
|
||||
.map ((v) => v.hash);
|
||||
.map ((v) => v.token_id);
|
||||
expect (blacklisted)
|
||||
.toContain (token.id);
|
||||
expect (blacklisted)
|
||||
|
13
test/spec/token_id.ts
Normal file
13
test/spec/token_id.ts
Normal file
@ -0,0 +1,13 @@
|
||||
import { generate_token_id, parse_token_id } from '../../lib/token_id';
|
||||
|
||||
describe ('token_id', () => {
|
||||
it ('should always generate valid tokens', () => {
|
||||
for (let i = 0; i < 1000; i++) {
|
||||
const date = new Date;
|
||||
const token_id = generate_token_id (new Date);
|
||||
const parsed = parse_token_id (token_id);
|
||||
expect (parsed.valid_until)
|
||||
.toEqual (date);
|
||||
}
|
||||
});
|
||||
});
|
Reference in New Issue
Block a user