1
0
Fork 0
mirror of https://github.com/docker/build-push-action.git synced 2025-03-30 19:50:07 +02:00
build-push-action/__tests__/image-reference.test.ts
CrazyMax 92991ec63d
Sanitize tags
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
2021-04-08 16:08:02 +02:00

186 lines
3.8 KiB
TypeScript

import {ImageReference} from '../src/image-reference';
describe('fromString', () => {
// prettier-ignore
test.each([
[
'foo_com',
{
path: 'foo_com'
},
false
],
[
'foo.com:tag',
{
path: 'foo.com',
tag: 'tag'
},
false
],
[
'foo.com:5000',
{
path: 'foo.com',
tag: '5000'
},
false
],
[
'foo.com/repo:tag',
{
domain: 'foo.com',
path: 'repo',
tag: 'tag'
},
false
],
[
'foo.com:5000/repo',
{
domain: 'foo.com:5000',
path: 'repo'
},
false
],
[
'foo.com:5000/repo:tag',
{
domain: 'foo.com:5000',
path: 'repo',
tag: 'tag'
},
false
],
[
'foo:5000/repo@sha256:ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff',
{
domain: 'foo:5000',
path: 'repo',
digest: 'sha256:ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff',
},
false
],
[
'foo:5000/repo:tag@sha256:ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff',
{
domain: 'foo:5000',
path: 'repo',
tag: 'tag',
digest: 'sha256:ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff',
},
false
],
[
'foo:5000/repo',
{
domain: 'foo:5000',
path: 'repo'
},
false
],
[
':justtag',
{},
true
],
[
'b.gcr.io/foo.example.com/my-app:foo.example.com',
{
domain: 'b.gcr.io',
path: 'foo.example.com/my-app',
tag: 'foo.example.com',
},
false
],
[
'docker.io/library/ubuntu:18.04@sha256:ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff',
{
domain: 'docker.io',
path: 'library/ubuntu',
tag: '18.04',
digest: 'sha256:ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff'
},
false
],
[
'ghactionstest/ghactionstest',
{
domain: 'ghactionstest',
path: 'ghactionstest'
},
false
],
[
'ghcr.io/docker-ghactiontest/test',
{
domain: 'ghcr.io',
path: 'docker-ghactiontest/test'
},
false
],
[
'registry.gitlab.com/test1716/test',
{
domain: 'registry.gitlab.com',
path: 'test1716/test'
},
false
],
[
'175142243308.dkr.ecr.us-east-2.amazonaws.com/sandbox/test-docker-action',
{
domain: '175142243308.dkr.ecr.us-east-2.amazonaws.com',
path: 'sandbox/test-docker-action'
},
false
],
[
'public.ecr.aws/q3b5f1u4/test-docker-action',
{
domain: 'public.ecr.aws',
path: 'q3b5f1u4/test-docker-action'
},
false
],
[
'us-east4-docker.pkg.dev/sandbox-298914/docker-official-github-actions/test-docker-action',
{
domain: 'us-east4-docker.pkg.dev',
path: 'sandbox-298914/docker-official-github-actions/test-docker-action'
},
false
],
[
'gcr.io/sandbox-298914/test-docker-action',
{
domain: 'gcr.io',
path: 'sandbox-298914/test-docker-action'
},
false
],
[
'ghcr.io/KTH-Library/kontarion:latest',
{
domain: 'ghcr.io',
path: 'kth-library/kontarion',
tag: 'latest'
},
false
],
])(
'given %p',
async (input, expected, invalid) => {
try {
const ir = ImageReference.fromString(input);
console.log(ir);
expect(ir).toEqual(expected);
} catch (err) {
if (!invalid) {
console.error(err);
}
expect(true).toBe(invalid);
}
}
);
});