Add TestServer
This commit is contained in:
parent
ffc20750e9
commit
9c40914bba
1 changed files with 52 additions and 0 deletions
52
e2e/lib/TestServer.ts
Normal file
52
e2e/lib/TestServer.ts
Normal file
|
@ -0,0 +1,52 @@
|
||||||
|
import * as http from 'http';
|
||||||
|
import * as net from 'net'
|
||||||
|
import express from 'express';
|
||||||
|
|
||||||
|
type HandlerFunc = (req: express.Request, res: express.Response) => void;
|
||||||
|
|
||||||
|
export default class TestServer {
|
||||||
|
private http?: http.Server;
|
||||||
|
|
||||||
|
private app: express.Application;
|
||||||
|
|
||||||
|
constructor(
|
||||||
|
private port = 0,
|
||||||
|
private address = '127.0.0.1',
|
||||||
|
){
|
||||||
|
this.app = express();
|
||||||
|
}
|
||||||
|
|
||||||
|
handle(path: string, f: HandlerFunc): TestServer {
|
||||||
|
this.app.get(path, f);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
receiveContent(path: string, content: string): TestServer {
|
||||||
|
this.app.get(path, (_req: express.Request, res: express.Response) => {
|
||||||
|
res.status(200).send(content)
|
||||||
|
});
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
url(path: string = '/'): string {
|
||||||
|
if (!this.http) {
|
||||||
|
throw new Error('http server not started');
|
||||||
|
}
|
||||||
|
|
||||||
|
let addr = this.http.address() as net.AddressInfo;
|
||||||
|
return `http://${addr.address}:${addr.port}${path}`
|
||||||
|
}
|
||||||
|
|
||||||
|
listen() {
|
||||||
|
this.http = http.createServer(this.app)
|
||||||
|
this.http.listen(this.port, this.address);
|
||||||
|
}
|
||||||
|
|
||||||
|
close(): void {
|
||||||
|
if (!this.http) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this.http.close();
|
||||||
|
this.http = undefined;
|
||||||
|
}
|
||||||
|
}
|
Reference in a new issue