const {models} = require('vn-loopback/server/server'); const TOKEN_MULTIMEDIA = 'read:multimedia'; describe('Share Token', () => { let ctx = null; const startingTime = Date.now(); let multimediaToken = null; beforeAll(async() => { const unAuthCtx = { req: { headers: {}, connection: { remoteAddress: '127.0.0.1' }, getLocale: () => 'en' }, args: {} }; let login = await models.VnUser.signIn(unAuthCtx, 'salesAssistant', 'nightmare'); let accessToken = await models.AccessToken.findById(login.token); ctx = {req: {accessToken: accessToken}}; }); beforeEach(async() => { multimediaToken = await models.VnUser.shareToken(ctx); jasmine.clock().install(); jasmine.clock().mockDate(new Date(startingTime)); }); afterEach(() => { jasmine.clock().uninstall(); }); it('should generate token', async() => { expect(Object.keys(multimediaToken).length).toEqual(1); expect(multimediaToken.multimediaToken.userId).toEqual(ctx.req.accessToken.userId); expect(multimediaToken.multimediaToken.scopes[0]).toEqual(TOKEN_MULTIMEDIA); }); it('NOT should renew', async() => { let error; let response; try { response = await models.VnUser.renewToken(ctx); } catch (e) { error = e; } expect(error).toBeUndefined(); expect(response.id).toEqual(ctx.req.accessToken.id); }); it('should renew token', async() => { const mockDate = new Date(startingTime + 26600000); jasmine.clock().mockDate(mockDate); const newShareToken = await models.VnUser.renewToken({req: {accessToken: multimediaToken.multimediaToken}}); const {id} = newShareToken; expect(id).not.toEqual(ctx.req.accessToken.id); const newMultimediaToken = await models.AccessToken.findById(id); expect(newMultimediaToken.scopes[0]).toEqual(TOKEN_MULTIMEDIA); }); });