#7190 - Renew tokenMultimedia #2272

Merged
jsegarra merged 5 commits from 7190_renewTokenMultimedia into dev 2024-04-16 12:25:54 +00:00
2 changed files with 47 additions and 4 deletions
Showing only changes of commit 253465cf13 - Show all commits

View File

@ -40,9 +40,15 @@ module.exports = Self => {
}
}, courtesyTime * 1000);
// Get scopes
let createTokenOptions = {};
const {scopes} = token;
if (scopes)
createTokenOptions = {scopes: [scopes[0]]};
// Create new accessToken
const user = await Self.findById(token.userId);
const accessToken = await user.createAccessToken();
const accessToken = await user.accessTokens.create(createTokenOptions);
return {id: accessToken.id, ttl: accessToken.ttl};
};

View File

@ -1,6 +1,9 @@
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: {
@ -17,11 +20,45 @@ describe('Share Token', () => {
ctx = {req: {accessToken: accessToken}};
});
it('should renew token', async() => {
const multimediaToken = await models.VnUser.shareToken(ctx);
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('read:multimedia');
expect(multimediaToken.multimediaToken.scopes[0]).toEqual(TOKEN_MULTIMEDIA);
});
it('NOT should renew', async() => {
Review

Tal cual está este test en renew-token , hace falta repetirlo?

Tal cual está este test en [renew-token](https://gitea.verdnatura.es/verdnatura/salix/src/commit/ba94bcdb1998d6b3f9e5d837d4f7fbbd6f8921b3/back/methods/vn-user/specs/renew-token.spec.js#L38) , hace falta repetirlo?
Review

Lo sé, pero

  1. Al ctx hay que pasarle el tokenMultimedia y no el token normal, entonces habria que hacer mas código
  2. El test es para shareToken, entonces si delego la funcionalidad de shareToken en renewToken, puede quedar confuso y da la sensacion que para sharetoken no se hace la prueba de cuando no debe renovar el token

Entonces, preferí dejarlo así, se duplica pero queda aislada la funcionalidad de testear

Lo sé, pero 1. Al ctx hay que pasarle el tokenMultimedia y no el token normal, entonces habria que hacer mas código 2. El test es para shareToken, entonces si delego la funcionalidad de shareToken en renewToken, puede quedar confuso y da la sensacion que para sharetoken no se hace la prueba de cuando no debe renovar el token Entonces, preferí dejarlo así, se duplica pero queda aislada la funcionalidad de testear
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);
});
});