Some checks failed
Aduanasoft/PANEL_BASES_ANEXO24/pipeline/head There was a failure building this commit
Reviewed-on: #19 Co-authored-by: hreyes <hreyes@aduanasoft.com.mx> Co-committed-by: hreyes <hreyes@aduanasoft.com.mx>
69 lines
2.8 KiB
TypeScript
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'
|
|
);
|
|
});
|
|
});
|