import {DockerExec} from './docker' import * as actions from '@actions/exec' const dockerPath = 'dockerPath' const image = 'image' const args = ['arg1', 'arg2', 'arg3'] describe('Docker class', () => { const docker = new DockerExec(dockerPath) describe('with a success exec return', () => { const execReturn = {exitCode: 0, stdout: 'Output', stderr: ''} beforeEach(() => { jest.spyOn(actions, 'getExecOutput').mockImplementation(async () => { return execReturn }) }) test('pulls an image', async () => { await docker.pull(image, args) expect(actions.getExecOutput).toBeCalledWith( dockerPath, ['pull', image, ...args], {silent: false} ) }) test('pulls an image silently', async () => { await docker.pull(image, args, true) expect(actions.getExecOutput).toBeCalledWith( dockerPath, ['pull', image, ...args], {silent: true} ) }) test('inspects a docker image', async () => { const result = await docker.inspect(image, args) expect(result).toBe(execReturn.stdout) expect(actions.getExecOutput).toBeCalledWith( dockerPath, ['inspect', image, ...args], {silent: false} ) }) test('inspects a docker image silently', async () => { const result = await docker.inspect(image, args, true) expect(result).toBe(execReturn.stdout) expect(actions.getExecOutput).toBeCalledWith( dockerPath, ['inspect', image, ...args], {silent: true} ) }) }) describe('with an unsuccessful exec return code', () => { const execReturn = {exitCode: 3, stdout: '', stderr: ''} beforeEach(() => { jest.spyOn(actions, 'getExecOutput').mockImplementation(async () => { return execReturn }) }) test('pulls an image', async () => { await expect(docker.pull(image, args)).rejects.toThrow() }) test('inspects a docker image', async () => { const result = await expect( docker.inspect(image, args) ).rejects.toThrow() }) }) describe('with an unsuccessful exec return code', () => { const execReturn = {exitCode: 0, stdout: '', stderr: 'Output'} beforeEach(() => { jest.spyOn(actions, 'getExecOutput').mockImplementation(async () => { return execReturn }) }) test('pulls an image', async () => { await expect(docker.pull(image, args)).rejects.toThrow() }) test('inspects a docker image', async () => { const result = await expect( docker.inspect(image, args) ).rejects.toThrow() }) }) })