/**
 * Ma vérification. Les trois comptes de test sont-ils bien revenus à leur
 * mot de passe d'origine, et les deux compteurs sont-ils vraiment séparés ?
 */
import { signInByUsername } from "@/lib/services/sign-in"
import { changeOwnPassword } from "@/lib/services/change-password"
import { eq } from "drizzle-orm"
import { db } from "@/lib/db/client"
import { people } from "@/lib/db/schema"

console.log("=== les comptes sont-ils intacts ? ===")
for (const [name, pass] of [
  ["narin", "admin1"],
  ["malai", "manager1"],
  ["nattikan", "staff1"],
  ["roma", "admin2"],
  ["aranya", "manager2"],
] as const) {
  const r = await signInByUsername(name, pass)
  console.log(`${name.padEnd(10)} ${r.ok ? "ok, " + r.tier : r.reason}`)
}

console.log()
console.log("=== les deux compteurs sont-ils séparés ? ===")
const [p] = await db
  .select({ id: people.id })
  .from(people)
  .where(eq(people.username, "palita"))
if (!p) throw new Error("palita introuvable")

// On épuise le compteur du changement de mot de passe.
const reasons: string[] = []
for (let i = 0; i < 11; i++) {
  const r = await changeOwnPassword(p.id, "faux", "quelquechose", "quelquechose")
  reasons.push(r.ok ? "ok" : r.reason)
}
console.log("onze tentatives de changement :", reasons.join(", "))

// La connexion de la même personne doit être intacte.
console.log("sa connexion pendant ce blocage :", await signInByUsername("palita", "staff4"))

process.exit(0)
