import { expect } from 'chai'; import { stub } from 'sinon'; import DockerUtils from '../src/lib/docker-utils'; const dockerUtils = new DockerUtils({}); describe('Deltas', () => { it('should correctly detect a V2 delta', async () => { const imageStub = stub(dockerUtils, 'getImage').returns({ inspect: () => { return Promise.resolve({ Id: 'sha256:34ec91fe6e08cb0f867bbc069c5f499d39297eb8e874bb8ce9707537d983bcbc', RepoTags: [], RepoDigests: [], Parent: '', Comment: '', Created: '2019-12-05T10:20:51.516Z', Container: '', ContainerConfig: { Hostname: '', Domainname: '', User: '', AttachStdin: false, AttachStdout: false, AttachStderr: false, Tty: false, OpenStdin: false, StdinOnce: false, Env: null, Cmd: null, Image: '', Volumes: null, WorkingDir: '', Entrypoint: null, OnBuild: null, Labels: null, }, DockerVersion: '', Author: '', Config: { Hostname: '7675a23f4fdc', Domainname: '', User: '', AttachStdin: false, AttachStdout: false, AttachStderr: false, Tty: false, OpenStdin: false, StdinOnce: false, Env: [ 'PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin', 'TINI_VERSION=0.14.0', 'LC_ALL=C.UTF-8', 'DEBIAN_FRONTEND=noninteractive', 'UDEV=on', 'container=docker', 'test=123', ], Cmd: [ '/bin/sh', '-c', "while true; do echo 'hello'; sleep 10; done;", ], ArgsEscaped: true, Image: 'sha256:b24946093df7157727b20934d11a7287359d8de42d8a80030f51f46a73d645ec', Volumes: { '/sys/fs/cgroup': {}, }, WorkingDir: '', Entrypoint: ['/usr/bin/entry.sh'], OnBuild: [], Labels: { 'io.resin.architecture': 'amd64', 'io.resin.device-type': 'intel-nuc', }, StopSignal: '37', }, Architecture: '', Os: 'linux', Size: 17, VirtualSize: 17, GraphDriver: { Data: null, Name: 'aufs', }, RootFS: { Type: 'layers', Layers: [ 'sha256:c6e6cd4f95ef00e62f5c9df5798393470c991ca0148cb1e434b28101ed4219d3', ], }, Metadata: { LastTagTime: '0001-01-01T00:00:00Z', }, }); }, } as any); expect(await DockerUtils.isV2DeltaImage(dockerUtils, 'test')).to.be.true; expect(imageStub.callCount).to.equal(1); imageStub.restore(); }); });