UNPKG

firmament-docker

Version:

Typescript classes for performing Docker operations

157 lines 6.07 kB
"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; var __param = (this && this.__param) || function (paramIndex, decorator) { return function (target, key) { decorator(target, key, paramIndex); } }; Object.defineProperty(exports, "__esModule", { value: true }); require("reflect-metadata"); const inversify_1 = require("inversify"); const image_object_impl_1 = require("./image-object-impl"); const container_object_impl_1 = require("./container-object-impl"); const firmament_yargs_1 = require("firmament-yargs"); let DockerOdeMockImpl = class DockerOdeMockImpl extends firmament_yargs_1.ForceErrorImpl { constructor(safeJson) { super(); this.safeJson = safeJson; } listImages(options, cb) { if (this.checkForceError('listImages', cb)) { return; } let images = options.all ? this.testImageList : this.testImageList.filter(image => { return image.RepoTags[0] !== '<none>:<none>'; }); cb(null, images); } listContainers(options, cb) { if (this.checkForceError('listContainers', cb)) { return; } let containers = options.all ? this.testContainerList : this.testContainerList.filter(container => { return container.Status.substring(0, 2) === 'Up'; }); cb(null, containers); } getContainer(id, options = {}) { if (this.checkForceError('getContainer')) { return; } var containerArray = this.testContainerList.filter(container => { return id === container.Id; }); return containerArray.length ? new container_object_impl_1.DockerContainerImpl(null, containerArray[0].Id) : null; } getImage(id, options = {}) { if (this.checkForceError('getImage')) { return; } var imageArray = this.testImageList.filter(image => { return id === image.Id; }); return imageArray.length ? new image_object_impl_1.DockerImageImpl(null, imageArray[0].Id) : null; } buildImage(tarStream, options, cb) { if (this.checkForceError('buildImage', cb)) { return; } let streamMock = new (require('events').EventEmitter)(); let eventCount = 10; let interval = setInterval(() => { if (!(eventCount % 4)) { streamMock.emit('error', new Error('Test Error')); } if (!(eventCount % 2)) { streamMock.emit('data', JSON.stringify({ id: 'baadf00d', status: 'Downloading', progressDetail: { current: eventCount, total: 10 } })); } if (--eventCount < 0) { streamMock.emit('end', new Error('not found in repository')); clearInterval(interval); } }, 200); cb(null, streamMock); } createContainer(containerConfig, cb) { if (this.checkForceError('createContainer', cb)) { return; } let testContainer = this.testContainerList.filter(container => { return container.Image = 'mongo:2.6'; })[0]; cb(null, new container_object_impl_1.DockerContainerImpl(null, testContainer.Id)); } pull(imageName, cb) { if (this.checkForceError('pull', cb)) { return; } let streamMock = new (require('events').EventEmitter)(); let eventCount = 10; let interval = setInterval(() => { if (!(eventCount % 4)) { streamMock.emit('error', new Error('Test Error')); } if (!(eventCount % 2)) { streamMock.emit('data', JSON.stringify({ id: 'baadf00d', status: 'Downloading', progressDetail: { current: eventCount, total: 10 } })); } if (!(eventCount % 3)) { streamMock.emit('data', JSON.stringify({ error: 'Big Error! Sorry.' })); } if (--eventCount < 0) { streamMock.emit('end', JSON.stringify({ id: 'baadf00d', status: 'Finished', progressDetail: { current: 10, total: 10 } })); clearInterval(interval); } }, 200); cb(null, streamMock); } get testImageList() { return this.safeJson.readFileSync(__dirname + '/../../test-data/docker-image-list.json', undefined); } get testContainerList() { return this.safeJson.readFileSync(__dirname + '/../../test-data/docker-container-list.json', undefined); } }; DockerOdeMockImpl = __decorate([ inversify_1.injectable(), __param(0, inversify_1.inject('SafeJson')), __metadata("design:paramtypes", [Object]) ], DockerOdeMockImpl); exports.DockerOdeMockImpl = DockerOdeMockImpl; //# sourceMappingURL=docker-ode-mock-impl.js.map