hedera-web/src/test/vitest/stores/user.spec.js

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
);
});
});
});