import { testables, adminTokenIsValid } from '../../../api/utils/auth' import { Role } from '../../../api/roles' const OLD_ENV = process.env describe('Auth module', function () { afterAll(() => { process.env = OLD_ENV }) beforeAll(async () => { process.env = { ...OLD_ENV } process.env.APP_SECRET = 'testsecret' process.env.ADMIN_SECRET = 'testadminsecret11' }) it('getFieldFromToken should throw an error if a wrong token is provided', function (done) { const token = '1234' expect(() => testables.getFieldFromToken(token, 'userId')).toThrowError('jwt malformed') done() }) it('getFieldFromToken should throw an error if an undefined token is provided', function (done) { const token = undefined expect(() => testables.getFieldFromToken(token, 'userId')).toThrowError( "Cannot read property 'replace' of undefined" ) done() }) it('getFieldFromToken should throw an error if an empty token is provided', function (done) { const token = '' expect(() => testables.getFieldFromToken(token, 'userId')).toThrowError('jwt must be provided') done() }) it('getFieldFromToken should return a decoded userId if the token is valid with a userId claim', function (done) { const token = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiJja2Zwa3YwcngwMzU2eTZwaXJ4YTVvYW5mIiwicm9sZSI6IlJFU0lERU5UIiwiaWF0IjoxNjAxNDgxODAyfQ.53bOaj2RozW1RvhEqSB2y57lNHtrByR77BygvhG2heA' expect(testables.getFieldFromToken(token, 'userId')).toEqual('ckfpkv0rx0356y6pirxa5oanf') done() }) it('getFieldFromToken should return a decoded RESIDENT if the token is valid and has a role claim', function (done) { const token = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiJja2Zwa3YwcngwMzU2eTZwaXJ4YTVvYW5mIiwicm9sZSI6IlJFU0lERU5UIiwiaWF0IjoxNjAxNDgxODAyfQ.53bOaj2RozW1RvhEqSB2y57lNHtrByR77BygvhG2heA' expect(testables.getFieldFromToken(token, 'role')).toEqual(Role.Resident) done() }) it('adminTokenIsValid should return false if an empty object is provided', function (done) { expect(adminTokenIsValid(undefined)).toEqual(false) done() }) it('adminTokenIsValid should return false if a wrong token is provided', function (done) { expect(adminTokenIsValid('1234')).toEqual(false) done() }) it('adminTokenIsValid should resolve true if the proper token is provided', function (done) { expect( adminTokenIsValid( 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE2MDE0Nzc0Mzd9.tRXMROwbg4Y6cxDcd2JZRnTS7txMzYr1qiMMP-WerHs' ) ).toEqual(true) done() }) it('userTokenIsValid should return false if an empty object is provided', function (done) { expect(testables.userTokenIsValid(undefined)).toEqual(false) done() }) it('userTokenIsValid should return false if a wrong token is provided', function (done) { expect(testables.userTokenIsValid('1234')).toEqual(false) done() }) it('userTokenIsValid should resolve true if the proper token is provided', function (done) { expect( testables.userTokenIsValid( 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiJja2Zwa3YwcngwMzU2eTZwaXJ4YTVvYW5mIiwicm9sZSI6IlJFU0lERU5UIiwiaWF0IjoxNjAxNDgxODAyfQ.53bOaj2RozW1RvhEqSB2y57lNHtrByR77BygvhG2heA' ) ).toEqual(true) done() }) })