"use strict"; const assert = require("node:assert/strict"); const { AUTH_SQL, MODULE_KEYS, SAFE_RESULT_KEYS, USAGE_SQL, applyExposure, assertSafeResult, classifyFixtureActor, effectiveFlagState, isSmokeLikeValue, } = require("./usage-census.cjs"); const fs = require("node:fs"); function assertSelectOnly(sql) { assert.doesNotMatch(sql, /\b(INSERT|UPDATE|DELETE|UPSERT|MERGE|ALTER|CREATE|DROP|TRUNCATE|CALL|COPY|GRANT|REVOKE)\b/iu); assert.doesNotMatch(sql, /\bFOR\s+UPDATE\b/iu); assert.match(sql, /^\s*WITH\b/iu); } assertSelectOnly(USAGE_SQL); assertSelectOnly(AUTH_SQL); assert.equal(MODULE_KEYS.length, 20); assert.equal(new Set(MODULE_KEYS).size, MODULE_KEYS.length); assert.equal(new Set(SAFE_RESULT_KEYS).size, SAFE_RESULT_KEYS.length); assert.match(USAGE_SQL, /forced_kind = 'system'/u); assert.match(USAGE_SQL, /THEN 'smoke'/u); assert.match(USAGE_SQL, /THEN 'unknown'/u); assert.match(USAGE_SQL, /ELSE 'human'/u); assert.match( fs.readFileSync(require.resolve("./usage-census.cjs"), "utf8"), /require\.main === module \|\| process\.argv\[1\] === "-"/u, ); assert.equal(isSmokeLikeValue("smoke-employee@example.invalid"), true); assert.equal(isSmokeLikeValue("OA_SMOKE_01@example.invalid"), true); assert.equal(isSmokeLikeValue("SMOKE002"), true); assert.equal(isSmokeLikeValue("测试员工"), true); assert.equal(isSmokeLikeValue("ordinary@example.invalid"), false); assert.equal(classifyFixtureActor(null), "unknown"); assert.equal(classifyFixtureActor({ employeeNo: "E001", email: "ordinary@example.invalid", name: "普通员工" }), "human"); assert.equal(classifyFixtureActor({ employeeNo: "SMOKE002", email: "ordinary@example.invalid", name: "普通员工" }), "smoke"); assert.equal(classifyFixtureActor({ employeeNo: "E001", email: "ordinary@example.invalid", name: "普通员工" }, "system"), "system"); assert.equal(effectiveFlagState({ requiresDepartment: true, effectiveReason: "department_deferred", effectiveEnabled: true }), "partial"); assert.equal(effectiveFlagState({ requiresDepartment: false, effectiveReason: "flag_force_on_global", effectiveEnabled: true }), "on"); assert.equal(effectiveFlagState({ requiresDepartment: false, effectiveReason: "flag_force_off", effectiveEnabled: false }), "off"); const zeroMetric = Object.fromEntries(SAFE_RESULT_KEYS .filter((key) => !["moduleKey", "latestActivityAt", "navigationMode", "effectiveFlagState", "queryStatus"].includes(key)) .map((key) => [key, 0])); const rawMetrics = MODULE_KEYS.map((moduleKey) => ({ moduleKey, ...zeroMetric, latestActivityAt: null, auditEvents30d: 0, auditEvents90d: 0, auditHumanActors30d: 0, auditHumanActors90d: 0, auditHumanEvents30d: 0, auditHumanEvents90d: 0, auditSmokeEvents30d: 0, auditSmokeEvents90d: 0, auditUnknownEvents30d: 0, auditUnknownEvents90d: 0, })); const workspace = { moduleVisibility: {} }; const exposed = applyExposure(rawMetrics, workspace, []); assert.equal(exposed.length, 20); assert.equal(exposed.find((item) => item.moduleKey === "payroll").navigationMode, "no_navigation"); assert.equal(exposed.find((item) => item.moduleKey === "procurement").effectiveFlagState, "not_applicable"); assert.equal(exposed.find((item) => item.moduleKey === "reimbursements_invoices").effectiveFlagState, "not_applicable"); assert.equal(exposed.find((item) => item.moduleKey === "workflow_approvals").effectiveFlagState, "not_applicable"); assert.equal(exposed.find((item) => item.moduleKey === "budgets").effectiveFlagState, "not_applicable"); assertSafeResult(exposed); assert.throws(() => assertSafeResult(exposed.slice(1)), /result_module_count_invalid/u); assert.throws( () => assertSafeResult(exposed.map((item, index) => index === 0 ? { ...item, leakedField: "x" } : item)), /result_field_contract_invalid/u, ); process.stdout.write("usage-census contract: PASS\n");