This commit is contained in:
@ -7,7 +7,6 @@
|
||||
|
||||
/* eslint-disable no-console */
|
||||
import http from 'http';
|
||||
import { type } from 'os';
|
||||
import ks from '../lib/KeyStore';
|
||||
|
||||
export class Response extends http.IncomingMessage {
|
||||
@ -64,7 +63,7 @@ export function clock_setup ():void {
|
||||
assert_keystore_state ();
|
||||
|
||||
const date = (new Date);
|
||||
date.setSeconds (2, 0);
|
||||
date.setHours (0, 0, 2, 0);
|
||||
jasmine.clock ()
|
||||
.install ();
|
||||
jasmine.clock ()
|
||||
|
@ -5,10 +5,10 @@
|
||||
* Created by Timo Hocker <timo@scode.ovh>, December 2020
|
||||
*/
|
||||
|
||||
import ks from '../../lib/KeyStore';
|
||||
import ks, { KeyStore } from '../../lib/KeyStore';
|
||||
import { clock_finalize, clock_setup } from '../Helper';
|
||||
|
||||
const frame = 60;
|
||||
const frame = 3600;
|
||||
|
||||
/* eslint-disable-next-line max-lines-per-function */
|
||||
describe ('key store', () => {
|
||||
@ -146,5 +146,40 @@ describe ('key store', () => {
|
||||
.toBeRejectedWithError ('cannot create infinitely valid key');
|
||||
});
|
||||
|
||||
// TODO: required use case: insert keys for verification of old tokens
|
||||
it ('should export and import all keys', async () => {
|
||||
const iat = (new Date)
|
||||
.getTime () / 1000;
|
||||
|
||||
const sign = await ks.get_sign_key (iat, frame);
|
||||
const ver = ks.get_key (iat);
|
||||
const exp = ks.export_verification_data ();
|
||||
// eslint-disable-next-line dot-notation
|
||||
expect (Object.keys (ks['_keys']))
|
||||
.toEqual (Object.keys (exp));
|
||||
expect (Object.keys (exp)
|
||||
.filter ((v) => typeof exp[v].private_key !== 'undefined').length)
|
||||
.toEqual (0);
|
||||
|
||||
const ks2 = (new KeyStore);
|
||||
expect (ks2.instance_id).not.toEqual (ks.instance_id);
|
||||
ks2.import_verification_data (exp);
|
||||
// eslint-disable-next-line dot-notation
|
||||
expect (ks2['_keys'])
|
||||
.toEqual (exp);
|
||||
|
||||
const sign2 = await ks2.get_sign_key (iat, frame);
|
||||
const ver2 = ks2.get_key (iat);
|
||||
expect (sign).not.toEqual (sign2);
|
||||
expect (ver).not.toEqual (ver2);
|
||||
await expectAsync (ks2.get_sign_key (iat, 60, ks.instance_id))
|
||||
.toBeRejectedWithError ('cannot access already expired keys');
|
||||
expect (ks2.get_key (iat, ks.instance_id))
|
||||
.toEqual (ver);
|
||||
});
|
||||
|
||||
it ('should disallow importing to itself', () => {
|
||||
const exp = ks.export_verification_data ();
|
||||
expect (() => ks.import_verification_data (exp))
|
||||
.toThrowError ('cannot import to the same instance');
|
||||
});
|
||||
});
|
||||
|
Reference in New Issue
Block a user