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