ismism/ismism.ts/tst/pos.test.ts
2023-12-04 13:32:36 +08:00

109 lines
4.4 KiB
TypeScript

import type { Cdt, Dbt, Ern } from "../src/eid/typ.ts"
import { db } from "../src/eid/db.ts"
import { is_utc } from "../src/eid/is.ts"
import { usr_c, usr_r } from "../src/eid/usr.ts"
import { PsgRet } from "../src/pra/pas.ts"
import { Pos, PosRet, pos } from "../src/pra/pos.ts"
import { assertEquals } from "./mod.test.ts"
await db("tst", true)
function json(
p: Pos
): string {
return JSON.stringify(p)
}
Deno.test("pas", async () => {
const nbr = "11111111111"
const usr = await usr_c(nbr, "四川", "成都")
assertEquals(1, usr)
assertEquals([
{ ret: null, jwt: null }, { ret: null, jwt: null }, { ret: null }
], await Promise.all([
pos(""), pos("", ""), pos(json({ psg: "pas" }), "invalidkey")
]))
assertEquals({ ret: { sms: false } }, await pos(json({ psg: "sms", nbr, sms: false })))
const { ret: sms } = await pos(json({ psg: "sms", nbr, sms: false })) as { ret: PsgRet["sms"] }
assertEquals(true, sms && !sms.sms && is_utc(sms.utc!))
const code = await usr_r({ nbr }, { sms: 1 })
const { ret: pas, jwt } = await pos(json({ psg: "code", nbr, code: code?.sms?.code! })) as PosRet & { ret: PsgRet["code"] }
assertEquals(true, pas && pas.usr == usr && jwt!.length > 0)
assertEquals({ ret: pas }, await pos(json({ psg: "pas" }), jwt!))
assertEquals({ ret: 1, jwt: null }, await pos(json({ psg: "clr", usr: pas!.usr }), jwt!))
})
Deno.test("pos", async () => {
const nbr = ["11111111111", "11111111112", "11111111113"]
const [adm1, adm2] = ["广东", "汕头"]
const utc = Date.now()
const cdt: Cdt = {
_id: { usr: 2, soc: 1, utc }, msg: "cdt", amt: 10,
utc: { eft: utc - 10000, exp: utc + 10000, agr: 0 }, sec: 2
}
const cdt2: Cdt = {
_id: { usr: 1, soc: 1, utc }, msg: "cdt", amt: 10,
utc: { eft: utc - 10000, exp: utc + 10000, agr: 0 }, sec: 2
}
const dbt: Dbt = { _id: { usr: 2, soc: 1, utc }, msg: "dbt", amt: 5 }
const dbt2: Dbt = { _id: { usr: 2, soc: 1, utc: utc + 1 }, msg: "dbt", amt: 10 }
const ern: Ern = { _id: { usr: 2, soc: 1, utc }, msg: "ern", amt: 5, sec: 2 }
await usr_c(nbr[0], adm1, adm2)
const u2 = (await usr_c(nbr[1], adm1, adm2))!
await pos(json({ psg: "sms", nbr: nbr[1], sms: false }))
const { sms } = (await usr_r({ _id: u2 }, { sms: 1 }))!
const { jwt } = (await pos(json({ psg: "code", nbr: nbr[1], code: sms!.code })))! as PosRet
assertEquals([
1, 1,
null, null, null,
null, null, null, null, null,
1, 1, 1,
1, 1, 1, 1, 1, 1,
1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1,
], (await Promise.all([
pos(json({ pre: "usr", nbr: nbr[2], adm1, adm2 }), jwt!),
await pos(json({ pre: "soc", nam: "俱乐部", adm1, adm2 }), jwt!),
pos(json({ put: "soc", soc: 1, msg: "msg" }), jwt!),
pos(json({ put: "soc", soc: 1, agr: "agr" }), jwt!),
pos(json({ pre: "agd", nam: "活动", soc: 1 }), jwt!),
pos(json({ pre: "cdt", cdt }), jwt!),
pos(json({ pre: "dbt", dbt }), jwt!),
pos(json({ pre: "ern", ern }), jwt!),
pos(json({ pre: "wsl", nam: "文章" }), jwt!),
pos(json({ pre: "lit", nam: "文章" }), jwt!),
pos(json({ put: "usr", usr: u2, nam: "用户", adm1, adm2, msg: "msg" }), jwt!),
await pos(json({ put: "soc", soc: 1, nam: "俱乐部改", adm1, adm2, sec: [u2] }), jwt!),
await pos(json({ put: "aut", aut: [2, 3], wsl: [2], lit: [2] }), jwt!),
await pos(json({ pre: "cdt", cdt }), jwt!),
pos(json({ pre: "cdt", cdt: cdt2 }), jwt!),
pos(json({ pre: "dbt", dbt }), jwt!),
pos(json({ pre: "ern", ern }), jwt!),
pos(json({ pre: "wsl", nam: "文章" }), jwt!),
pos(json({ pre: "lit", nam: "文章" }), jwt!),
pos(json({ put: "soc", soc: 1, msg: "msg" }), jwt!),
pos(json({ put: "soc", soc: 1, agr: "agr" }), jwt!),
await pos(json({ pre: "agd", nam: "活动", soc: 1 }), jwt!),
pos(json({ put: "agd", agd: 1, nam: "活动改", adm1, adm2, msg: "msg" }), jwt!),
pos(json({ put: "cdt", aug: cdt._id, msg: "msg", amt: 1 }), jwt!),
pos(json({ put: "cdt", agr: cdt._id }), jwt!),
pos(json({ put: "cdt", quo: 1, msg: "签到" }), jwt!),
pos(json({ put: "dbt", sec: dbt._id }), jwt!),
pos(json({ put: "dbt", dbt: dbt._id, rev: { msg: "rev", rev: 3, utc } }), jwt!),
pos(json({ put: "wsl", id: 1, nam: "文章改", msg: "msg" }), jwt!),
pos(json({ put: "wsl", id: 1, pin: true }), jwt!),
])).map(r => r.ret ? 1 : null))
assertEquals([null, 1, null], (await Promise.all([
pos(json({ pre: "dbt", dbt: dbt2 }), jwt!),
await pos(json({ put: "cdt", mov: cdt2._id, msg: "mov", amt: 5 }), jwt!),
pos(json({ put: "cdt", mov: cdt2._id, msg: "mov", amt: 1 }), jwt!),
])).map(r => r.ret ? 1 : null))
})