verdaccio/test/functional/lib/environment.js

95 lines
2.6 KiB
JavaScript
Raw Normal View History

// @flow
import chalk from 'chalk';
import path from 'path';
import NodeEnvironment from 'jest-environment-node';
import {VerdaccioConfig} from "../../lib/verdaccio-server";
import VerdaccioProcess from "../../lib/server_process";
import Server from "../../lib/server";
import ExpressServer from "./simple_server";
import type {IServerBridge} from '../../types';
const EXPRESS_PORT = 55550;
class FunctionalEnvironment extends NodeEnvironment {
config: any;
constructor(config: any) {
super(config)
}
async startWeb() {
const express: any = new ExpressServer();
return await express.start(EXPRESS_PORT);
}
async setup() {
const SILENCE_LOG = !process.env.VERDACCIO_DEBUG;
// $FlowFixMe
const DEBUG_INJECT: boolean = process.env.VERDACCIO_DEBUG ? process.env.VERDACCIO_DEBUG : false;
const forkList = [];
const serverList = [];
const pathStore = path.join(__dirname, '../store');
const listServers = [
{
port: 55551,
config: '/config-1.yaml',
storage: '/test-storage'
},
{
port: 55552,
config: '/config-2.yaml',
storage: '/test-storage2'
},
{
port: 55553,
config: '/config-3.yaml',
storage: '/test-storage3'
}
];
console.log(chalk.green('Setup Verdaccio Servers'));
const app = await this.startWeb();
this.global.__WEB_SERVER__ = app;
for (let config of listServers) {
const verdaccioConfig = new VerdaccioConfig(
path.join(pathStore, config.storage),
path.join(pathStore, config.config),
`http://localhost:${config.port}/`, config.port);
console.log(chalk.magentaBright(`Running registry ${config.config} on port ${config.port}`));
const server: IServerBridge = new Server(verdaccioConfig.domainPath);
serverList.push(server);
const process = new VerdaccioProcess(verdaccioConfig, server, SILENCE_LOG, DEBUG_INJECT);
const fork = await process.init();
console.log(chalk.blue(`Fork PID ${fork[1]}`));
forkList.push(fork);
}
this.global.__SERVERS_PROCESS__ = forkList;
this.global.__SERVERS__ = serverList;
}
async teardown() {
await super.teardown();
console.log(chalk.yellow('Teardown Test Environment.'));
// this.global.__VERDACCIO_E2E__.stop();
// this.global.__VERDACCIO__PROTECTED_E2E__.stop();
// close verdaccios
for (let server of this.global.__SERVERS_PROCESS__) {
server[0].stop();
}
// close web server
this.global.__WEB_SERVER__.server.close();
}
runScript(script: string) {
return super.runScript(script);
}
}
module.exports = FunctionalEnvironment;