UNPKG

firmament-docker

Version:

Typescript classes for performing Docker operations

210 lines 10.8 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); require("reflect-metadata"); const inversify_config_1 = require("../inversify.config"); const chai_1 = require("chai"); const docker_ode_mock_impl_1 = require("./docker-ode-mock-impl"); const path = require('path'); describe('DockerImageManagement', function () { let dockerImageManagement; beforeEach(() => { inversify_config_1.default.unbind('DockerOde'); inversify_config_1.default.bind('DockerOde').to(docker_ode_mock_impl_1.DockerOdeMockImpl); dockerImageManagement = inversify_config_1.default.get('DockerImageManagement'); }); describe('DockerImageManagement.listImages (force error)', function () { it('should return non-null Error instance in callback', function (done) { dockerImageManagement.forceError = true; chai_1.expect(dockerImageManagement).to.not.equal(null); dockerImageManagement.listImages(true, (err, images) => { chai_1.expect(err).to.not.equal(null); chai_1.expect(images).to.equal(null); done(); }); }); }); describe('DockerImageManagement.listImages (all)', function () { it('should return array of all (9) Images in callback', function (done) { chai_1.expect(dockerImageManagement).to.not.equal(null); dockerImageManagement.listImages(true, (err, images) => { chai_1.expect(err).to.equal(null); chai_1.expect(images).to.have.lengthOf(9); done(); }); }); }); describe('DockerImageManagement.listImages (not-all)', function () { it('should return array of all (5) Images in callback', function (done) { chai_1.expect(dockerImageManagement).to.not.equal(null); dockerImageManagement.listImages(false, (err, images) => { chai_1.expect(err).to.equal(null); chai_1.expect(images).to.have.lengthOf(5); done(); }); }); }); describe('DockerImageManagement.getImage (force error)', function () { it('should return non-null Error instance in callback', function (done) { dockerImageManagement.forceError = true; chai_1.expect(dockerImageManagement).to.not.equal(null); dockerImageManagement.getImage('3', (err, image) => { chai_1.expect(err).to.not.equal(null); chai_1.expect(image).to.equal(null); done(); }); }); }); describe('DockerImageManagement.getImage (by firmamentId)', function () { it(`should return ImageObject with name: 'jstnldrs/caffedata:1.0'`, function (done) { chai_1.expect(dockerImageManagement).to.not.equal(null); dockerImageManagement.getImage('7', (err, image) => { chai_1.expect(err).to.equal(null); chai_1.expect(image.constructor.name).to.equal('DockerImageImpl'); chai_1.expect(image.Name).to.equal('jstnldrs/caffedata:1.0'); done(); }); }); }); describe('DockerImageManagement.getImages (force error)', function () { it('should return non-null Error instance in callback', function (done) { dockerImageManagement.forceError = true; chai_1.expect(dockerImageManagement).to.not.equal(null); dockerImageManagement.getImages(['7', '8'], (err, images) => { chai_1.expect(err).to.not.equal(null); chai_1.expect(images).to.equal(null); done(); }); }); }); describe('DockerImageManagement.getImages (by firmamentId)', function () { let imageNames = ['jstnldrs/caffedata:1.0', 'mongo:2.6']; it(`should return array of ImageObjects (length 2)`, function (done) { chai_1.expect(dockerImageManagement).to.not.equal(null); dockerImageManagement.getImages(['7', '8'], (err, images) => { chai_1.expect(err).to.equal(null); chai_1.expect(images).to.have.lengthOf(2); for (let i = 0; i < images.length; ++i) { chai_1.expect(images[i].constructor.name).to.equal('DockerImageImpl'); chai_1.expect(images[i].Name).to.equal(imageNames[i]); } done(); }); }); }); describe('DockerImageManagement.pullImage (force error)', function () { it('should return non-null Error instance in callback', function (done) { dockerImageManagement.forceError = true; chai_1.expect(dockerImageManagement).to.not.equal(null); dockerImageManagement.pullImage('mysql:5.6', (taskId, status, current, total) => { }, (err) => { chai_1.expect(err).to.not.equal(null); chai_1.expect(err.message).to.equal('force error: pull'); done(); }); }); }); describe('DockerImageManagement.pullImage (recoverable errors)', function () { it(`should pull an image from hub.docker.com`, function (done) { let progressCallbackCalledWithErrorCount = 0; let progressCallbackCalledWithDownloadingCount = 0; chai_1.expect(dockerImageManagement).to.not.equal(null); dockerImageManagement.pullImage('mysql:5.6', (taskId, status, current, total) => { if (status === 'Downloading') { ++progressCallbackCalledWithDownloadingCount; } if (taskId === '**error**') { ++progressCallbackCalledWithErrorCount; } }, (err) => { chai_1.expect(err).to.equal(null); chai_1.expect(progressCallbackCalledWithErrorCount).to.equal(4); chai_1.expect(progressCallbackCalledWithDownloadingCount).to.equal(6); done(); }); }); }); describe('DockerImageManagement.buildDockerFile (force error)', function () { it('should return non-null Error instance in callback', function (done) { dockerImageManagement.forceError = true; chai_1.expect(dockerImageManagement).to.not.equal(null); let pathToDockerFile = path.resolve(__dirname, '../../test-data'); dockerImageManagement.buildDockerFile(pathToDockerFile, 'mysql:5.5', (taskId, status, current, total) => { }, (err) => { chai_1.expect(err).to.not.equal(null); chai_1.expect(err.message).to.equal('force error: buildImage'); done(); }); }); }); describe('DockerImageManagement.buildDockerFile', function () { it('report that image was built from Dockerfile', function (done) { let pathToDockerFile = path.resolve(__dirname, '../../test-data'); let progressCallbackCalledWithDownloadingCount = 0; chai_1.expect(dockerImageManagement).to.not.equal(null); dockerImageManagement.buildDockerFile(pathToDockerFile, 'mysql:5.5', (taskId, status, current, total) => { if (status === 'Downloading') { ++progressCallbackCalledWithDownloadingCount; } }, (err) => { chai_1.expect(err).to.equal(null); chai_1.expect(progressCallbackCalledWithDownloadingCount).to.equal(6); done(); }); }); }); describe('DockerImageManagement.removeImages (force error)', function () { it('should return non-null Error instance in callback', function (done) { dockerImageManagement.forceError = true; chai_1.expect(dockerImageManagement).to.not.equal(null); dockerImageManagement.removeImages(['2', '3', '113'], (err, imageRemoveResult) => { chai_1.expect(err).to.not.equal(null); done(); }); }); }); describe('DockerImageManagement.removeImages (by firmamentId)', function () { it('should return non-null Error instance in callback', function (done) { chai_1.expect(dockerImageManagement).to.not.equal(null); dockerImageManagement.removeImages(['2', '3', '5', '113'], (err, imageRemoveResults) => { chai_1.expect(err).to.equal(null); chai_1.expect(imageRemoveResults).to.be.instanceOf(Array); chai_1.expect(imageRemoveResults).to.have.lengthOf(4); for (let i = 0; i < imageRemoveResults.length - 1; ++i) { chai_1.expect(imageRemoveResults[i].msg.substring(0, 8)).to.equal('Removing'); } chai_1.expect(imageRemoveResults[imageRemoveResults.length - 1].msg.substring(0, 6)).to.equal('Unable'); done(); }); }); }); describe('DockerImageManagement.removeImages (by Docker Id)', function () { it('should return non-null Error instance in callback', function (done) { chai_1.expect(dockerImageManagement).to.not.equal(null); dockerImageManagement.removeImages(['f55', '817', '248', 'xxx'], (err, imageRemoveResults) => { chai_1.expect(err).to.equal(null); chai_1.expect(imageRemoveResults).to.be.instanceOf(Array); chai_1.expect(imageRemoveResults).to.have.lengthOf(4); for (let i = 0; i < imageRemoveResults.length - 1; ++i) { chai_1.expect(imageRemoveResults[i].msg.substring(0, 8)).to.equal('Removing'); } chai_1.expect(imageRemoveResults[imageRemoveResults.length - 1].msg.substring(0, 6)).to.equal('Unable'); done(); }); }); }); describe('DockerImageManagement.removeImages (all)', function () { it('should return non-null Error instance in callback', function (done) { chai_1.expect(dockerImageManagement).to.not.equal(null); dockerImageManagement.removeImages(['???', 'all', 'xxx'], (err, imageRemoveResults) => { chai_1.expect(err).to.equal(null); chai_1.expect(imageRemoveResults).to.be.instanceOf(Array); chai_1.expect(imageRemoveResults).to.have.lengthOf(9); for (let i = 0; i < imageRemoveResults.length; ++i) { chai_1.expect(imageRemoveResults[i].msg.substring(0, 8)).to.equal('Removing'); } done(); }); }); }); }); //# sourceMappingURL=docker-image-management.test.js.map