32 lines
1.3 KiB
JavaScript
32 lines
1.3 KiB
JavaScript
|
|
// 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);
|