guanghu-ice-heart/server-tools/jd-forgejo/native.test.js

41 lines
1.6 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"use strict";
const test = require("node:test");
const assert = require("node:assert/strict");
const fs = require("node:fs");
const path = require("node:path");
const { parseProductIdentity } = require("./product-identity");
const ini = fs.readFileSync(path.join(__dirname, "app.ini.template"), "utf8");
const unit = fs.readFileSync(path.join(__dirname, "guanghu-forgejo.service"), "utf8");
test("native Forgejo binds only to JD loopback", () => {
assert.match(ini, /HTTP_ADDR = 127\.0\.0\.1/);
assert.match(ini, /HTTP_PORT = 3001/);
});
test("registration and push-create are disabled", () => {
assert.match(ini, /DISABLE_REGISTRATION = true/);
assert.match(ini, /ENABLE_PUSH_CREATE_USER = false/);
});
test("secrets remain server-side placeholders", () => {
assert.equal((ini.match(/PRIVATE_SERVER_VALUE/g) || []).length, 2);
assert.doesNotMatch(ini, /[a-f0-9]{40,}/);
assert.match(unit, /User=git/);
});
test("product identity probe rejects Gitea being labeled as Forgejo", () => {
const identity = parseProductIdentity(
{ version: "1.23.7" },
'<meta name="author" content="Gitea - Git with a cup of tea">',
);
assert.deepEqual(identity, {
product: "GITEA",
version: "1.23.7",
author: "Gitea - Git with a cup of tea",
});
assert.notEqual(identity.product, "FORGEJO");
});
test("product identity probe recognizes Forgejo independently", () => {
const identity = parseProductIdentity(
{ version: "15.0.5" },
'<meta name="author" content="Forgejo Beyond coding. We forge.">',
);
assert.equal(identity.product, "FORGEJO");
assert.equal(identity.version, "15.0.5");
});