Files
PANEL_BASES_ANEXO24/src/lib/server/cras-sync.test.ts
hreyes 14b611c581
Some checks failed
Aduanasoft/PANEL_BASES_ANEXO24/pipeline/head There was a failure building this commit
feature/interfaz-binarios (#19)
Reviewed-on: #19
Co-authored-by: hreyes <hreyes@aduanasoft.com.mx>
Co-committed-by: hreyes <hreyes@aduanasoft.com.mx>
2026-07-30 13:52:45 +00:00

69 lines
2.8 KiB
TypeScript

/**
* Parseo de nombres de artefacto de CloudRestoreAS.
*
* El nombre es lo que determina a qué plataforma y arquitectura corresponde cada binario. Si
* el parseo falla en silencio, el artefacto queda invisible en el catálogo y el servidor
* correspondiente nunca recibe la actualización — un síntoma muy difícil de diagnosticar.
*/
import { describe, expect, it } from 'vitest';
import { parseArtifactName } from './cras-sync';
describe('parseArtifactName', () => {
it('reconoce el artefacto de Linux', () => {
expect(parseArtifactName('CloudRestoreAS-1.1.0-linux-x86_64.tar.gz')).toEqual({
version: '1.1.0',
platform: 'linux',
arch: 'x86_64'
});
});
it('traduce el token "win" del nombre a la plataforma "windows"', () => {
// En el nombre se abrevia, pero el vocabulario del catálogo (y del CHECK de la tabla)
// es el que reporta el agente: "windows".
expect(parseArtifactName('CloudRestoreAS-1.1.0-win-x86_64.zip')).toEqual({
version: '1.1.0',
platform: 'windows',
arch: 'x86_64'
});
});
it('acepta versiones de 1 a 4 componentes', () => {
expect(parseArtifactName('CloudRestoreAS-2-linux-x86_64.tar.gz')?.version).toBe('2');
expect(parseArtifactName('CloudRestoreAS-26.7.1.4-linux-x86_64.tar.gz')?.version).toBe(
'26.7.1.4'
);
});
it('acepta otras arquitecturas y las normaliza a minúsculas', () => {
expect(parseArtifactName('CloudRestoreAS-1.1.0-linux-arm64.tar.gz')?.arch).toBe('arm64');
expect(parseArtifactName('CloudRestoreAS-1.1.0-linux-ARM64.tar.gz')?.arch).toBe('arm64');
});
it('rechaza los archivos de verificación que se publican junto a los paquetes', () => {
expect(parseArtifactName('SHA256SUMS')).toBeNull();
expect(parseArtifactName('release.json')).toBeNull();
});
it('rechaza nombres que no son artefactos de despliegue', () => {
for (const name of [
'CloudRestoreAS.exe', // binario crudo, no el paquete
'CloudRestoreAS-linux', // sin versión (esquema anterior)
'CloudRestoreAS-win.zip', // sin versión ni arch (esquema anterior)
'CloudRestoreAS-1.1.0-macos-arm64.tar.gz', // plataforma no soportada
'CloudRestoreAS-1.1.0-linux-x86_64.7z', // extensión inesperada
'CloudRestoreAS-1.0.0-rc1-linux-x86_64.tar.gz', // versión no comparable
'OtroProducto-1.1.0-linux-x86_64.tar.gz',
'',
' '
]) {
expect(parseArtifactName(name), name).toBeNull();
}
});
it('tolera espacios alrededor', () => {
expect(parseArtifactName(' CloudRestoreAS-1.1.0-linux-x86_64.tar.gz ')?.version).toBe(
'1.1.0'
);
});
});