92 lines
3.1 KiB
JavaScript
92 lines
3.1 KiB
JavaScript
import { vi, describe, expect, it, beforeAll } from 'vitest';
|
|
import { api } from '@/boot/axios';
|
|
import { useUserStore } from '@/stores/user';
|
|
import { createPinia, setActivePinia } from 'pinia';
|
|
|
|
describe('session', () => {
|
|
let userStore;
|
|
|
|
beforeAll(() => {
|
|
// Configura Pinia y el store
|
|
setActivePinia(createPinia());
|
|
userStore = useUserStore();
|
|
|
|
vi.mock('@/boot/axios', () => ({
|
|
api: {
|
|
post: vi.fn()
|
|
}
|
|
}));
|
|
});
|
|
|
|
describe('RenewToken', () => {
|
|
const expectedToken = 'myToken';
|
|
const expectedTokenMultimedia = 'myTokenMultimedia';
|
|
beforeAll(() => {
|
|
const tokenConfig = {
|
|
id: 1,
|
|
renewPeriod: 21600,
|
|
courtesyTime: 60,
|
|
renewInterval: 300
|
|
};
|
|
userStore.tokenConfig = tokenConfig;
|
|
sessionStorage.setItem('renewPeriod', 21600);
|
|
});
|
|
|
|
it('NOT Should renewToken', async () => {
|
|
const data = {
|
|
username: 'myUser',
|
|
created: Date.now(),
|
|
ttl: 1,
|
|
keepLogin: false,
|
|
token: expectedToken,
|
|
tokenMultimedia: expectedTokenMultimedia
|
|
};
|
|
|
|
userStore.setSession(data);
|
|
expect(sessionStorage.getItem('created')).toBeDefined();
|
|
expect(sessionStorage.getItem('ttl')).toEqual('1');
|
|
await userStore.checkValidity();
|
|
expect(sessionStorage.getItem('token')).toEqual(expectedToken);
|
|
expect(sessionStorage.getItem('tokenMultimedia')).toEqual(
|
|
expectedTokenMultimedia
|
|
);
|
|
});
|
|
|
|
it('Should renewToken', async () => {
|
|
const data = {
|
|
token: expectedToken,
|
|
tokenMultimedia: expectedTokenMultimedia,
|
|
keepLogin: false,
|
|
ttl: 3600, // 1 hora
|
|
created: Date.now() - 100000000 // forzamos a que crea que el token se creó hace 100000000 ms
|
|
};
|
|
|
|
userStore.setSession(data);
|
|
|
|
// Mockea las respuestas de la API
|
|
api.post
|
|
.mockResolvedValueOnce({
|
|
data: { id: 'newToken1' }
|
|
})
|
|
.mockResolvedValueOnce({
|
|
data: { id: 'newToken2' }
|
|
});
|
|
|
|
// Verifica el estado inicial
|
|
expect(sessionStorage.getItem('keepLogin')).toBeFalsy();
|
|
expect(sessionStorage.getItem('created')).toBeDefined();
|
|
expect(sessionStorage.getItem('ttl')).toEqual('3600');
|
|
expect(sessionStorage.getItem('token')).toEqual(expectedToken);
|
|
|
|
// Llama al método que debe validar y renovar el token
|
|
await userStore.checkValidity();
|
|
|
|
// Verifica que los tokens hayan cambiado
|
|
expect(sessionStorage.getItem('token')).not.toEqual(expectedToken);
|
|
expect(sessionStorage.getItem('tokenMultimedia')).not.toEqual(
|
|
expectedTokenMultimedia
|
|
);
|
|
});
|
|
});
|
|
});
|