Skip to content

Commit

Permalink
Merge 8a70782 into 512282e
Browse files Browse the repository at this point in the history
  • Loading branch information
dividedby0 committed Jul 12, 2018
2 parents 512282e + 8a70782 commit 1bddb61
Show file tree
Hide file tree
Showing 5 changed files with 51 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,20 +4,29 @@ import * as path from 'path';
import * as fs from 'fs';
import * as chai from 'chai';
import * as request from 'request-promise';

import { getAvailablePort } from '@testring/test-utils';

import { RecorderHttpServer } from '../src/http-server';

const index = fs.readFileSync(
path.resolve(__dirname, './fixtures/templates/index.hbs'),
{ encoding: 'utf8' }
);

let httpPort = 8080;

describe('Recorder HTTP server', () => {
beforeEach(async () => {
httpPort = await getAvailablePort(httpPort);
});

it('should serve over HTTP until it stopped', (callback) => {
const server = new RecorderHttpServer(
path.resolve(__dirname, './fixtures/static'),
path.resolve(__dirname, './fixtures/templates'),
'localhost',
8080
httpPort
);

server.run().then(() => {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,27 +1,34 @@
import * as request from 'request-promise';
import * as WebSocket from 'ws';
import * as chai from 'chai';
import { getAvailablePort } from '@testring/test-utils';

import { TransportMock } from '@testring/test-utils';
import { RecorderServerEvents, RecorderServerMessageTypes } from '@testring/types';

import { RecorderServer } from '../src/recorder-server';
import { DEFAULT_HOST, DEFAULT_HTTP_PORT, DEFAULT_WS_PORT } from '../src/constants';

const httpUrl = `http://${DEFAULT_HOST}:${DEFAULT_HTTP_PORT}`;
const wsUrl = `ws://${DEFAULT_HOST}:${DEFAULT_WS_PORT}`;

describe('Recorder server', () => {
let srv: RecorderServer;
let transport: TransportMock;
let httpPort = DEFAULT_HTTP_PORT;
let httpUrl = `http://${DEFAULT_HOST}:${DEFAULT_HTTP_PORT}`;
let wsPort = DEFAULT_WS_PORT;
let wsUrl = `ws://${DEFAULT_HOST}:${DEFAULT_WS_PORT}`;

beforeEach(async () => {
transport = new TransportMock();

httpPort = await getAvailablePort(DEFAULT_HTTP_PORT);
httpUrl = `http://${DEFAULT_HOST}:${httpPort}`;
wsPort = await getAvailablePort(DEFAULT_WS_PORT, [httpPort]);
wsUrl = `ws://${DEFAULT_HOST}:${wsPort}`;

srv = new RecorderServer(
DEFAULT_HOST,
DEFAULT_HTTP_PORT,
DEFAULT_WS_PORT,
httpPort,
wsPort,
transport,
);

Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,18 @@
import * as WebSocket from 'ws';
import * as chai from 'chai';
import { getAvailablePort } from '@testring/test-utils';

import { RecorderWebSocketServer, RecorderWsEvents } from '../src/ws-server';

describe('Recorder WebsSocket server', () => {
let port = 8080;

beforeEach(async () => {
port = await getAvailablePort(port);
});

it('should start ws server and emit event of connections', (callback) => {
const server = new RecorderWebSocketServer('localhost', 8080);
const server = new RecorderWebSocketServer('localhost', port);

server.run().then(() => {
server.on(RecorderWsEvents.CONNECTION, (ws) => {
Expand All @@ -16,7 +23,7 @@ describe('Recorder WebsSocket server', () => {
callback();
});

new WebSocket('ws://localhost:8080');
new WebSocket(`ws://localhost:${port}`);
});
});
});
19 changes: 19 additions & 0 deletions packages/testring-test-utils/src/get-available-port.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import { createServer } from 'net';

export const getAvailablePort = (port: number, skip: Array<number> = []): Promise<number> => {
return new Promise((async (resolve) => {
if (skip.includes(port)) {
resolve(await getAvailablePort(port + 1, skip));
}

const testConnection = createServer();

testConnection.once('error', async () => {
resolve(await getAvailablePort(port + 1, skip));
}).once('listening', () => {
testConnection.once('close', () => {
resolve(port);
}).close();
}).listen(port);
}));
};
1 change: 1 addition & 0 deletions packages/testring-test-utils/src/index.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
export { TransportMock } from './transport.mock';
export { TestWorkerMock } from './test-worker.mock';
export { BrowserProxyControllerMock } from './browser-proxy-controller.mock';
export { getAvailablePort } from './get-available-port';

0 comments on commit 1bddb61

Please sign in to comment.