55 lines
1.8 KiB
JavaScript
55 lines
1.8 KiB
JavaScript
// E2E стоп-листа: логин кальянщиком → стоп табака витринного микса → проверка.
|
|
const BASE = process.env.CRM_URL ?? "http://127.0.0.1:47613";
|
|
// F-12: креды только через окружение — в коде их нет
|
|
const CRM_LOGIN = process.env.CRM_LOGIN;
|
|
const CRM_PASSWORD = process.env.CRM_PASSWORD;
|
|
if (!CRM_LOGIN || !CRM_PASSWORD) {
|
|
console.error("Задайте CRM_LOGIN и CRM_PASSWORD (учётка кальянщика)");
|
|
process.exit(1);
|
|
}
|
|
const ID = "bliss-lime";
|
|
|
|
const j = async (path, opts = {}) => {
|
|
const r = await fetch(BASE + path, {
|
|
...opts,
|
|
headers: { "Content-Type": "application/json", ...(opts.headers || {}) },
|
|
signal: AbortSignal.timeout(8000),
|
|
});
|
|
const text = await r.text();
|
|
let data = null;
|
|
try {
|
|
data = JSON.parse(text);
|
|
} catch {
|
|
data = null;
|
|
}
|
|
return { status: r.status, data };
|
|
};
|
|
|
|
const login = await j("/api/login", {
|
|
method: "POST",
|
|
body: JSON.stringify({ login: CRM_LOGIN, password: CRM_PASSWORD }),
|
|
});
|
|
if (login.status !== 200 || !login.data?.token) {
|
|
console.log("E2E_LOGIN_FAIL status=" + login.status);
|
|
process.exit(1);
|
|
}
|
|
const token = login.data.token;
|
|
|
|
const before = await j("/api/stoplist");
|
|
const beforeIds = before.data?.stopped_tobacco ?? [];
|
|
|
|
const patch = await j(`/api/tobacco/${ID}`, {
|
|
method: "PATCH",
|
|
headers: { "X-Auth-Token": token },
|
|
body: JSON.stringify({ stopped: true }),
|
|
});
|
|
|
|
const after = await j("/api/stoplist");
|
|
const afterIds = after.data?.stopped_tobacco ?? [];
|
|
|
|
console.log(
|
|
`E2E login=${login.status} role=${login.data?.role ?? login.data?.user?.role ?? "?"} ` +
|
|
`before=${beforeIds.length} patch=${patch.status} after=${afterIds.length} ` +
|
|
`contains=${afterIds.includes(ID) ? 1 : 0}`,
|
|
);
|