36 lines
1.1 KiB
TypeScript
36 lines
1.1 KiB
TypeScript
import { createHash } from "node:crypto";
|
|
|
|
import { describe, expect, it } from "vitest";
|
|
|
|
import { registrationNotice } from "../../packages/shared-contracts/src/index.js";
|
|
|
|
describe("TDD-WP1-NOTICE-001-registration-consent", () => {
|
|
it("freezes a versioned and hash-verifiable registration notice", () => {
|
|
expect(registrationNotice.version).toMatch(/^p0a-registration-notice-v[1-9][0-9]*$/);
|
|
expect(registrationNotice.effectiveAt).toMatch(/^20[0-9]{2}-[0-9]{2}-[0-9]{2}$/);
|
|
expect(registrationNotice.sections.length).toBeGreaterThanOrEqual(5);
|
|
expect(
|
|
createHash("sha256").update(registrationNotice.content, "utf8").digest("hex"),
|
|
).toBe(registrationNotice.contentSha256);
|
|
});
|
|
|
|
it.each([
|
|
"AI 网关",
|
|
"Resend",
|
|
"高德",
|
|
"DYN004",
|
|
"Windows",
|
|
"文件系统权限",
|
|
"应用层加密",
|
|
"云备份",
|
|
"LocalDataRoot",
|
|
"超级管理员",
|
|
"账号注销",
|
|
"180 天",
|
|
"不自动备份",
|
|
"不会迁移到正式系统",
|
|
])("contains the frozen topic %s", (topic) => {
|
|
expect(registrationNotice.content).toContain(topic);
|
|
});
|
|
});
|