firmament-docker
Version:
Typescript classes for performing Docker operations
204 lines (203 loc) • 9.05 kB
text/typescript
import 'reflect-metadata';
import kernel from '../inversify.config';
import {expect} from 'chai';
import * as mocha from 'mocha';
import {DockerOde, DockerContainer, ImageOrContainerRemoveResults} from '../interfaces/dockerode';
import {DockerOdeMockImpl} from './docker-ode-mock-impl';
import {DockerContainerManagement} from '../interfaces/docker-container-management';
import {ForceError} from 'firmament-yargs';
import {DockerDescriptors} from '../interfaces/docker-descriptors';
//import {DockerOdeImpl} from '../implementations/docker-ode-impl';
describe('DockerContainerManagement', function() {
let dockerContainerManagement: DockerContainerManagement;
beforeEach(() => {
kernel.unbind('DockerOde');
//kernel.bind<DockerOde>('DockerOde').to(DockerOdeImpl);
kernel.bind<DockerOde>('DockerOde').to(DockerOdeMockImpl);
dockerContainerManagement = kernel.get<DockerContainerManagement>('DockerContainerManagement');
});
//
//****************************** DockerContainerManagement.listContainers
//
describe('DockerContainerManagement.listContainers (force error)', function() {
it('should return non-null Error instance in callback', function(done) {
expect(dockerContainerManagement).to.not.equal(null);
(<ForceError>dockerContainerManagement).forceError = true;
dockerContainerManagement.listContainers(
true,
(err: Error, containers: DockerContainer[]) => {
expect(err).to.not.equal(null);
expect(containers).to.equal(null);
done();
});
});
});
describe('DockerContainerManagement.listContainers (all)', function() {
it('should return array of all (3) Containers in callback', function(done) {
expect(dockerContainerManagement).to.not.equal(null);
dockerContainerManagement.listContainers(
true,
(err: Error, containers: DockerContainer[]) => {
expect(err).to.equal(null);
expect(containers).to.have.lengthOf(3);
done();
});
});
});
describe('DockerContainerManagement.listContainers (not-all)', function() {
it('should return array of all (1) Containers in callback', function(done) {
expect(dockerContainerManagement).to.not.equal(null);
dockerContainerManagement.listContainers(
false,
(err: Error, containers: DockerContainer[]) => {
expect(err).to.equal(null);
expect(containers).to.have.lengthOf(1);
done();
});
});
});
describe('DockerContainerManagement.getContainer (force error)', function() {
it('should return non-null Error instance in callback', function(done) {
expect(dockerContainerManagement).to.not.equal(null);
(<ForceError>dockerContainerManagement).forceError = true;
dockerContainerManagement.getContainer(
'2',
(err: Error, container: DockerContainer) => {
expect(err).to.not.equal(null);
expect(container).to.equal(null);
done();
});
});
});
describe('DockerContainerManagement.getContainer (by firmamentId)', function() {
it(`should return DockerContainer with name: 'jstnldrs/caffedata:1.0'`, function(done) {
expect(dockerContainerManagement).to.not.equal(null);
dockerContainerManagement.getContainer(
'2',
(err: Error, container: DockerContainer) => {
expect(err).to.equal(null);
expect(container.constructor.name).to.equal('DockerContainerImpl');
expect(container.Name).to.equal('/mysql');
done();
});
});
});
describe('DockerContainerManagement.getContainers (force error)', function() {
it('should return non-null Error instance in callback', function(done) {
expect(dockerContainerManagement).to.not.equal(null);
(<ForceError>dockerContainerManagement).forceError = true;
dockerContainerManagement.getContainers(
['2', '3'],
(err: Error, containers: DockerContainer[]) => {
expect(err).to.not.equal(null);
expect(containers).to.equal(null);
done();
});
});
});
describe('DockerContainerManagement.getContainers (by firmamentId)', function() {
let containerNames = ['/mysql', '/ubuntu'];
it(`should return array of DockerContainers (length 2)`, function(done) {
expect(dockerContainerManagement).to.not.equal(null);
dockerContainerManagement.getContainers(
['2', '3'],
(err: Error, containers: DockerContainer[]) => {
expect(err).to.equal(null);
expect(containers).to.have.lengthOf(2);
for(let i = 0; i < containers.length; ++i) {
expect(containers[i].constructor.name).to.equal('DockerContainerImpl');
expect(containers[i].Name).to.equal(containerNames[i]);
}
done();
});
});
});
describe('DockerContainerManagement.createContainer (force error)', function() {
it('should return non-null Error instance in callback', function(done) {
expect(dockerContainerManagement).to.not.equal(null);
(<ForceError>dockerContainerManagement).forceError = true;
dockerContainerManagement.createContainer(
DockerDescriptors.dockerContainerConfigTemplate[0],
(err: Error, container: DockerContainer) => {
expect(err).to.not.equal(null);
expect(container).to.equal(null);
done();
});
});
});
describe('DockerContainerManagement.createContainer', function() {
it('should return DockerContainer description in callback', function(done) {
expect(dockerContainerManagement).to.not.equal(null);
dockerContainerManagement.createContainer(
DockerDescriptors.dockerContainerConfigTemplate[0],
(err: Error, container: DockerContainer) => {
expect(err).to.equal(null);
expect(container).to.not.equal(null);
done();
});
});
});
describe('DockerContainerManagement.removeContainers (force error)', function() {
it('should return non-null Error instance in callback', function(done) {
expect(dockerContainerManagement).to.not.equal(null);
(<ForceError>dockerContainerManagement).forceError = true;
//noinspection JSUnusedLocalSymbols
dockerContainerManagement.removeContainers(
['2', '3', '113'],
(err: Error, containerRemoveResult: ImageOrContainerRemoveResults[]) => {
expect(err).to.not.equal(null);
done();
});
});
});
describe('DockerContainerManagement.removeContainers (by firmamentId)', function() {
it('should return non-null Error instance in callback', function(done) {
expect(dockerContainerManagement).to.not.equal(null);
dockerContainerManagement.removeContainers(
['2', '3', '113'],
(err: Error, containerRemoveResults: ImageOrContainerRemoveResults[]) => {
expect(err).to.equal(null);
expect(containerRemoveResults).to.be.instanceOf(Array);
expect(containerRemoveResults).to.have.lengthOf(3);
for(let i = 0; i < containerRemoveResults.length - 1; ++i) {
expect(containerRemoveResults[i].msg.substring(0, 8)).to.equal('Removing');
}
expect(containerRemoveResults[containerRemoveResults.length - 1].msg.substring(0, 6)).to.equal('Unable');
done();
});
});
});
describe('DockerContainerManagement.removeContainers (by Docker Id)', function() {
it('should return non-null Error instance in callback', function(done) {
expect(dockerContainerManagement).to.not.equal(null);
dockerContainerManagement.removeContainers(
['228', '75b', 'xxx'],
(err: Error, containerRemoveResults: ImageOrContainerRemoveResults[]) => {
expect(err).to.equal(null);
expect(containerRemoveResults).to.be.instanceOf(Array);
expect(containerRemoveResults).to.have.lengthOf(3);
for(let i = 0; i < containerRemoveResults.length - 1; ++i) {
expect(containerRemoveResults[i].msg.substring(0, 8)).to.equal('Removing');
}
expect(containerRemoveResults[containerRemoveResults.length - 1].msg.substring(0, 6)).to.equal('Unable');
done();
});
});
});
describe('DockerContainerManagement.removeContainers (all)', function() {
it('should return non-null Error instance in callback', function(done) {
expect(dockerContainerManagement).to.not.equal(null);
dockerContainerManagement.removeContainers(
['???', 'all', 'xxx'],
(err: Error, containerRemoveResults: ImageOrContainerRemoveResults[]) => {
expect(err).to.equal(null);
expect(containerRemoveResults).to.be.instanceOf(Array);
expect(containerRemoveResults).to.have.lengthOf(3);
for(let i = 0; i < containerRemoveResults.length; ++i) {
expect(containerRemoveResults[i].msg.substring(0, 8)).to.equal('Removing');
}
done();
});
});
});
});