All files / src/__test__ index.test.ts

57.5% Statements 23/40
100% Branches 0/0
42.11% Functions 8/19
57.5% Lines 23/40
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66  1x 1x 1x 1x 1x 1x       1x 1x                   1x 1x 1x       1x 1x 1x 1x 1x 1x                   1x 1x 1x 1x 1x 1x                                    
import {createServer} from 'net'
import {getPort} from '../'
import 'jest'
 
describe('getPort', () => {
	it('port should be a number', () => {
		getPort().then((port) => {
			expect(typeof port).toBe('number');
		});
	});
 
	it('port can be bound when promise resolves', () => {
		getPort().then(port => {
			const server = createServer();
			return new Promise((resolve) => {
				server.listen(port, resolve)
			}).then(() => {
				expect(server.address().port).toBe(port);
				server.close();
			})
		});
	});
 
	it('preferred port', () => {
		const desiredPort = 8080;
		getPort(8080).then((port) => {
			expect(desiredPort).toBe(port);
		});
	});
 
	it('preferred port unavailable', () => {
		const desiredPort = 8282;
		const server = createServer();
		const host = 'localhost';
		new Promise((resolve) => {
			server.listen({port: desiredPort, host}, resolve);
		}).then(() => {
			return getPort(desiredPort)
		}).then((port) => {
			expect(typeof port).toBe('number');
			expect(port).toBeGreaterThan(0);
			expect(port != desiredPort).toBe(true);
			server.close()
		});
	});
 
	it('localhost:8282 not equal 0.0.0.0:8282', () => {
		const desiredPort = 8282;
		const server = createServer();
		const host = 'localhost';
		new Promise((resolve) => {
			server.listen({host, port: desiredPort}, resolve);
		}).then(() => {
			return getPort(desiredPort, 'localhost');
		}).then((port) => {
			expect(port != desiredPort).toBe(true);
		}).then(() => {
			return getPort(desiredPort, '0.0.0.0');
		}).then((port) => {
			expect(port).toBe(desiredPort);
			server.close();
		})
	})
 
});