From 669bc199430100689e42af3abc8f8291101b8352 Mon Sep 17 00:00:00 2001 From: Timo Hocker Date: Sat, 19 Dec 2020 16:19:09 +0100 Subject: [PATCH] tests for authority --- lib/Authority.ts | 8 +++++-- test/spec/Authority.ts | 54 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 60 insertions(+), 2 deletions(-) create mode 100644 test/spec/Authority.ts diff --git a/lib/Authority.ts b/lib/Authority.ts index 14514eb..9842e6b 100644 --- a/lib/Authority.ts +++ b/lib/Authority.ts @@ -22,7 +22,11 @@ interface SignatureResult { class Authority { public verify (key: string): VerificationResult { - const result = { authorized: false, type: 'none', next_module: '' }; + const result: VerificationResult = { + authorized: false, + type: 'none', + next_module: '' + }; const data = verify_signature_get_info ( key, (info) => keystore.get_key (info.iat / 1000), @@ -49,7 +53,7 @@ class Authority { next_module?: string ): SignatureResult { const time = Date.now (); - const key = keystore.get_key (time / 1000); + const key = keystore.get_key (time / 1000, valid_for); const attributes = { id: create_salt (), iat: time, diff --git a/test/spec/Authority.ts b/test/spec/Authority.ts new file mode 100644 index 0000000..06f951d --- /dev/null +++ b/test/spec/Authority.ts @@ -0,0 +1,54 @@ +import auth from '../../lib/Authority'; + +describe ('authority', () => { + beforeEach (() => { + jasmine.clock () + .install (); + jasmine.clock () + .mockDate (new Date); + }); + + afterEach (() => { + jasmine.clock () + .uninstall (); + }); + + it ('should create an access token', () => { + const token = auth.sign ('access_token', 60); + jasmine.clock () + .tick (30000); + const res = auth.verify (token.signature); + expect (res.authorized) + .toBeTrue (); + expect (res.type) + .toEqual ('access_token'); + expect (res.next_module) + .toBeUndefined (); + }); + + it ('should create a refresh token', () => { + const token = auth.sign ('refresh_token', 600); + jasmine.clock () + .tick (30000); + const res = auth.verify (token.signature); + expect (res.authorized) + .toBeFalse (); + expect (res.type) + .toEqual ('refresh_token'); + expect (res.next_module) + .toBeUndefined (); + }); + + it ('should create a part token', () => { + const token = auth.sign ('part_token', 60, '2fa'); + jasmine.clock () + .tick (30000); + const res = auth.verify (token.signature); + expect (res.authorized) + .toBeFalse (); + expect (res.type) + .toEqual ('part_token'); + expect (res.next_module) + .toEqual ('2fa'); + }); +});