Files

32 lines
1.3 KiB
JavaScript
Raw Permalink Normal View History

// Verify server deducts the ranked entry at match start (server must be running).
import { HubConnectionBuilder, LogLevel } from "@microsoft/signalr";
const S = "http://localhost:5005";
const auth = await (await fetch(`${S}/api/auth/otp/verify`, {
method: "POST", headers: { "Content-Type": "application/json" },
body: JSON.stringify({ phone: "0977", code: "1234", name: "Entry" }),
})).json();
const H = { Authorization: `Bearer ${auth.token}` };
const before = await (await fetch(`${S}/api/profile`, { headers: H })).json();
const conn = new HubConnectionBuilder()
.withUrl(`${S}/hub/game`, { accessTokenFactory: () => auth.token })
.configureLogging(LogLevel.Error).build();
let gotProfile = null, gotReward = false;
conn.on("profile", (p) => { gotProfile = p; });
conn.on("reward", () => { gotReward = true; });
await conn.start();
await conn.invoke("StartMatchmaking", { name: "Entry", avatar: "a-fox", level: 1, plan: "pro" });
await new Promise((r) => setTimeout(r, 4000));
const after = await (await fetch(`${S}/api/profile`, { headers: H })).json();
console.log(JSON.stringify({
coinsBefore: before.coins,
coinsAfter: after.coins,
entryDeducted: before.coins - after.coins,
pushedProfileCoins: gotProfile?.coins ?? null,
}));
await conn.stop();
process.exit(0);