@microtica/mocks
Version:
Mock services for automated tests
46 lines • 1.74 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
// tslint:disable:no-console
const connection_string_1 = require("connection-string");
const runner_1 = require("../runner");
const DEFAULT_CONNECTION_STRING = "mysql://root:mysqlpass123@localhost:3306";
const CONTAINER_NAME = "microtica_mysql_test";
const IMAGE_NAME = "mysql:5.6.37";
class MysqlDocker {
constructor(connectionString = DEFAULT_CONNECTION_STRING, keepAlive = true) {
this.connectionString = connectionString;
this.docker = new runner_1.DockerRunner(IMAGE_NAME, CONTAINER_NAME);
this.connection = new connection_string_1.ConnectionString(connectionString);
}
getConnectionString() {
return this.connectionString;
}
stop() {
return this.docker.remove();
}
async start() {
try {
const isRunning = await this.docker.isRunning();
if (isRunning) {
return { database: this.connection };
}
console.log(this.connection);
const dbName = this.connection.segments ? this.connection.segments[0] : "initial_db";
await this.docker.run({
env: [
`MYSQL_ROOT_PASSWORD=${this.connection.password}`,
`MYSQL_DATABASE=${dbName}`,
`MYSQL_ROOT_PASSWORD=${this.connection.password}`
],
portsToOpen: [this.connection.port]
});
console.log("[INFO] MYSQL server initialized.");
return { database: this.connection };
}
catch (e) {
console.error(e);
}
}
}
exports.MysqlDocker = MysqlDocker;
//# sourceMappingURL=index.js.map