mirror of
https://github.com/tdurieux/anonymous_github.git
synced 2026-10-20 22:51:18 +02:00
perf: avoid needless downloads and track request latency (#876)
* perf: avoid needless downloads and track request latency * fix: correct request timing and monitoring revalidation
This commit is contained in:
1 parent
db966356ec
commit
a9760eab39
28 files changed
+1208
-73
No files matched your search
@@ -0,0 +1,32 @@
|
||||
const { expect } = require("chai");
|
||||
const express = require("express");
|
||||
const http = require("node:http");
|
||||
require("ts-node/register/transpile-only");
|
||||
const utils = require("../src/server/routes/route-utils");
|
||||
const admin = require("../src/server/routes/admin").default;
|
||||
|
||||
describe("performance report access", function () {
|
||||
let server, original;
|
||||
before(async function () {
|
||||
original = utils.getUser;
|
||||
utils.getUser = async req => ({ isAdmin: req.get("x-fixture-user") === "admin", model: { id: "fixture" } });
|
||||
const app = express();
|
||||
app.use((req, _res, next) => { req.isAuthenticated = () => !!req.get("x-fixture-user"); next(); });
|
||||
app.use("/api/admin", admin);
|
||||
server = await new Promise(resolve => { const s = app.listen(0, "127.0.0.1", () => resolve(s)); });
|
||||
});
|
||||
after(async function () { server.closeAllConnections(); await new Promise(resolve => server.close(resolve)); utils.getUser = original; });
|
||||
async function request(user) {
|
||||
return new Promise((resolve, reject) => {
|
||||
http.get({ host: "127.0.0.1", port: server.address().port, path: "/api/admin/performance", headers: user ? { "x-fixture-user": user } : {} }, res => {
|
||||
let body = ""; res.on("data", chunk => { body += chunk; }); res.on("end", () => resolve({ status: res.statusCode, body, headers: res.headers }));
|
||||
}).on("error", reject);
|
||||
});
|
||||
}
|
||||
it("rejects anonymous requests", async function () { expect((await request()).status).to.equal(401); });
|
||||
it("rejects non-admin users", async function () { expect((await request("regular")).status).to.equal(401); });
|
||||
it("allows admins and disables HTTP caching", async function () {
|
||||
const result = await request("admin"); expect(result.status).to.equal(200);
|
||||
expect(JSON.parse(result.body).available).to.equal(false); expect(result.headers["cache-control"]).to.equal("no-store");
|
||||
});
|
||||
});
|
||||
Reference in new issue
Block a user