Update Healer Man server

This commit is contained in:
phenom committed 2026-09-19 21:01:51 -04:00
1 parent f8314e7de1
commit 1fedb9368d
76 files changed
+20556 -2523

No files matched your search

+61 -1
View File
@@ -142,6 +142,65 @@ test("persists revisioned Manastorm GM configuration and rejects stale or unauth
}), (error) => error instanceof GameDatabaseError && error.status === 400);
}));
test("persists revisioned companion cooldown policy and rejects stale or unauthorized writes", () => withDatabase(async (database) => {
const gm = await database.register("Phenom", "cooldown-admin");
const player = await database.register("Ordinary", "cooldown-player");
const initial = database.getCompanionCooldownPolicy();
const configured = {
...initial.config,
generic: { ...initial.config.generic, defensiveHealthPercent: 61 },
mechanics: [{
id: "tank-buster", enabled: true, bossKey: "test/boss", bossName: "Test Boss",
bossServerEntry: 123, attackId: "heavy-strike", attackName: "Heavy Strike",
scope: "tank", leadTimeMs: 2_500, minimumCooldownSeconds: 20,
}],
};
const saved = database.putCompanionCooldownPolicy(database.authenticate(gm.token), 0, configured);
assert.equal(saved.revision, 1);
assert.equal(database.getCompanionCooldownPolicy().config.generic.defensiveHealthPercent, 61);
assert.throws(() => database.putCompanionCooldownPolicy(database.authenticate(gm.token), 0, configured), (error) => (
error instanceof GameDatabaseError && error.status === 409
));
assert.throws(() => database.putCompanionCooldownPolicy(database.authenticate(player.token), 1, configured), (error) => (
error instanceof GameDatabaseError && error.status === 403
));
}));
test("persists validated companion readiness with authorization, revisions, and corrupt-data fallback", () => withDatabase(async (database) => {
const gm = await database.register("Phenom", "readiness-admin");
const player = await database.register("ReadinessPlayer", "readiness-player");
const initial = database.getCompanionSpecReadiness();
assert.equal(initial.revision, 0);
assert.equal(initial.config.statuses["warrior:protection"], "ready");
assert.equal(Object.values(initial.config.statuses).filter((status) => status === "ready").length, 5);
const configured = {
...initial.config,
statuses: { ...initial.config.statuses, "paladin:retribution": "beta" },
};
const account = database.authenticate(gm.token);
const saved = database.putCompanionSpecReadiness(account, 0, configured);
assert.equal(saved.revision, 1);
assert.equal(database.getCompanionSpecReadiness().config.statuses["paladin:retribution"], "beta");
assert.throws(() => database.putCompanionSpecReadiness(account, 0, configured), (error) => (
error instanceof GameDatabaseError && error.status === 409
));
assert.throws(() => database.putCompanionSpecReadiness(database.authenticate(player.token), 1, configured), (error) => (
error instanceof GameDatabaseError && error.status === 403
));
assert.throws(() => database.putCompanionSpecReadiness(account, 1, {
schemaVersion: 1,
statuses: { ...configured.statuses, "warrior:protection": "needs-testing" },
}), (error) => error instanceof GameDatabaseError && error.status === 400);
const raw = new DatabaseSync(database.databasePath);
raw.prepare("UPDATE companion_spec_readiness SET config_json = ? WHERE id = 1").run("{not-json");
raw.close();
const fallback = database.getCompanionSpecReadiness();
assert.equal(fallback.revision, 0);
assert.equal(fallback.config.statuses["warrior:protection"], "ready");
}));
test("stores GM simulation replays and gates exact-hash route approval", () => withDatabase(async (database) => {
const gmAuth = await database.register("Phenom", "storm-admin");
const playerAuth = await database.register("RoutePlayer", "route-player");
@@ -288,10 +347,11 @@ test("launches players-only and AI-filled group activities only when every membe
assert.equal(playersOnly.group.activity.fillWithAi, false);
const filled = database.startOnlineGroupActivity(leader.id, {
type: "manastorm", contentId: "manastorm", fillWithAi: true, partySize: 5, startingLevel: 10,
type: "manastorm", contentId: "manastorm", fillWithAi: true, includeBetaSpecs: true, partySize: 5, startingLevel: 10,
});
assert.equal(filled.group.activity.partySize, 5);
assert.equal(filled.group.activity.startingLevel, 10);
assert.equal(filled.group.activity.includeBetaSpecs, true);
assert.throws(() => database.startOnlineGroupActivity(member.id, {
type: "dungeon", contentId: "wailing-caverns",
}), (error) => error instanceof GameDatabaseError && error.status === 403);