DARKNET: Prevent generating malformed darknet server hostname (#2744)

This commit is contained in:
catloversg
2026-05-10 06:18:19 +07:00
committed by GitHub
parent 0fe28a9fea
commit b79d5b1017
8 changed files with 79 additions and 5 deletions
+1
View File
@@ -780,6 +780,7 @@ describe("mutateDarknet and webstorm", () => {
function validatePath(hostname: string): void {
expectWithMessage(isDirectoryPath(`${hostname}/`), true, `Invalid hostname: ${hostname}`);
expectWithMessage(isFilePath(`${hostname}/data.txt`), true, `Invalid hostname: ${hostname}`);
expectWithMessage(hostname.isWellFormed(), true, `Malformed hostname: ${hostname}`);
}
describe("Darknet server name generator", () => {
+22
View File
@@ -6,6 +6,7 @@ import * as db from "../../../src/db";
import * as FileUtils from "../../../src/utils/FileUtils";
import type { SaveData } from "../../../src/types";
import { calculateExp } from "../../../src/PersonObjects/formulas/skill";
import { GetAllServers, GetServer } from "../../../src/Server/AllServers";
async function loadGameFromSaveData(saveData: SaveData) {
// Simulate loading the data in IndexedDB
@@ -132,4 +133,25 @@ describe("v3", () => {
expect(mockedDownload).not.toHaveBeenCalled();
});
});
test("Malformed hostname", async () => {
const saveData = new Uint8Array(fs.readFileSync("test/jest/Migration/save-files/malformed-hostname.gz"));
await loadGameFromSaveData(saveData);
for (const server of GetAllServers(true)) {
expect(server.hostname.isWellFormed()).toBe(true);
for (const script of server.scripts.values()) {
expect(script.server).toStrictEqual(server.hostname);
}
if (server.savedScripts) {
for (const script of server.savedScripts) {
expect(script.server).toStrictEqual(server.hostname);
}
}
for (const hostname of server.serversOnNetwork) {
expect(hostname.isWellFormed()).toBe(true);
expect(GetServer(hostname)).not.toBeNull();
}
}
expect(() => Player.getCurrentServer()).not.toThrow();
});
});
Binary file not shown.