175 lines
4.6 KiB
JavaScript
175 lines
4.6 KiB
JavaScript
import { expect } from 'chai'
|
|
import { test, given } from 'sazerac'
|
|
import { InvalidResponse } from '../index.js'
|
|
import DockerVersion from './docker-version.service.js'
|
|
import {
|
|
versionDataNoTagDateSort,
|
|
versionPagedDataNoTagDateSort,
|
|
versionDataNoTagSemVerSort,
|
|
versionDataWithTag,
|
|
versionDataWithVaryingArchitectures,
|
|
} from './docker-fixtures.js'
|
|
|
|
describe('DockerVersion', function () {
|
|
test(DockerVersion.prototype.transform, () => {
|
|
given({
|
|
tag: '',
|
|
sort: 'date',
|
|
data: { results: [{ name: 'stable' }] },
|
|
}).expect({
|
|
version: 'stable',
|
|
})
|
|
given({
|
|
tag: '',
|
|
sort: 'date',
|
|
data: { results: [{ name: '3.9.5' }] },
|
|
}).expect({
|
|
version: '3.9.5',
|
|
})
|
|
given({
|
|
tag: '',
|
|
sort: 'date',
|
|
data: versionDataNoTagDateSort,
|
|
pagedData: versionPagedDataNoTagDateSort,
|
|
}).expect({
|
|
version: 'amd64-latest',
|
|
})
|
|
given({
|
|
tag: '',
|
|
sort: 'semver',
|
|
data: versionDataNoTagSemVerSort,
|
|
}).expect({
|
|
version: '3.11.3',
|
|
})
|
|
given({
|
|
tag: '3.10',
|
|
data: versionDataWithTag,
|
|
}).expect({
|
|
version: '3.10.4',
|
|
})
|
|
|
|
// tag & custom architecture
|
|
given({
|
|
tag: '3.9',
|
|
data: versionDataWithVaryingArchitectures,
|
|
arch: 'arm',
|
|
}).expect({
|
|
version: '3.9',
|
|
})
|
|
|
|
// sort & custom architecture
|
|
given({
|
|
data: versionDataWithVaryingArchitectures,
|
|
sort: 'semver',
|
|
arch: 'ppc64le',
|
|
}).expect({
|
|
version: '3.10.4',
|
|
})
|
|
})
|
|
|
|
it('throws InvalidResponse error with latest tag and no amd64 architecture digests', function () {
|
|
expect(() => {
|
|
DockerVersion.prototype.transform({
|
|
sort: 'date',
|
|
data: {
|
|
results: [
|
|
{
|
|
name: 'latest',
|
|
images: [
|
|
{
|
|
architecture: 'arm64',
|
|
digest:
|
|
'sha256:597bd5c319cc09d6bb295b4ef23cac50ec7c373fff5fe923cfd246ec09967b31',
|
|
},
|
|
{
|
|
architecture: 'arm',
|
|
digest:
|
|
'sha256:c5ea49127cd44d0f50eafda229a056bb83b6e691883c56fd863d42675fae3909',
|
|
},
|
|
],
|
|
},
|
|
],
|
|
},
|
|
})
|
|
})
|
|
.to.throw(InvalidResponse)
|
|
.with.property('prettyMessage', 'digest not found for latest tag')
|
|
})
|
|
|
|
// https://github.com/badges/shields/issues/5535
|
|
it('throws InvalidResponse error with custom tag and no amd64 architecture digests', function () {
|
|
expect(() => {
|
|
DockerVersion.prototype.transform({
|
|
tag: '3.10',
|
|
data: [
|
|
{
|
|
name: '3.10',
|
|
images: [
|
|
{
|
|
architecture: 'arm64',
|
|
digest:
|
|
'sha256:597bd5c319cc09d6bb295b4ef23cac50ec7c373fff5fe923cfd246ec09967b31',
|
|
},
|
|
{
|
|
architecture: 'arm',
|
|
digest:
|
|
'sha256:c5ea49127cd44d0f50eafda229a056bb83b6e691883c56fd863d42675fae3909',
|
|
},
|
|
],
|
|
},
|
|
],
|
|
})
|
|
})
|
|
.to.throw(InvalidResponse)
|
|
.with.property('prettyMessage', 'digest not found for given tag')
|
|
})
|
|
|
|
it('throws InvalidResponse error with custom tag and no matching architecture digests', function () {
|
|
expect(() => {
|
|
DockerVersion.prototype.transform({
|
|
tag: '3.10',
|
|
arch: '386',
|
|
data: [
|
|
{
|
|
name: '3.9',
|
|
images: [
|
|
{
|
|
digest:
|
|
'sha256:ab3fe83c0696e3f565c9b4a734ec309ae9bd0d74c192de4590fd6dc2ef717815',
|
|
architecture: 'amd64',
|
|
},
|
|
{
|
|
digest:
|
|
'sha256:c7b3e8392e08c971e98627e2bddd10c7fa9d2eae797a16bc94de9709bb9300d0',
|
|
architecture: '386',
|
|
},
|
|
{
|
|
digest:
|
|
'sha256:5292cebaf695db860087c5582d340a406613891b2819092747b0388da47936c8',
|
|
architecture: 'arm',
|
|
},
|
|
],
|
|
},
|
|
{
|
|
name: '3.10',
|
|
images: [
|
|
{
|
|
architecture: 'arm',
|
|
digest:
|
|
'sha256:c5ea49127cd44d0f50eafda229a056bb83b6e691883c56fd863d42675fae3909',
|
|
},
|
|
{
|
|
architecture: 'arm64',
|
|
digest:
|
|
'sha256:597bd5c319cc09d6bb295b4ef23cac50ec7c373fff5fe923cfd246ec09967b31',
|
|
},
|
|
],
|
|
},
|
|
],
|
|
})
|
|
})
|
|
.to.throw(InvalidResponse)
|
|
.with.property('prettyMessage', 'digest not found for given tag')
|
|
})
|
|
})
|