52 lines
1.6 KiB
TypeScript
52 lines
1.6 KiB
TypeScript
import { describe, test, expect } from 'bun:test';
|
|
import { parseImageNameAndTag } from '../src/lib/server/scheduler/tasks/update-utils';
|
|
|
|
describe('parseImageNameAndTag', () => {
|
|
test('adds latest tag when no tag specified', () => {
|
|
expect(parseImageNameAndTag('nginx')).toEqual(['nginx', 'latest']);
|
|
});
|
|
|
|
test('splits simple name:tag', () => {
|
|
expect(parseImageNameAndTag('nginx:1.25')).toEqual(['nginx', '1.25']);
|
|
expect(parseImageNameAndTag('redis:alpine')).toEqual(['redis', 'alpine']);
|
|
});
|
|
|
|
test('handles registry with port and tag', () => {
|
|
expect(parseImageNameAndTag('registry.example.com:5000/myimage:v1')).toEqual([
|
|
'registry.example.com:5000/myimage',
|
|
'v1'
|
|
]);
|
|
});
|
|
|
|
test('handles registry with port and no tag', () => {
|
|
expect(parseImageNameAndTag('registry.example.com:5000/myimage')).toEqual([
|
|
'registry.example.com:5000/myimage',
|
|
'latest'
|
|
]);
|
|
});
|
|
|
|
test('handles digest-based images', () => {
|
|
const digest = 'nginx@sha256:abc123def456';
|
|
expect(parseImageNameAndTag(digest)).toEqual([digest, '']);
|
|
});
|
|
|
|
test('handles dockhand-pending suffix', () => {
|
|
expect(parseImageNameAndTag('nginx:latest-dockhand-pending')).toEqual([
|
|
'nginx',
|
|
'latest-dockhand-pending'
|
|
]);
|
|
});
|
|
|
|
test('handles namespaced images', () => {
|
|
expect(parseImageNameAndTag('library/nginx:latest')).toEqual(['library/nginx', 'latest']);
|
|
expect(parseImageNameAndTag('ghcr.io/finsys/dockhand:v1.0.0')).toEqual([
|
|
'ghcr.io/finsys/dockhand',
|
|
'v1.0.0'
|
|
]);
|
|
});
|
|
|
|
test('handles latest tag explicitly', () => {
|
|
expect(parseImageNameAndTag('nginx:latest')).toEqual(['nginx', 'latest']);
|
|
});
|
|
});
|