mirror of
https://github.com/gristlabs/grist-core.git
synced 2024-10-27 20:44:07 +00:00
47 lines
1.2 KiB
TypeScript
47 lines
1.2 KiB
TypeScript
|
import {serveSomething, Serving} from "test/server/customUtil";
|
||
|
import * as bodyParser from "body-parser";
|
||
|
import {Request, Response} from "express-serve-static-core";
|
||
|
import axios from "axios";
|
||
|
|
||
|
export class TestProxyServer {
|
||
|
public static async Prepare(portNumber: number): Promise<TestProxyServer> {
|
||
|
const server = new TestProxyServer();
|
||
|
await server._prepare(portNumber);
|
||
|
return server;
|
||
|
|
||
|
}
|
||
|
|
||
|
private _proxyCallsCounter: number = 0;
|
||
|
private _proxyServing: Serving;
|
||
|
|
||
|
private constructor() {
|
||
|
}
|
||
|
|
||
|
public wasProxyCalled(): boolean {
|
||
|
return this._proxyCallsCounter > 0;
|
||
|
}
|
||
|
|
||
|
public async dispose() {
|
||
|
await this._proxyServing.shutdown();
|
||
|
}
|
||
|
|
||
|
private async _prepare(portNumber: number) {
|
||
|
this._proxyServing = await serveSomething(app => {
|
||
|
app.use(bodyParser.json());
|
||
|
app.all('*', async (req: Request, res: Response) => {
|
||
|
this._proxyCallsCounter += 1;
|
||
|
let responseCode;
|
||
|
try {
|
||
|
const axiosResponse = await axios.post(req.url, req.body);
|
||
|
responseCode = axiosResponse.status;
|
||
|
} catch (error: any) {
|
||
|
responseCode = error.response.status;
|
||
|
}
|
||
|
res.sendStatus(responseCode);
|
||
|
res.end();
|
||
|
//next();
|
||
|
});
|
||
|
}, portNumber);
|
||
|
}
|
||
|
}
|