/* * Copyright (C) Sapphirecode - All Rights Reserved * This file is part of Auth-Server-Helper which is released under MIT. * See file 'LICENSE' for full license details. * Created by Timo Hocker , August 2022 */ import ks from '../../lib/KeyStore'; 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'; describe ('redis', () => { beforeAll (() => { ks.reset_instance (); ks.sync_redis (redis_url); clock_setup (); }); afterAll (() => clock_finalize ()); it ('should write and read all keys', async () => { const iat1 = (new Date) .getTime () / 1000; await ks.get_sign_key (iat1, frame); const k1 = await ks.get_key (iat1); jasmine.clock () .tick (frame * 1000); const iat2 = (new Date) .getTime () / 1000; await ks.get_sign_key (iat2, frame); const k2 = await ks.get_key (iat2); // eslint-disable-next-line dot-notation const index1 = ks['get_index'] (iat1); // eslint-disable-next-line dot-notation const index2 = ks['get_index'] (iat2); // eslint-disable-next-line dot-notation expect (JSON.parse (await redis['_redis']?.get (index1) as string).key) .toEqual (k1); // eslint-disable-next-line dot-notation expect (JSON.parse (await redis['_redis']?.get (index2) as string).key) .toEqual (k2); const old_instance = ks.instance_id; ks.reset_instance (); expectAsync (ks.get_key (iat1, old_instance)) .toBeRejectedWithError ('key could not be found'); expectAsync (ks.get_key (iat1, old_instance)) .toBeRejectedWithError ('key could not be found'); ks.sync_redis (redis_url); expect (await ks.get_key (iat1, old_instance)) .toEqual (k1); expect (await ks.get_key (iat2, old_instance)) .toEqual (k2); }); });