/
options-middleware.test.js
80 lines (77 loc) · 2.1 KB
/
options-middleware.test.js
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
"use strict";
const webpack = require("webpack");
const Express = require("express");
const Server = require("../../lib/Server");
const config = require("../fixtures/client-config/webpack.config");
const runBrowser = require("../helpers/run-browser");
const port = require("../ports-map")["options-request-response"];
const createWaiting = () => {
let reslove;
let reject;
const waiting = new Promise((resolve$, reject$) => {
reslove = resolve$;
reject = reject$;
});
return {
reslove,
reject,
waiting,
};
};
describe("handle options-request correctly", () => {
it("should response with 200 http code", async () => {
const compiler = webpack(config);
const [portForServer, portForApp] = port;
const closeApp = await (async () => {
const { reslove, waiting } = createWaiting();
const app = new Express();
app.get("/", (req, res) => {
res.sendStatus(200);
});
const server = app.listen(portForApp, () => {
reslove();
});
await waiting;
return async () => {
const { reslove: reslove2, waiting: waiting2 } = createWaiting();
server.close(() => {
reslove2();
});
await waiting2;
};
})();
const server = new Server(
{
port: portForServer,
headers: {
"Access-Control-Allow-Origin": "*",
"Access-Control-Allow-Headers": "*",
},
},
compiler
);
await server.start();
const { page, browser } = await runBrowser();
const prefixUrl = "http://127.0.0.1";
const htmlUrl = `${prefixUrl}:${portForServer}/test.html`;
const appUrl = `${prefixUrl}:${portForApp}`;
await page.goto(appUrl);
const responseStatus = [];
page.on("response", (res) => {
responseStatus.push(res.status());
});
await page.evaluate(
(url) =>
window.fetch(url, {
headers: {
"another-header": "1",
},
}),
htmlUrl
);
await browser.close();
await server.stop();
await closeApp();
expect(responseStatus).toEqual([204, 200]);
});
});