



















@@ -1,6 +1,5 @@
11import crypto from "node:crypto";
22import fsSync from "node:fs";
3-import fs from "node:fs/promises";
43import os from "node:os";
54import path from "node:path";
65import {
@@ -78,13 +77,13 @@ type RandomIntSync = (minOrMax: number, max?: number) => number;
7877let randomIntSpy: MockInstance<RandomIntSync>;
7978let nextRandomInt = 0;
807981-beforeAll(async () => {
82-fixtureRoot = await fs.mkdtemp(path.join(os.tmpdir(), "openclaw-pairing-"));
80+beforeAll(() => {
81+fixtureRoot = fsSync.mkdtempSync(path.join(os.tmpdir(), "openclaw-pairing-"));
8382});
848385-afterAll(async () => {
84+afterAll(() => {
8685if (fixtureRoot) {
87-await fs.rm(fixtureRoot, { recursive: true, force: true });
86+fsSync.rmSync(fixtureRoot, { recursive: true, force: true });
8887}
8988});
9089@@ -110,13 +109,13 @@ function setDefaultRandomIntMock() {
110109111110async function withTempStateDir<T>(fn: (stateDir: string) => Promise<T>) {
112111const dir = path.join(fixtureRoot, `case-${caseId++}`);
113-await fs.mkdir(dir, { recursive: true });
112+fsSync.mkdirSync(dir, { recursive: true });
114113return await withEnvAsync({ OPENCLAW_STATE_DIR: dir }, async () => await fn(dir));
115114}
116115117-async function writeJsonFixture(filePath: string, value: unknown) {
118-await fs.mkdir(path.dirname(filePath), { recursive: true });
119-await fs.writeFile(filePath, `${JSON.stringify(value, null, 2)}\n`, "utf8");
116+function writeJsonFixture(filePath: string, value: unknown) {
117+fsSync.mkdirSync(path.dirname(filePath), { recursive: true });
118+fsSync.writeFileSync(filePath, `${JSON.stringify(value, null, 2)}\n`, "utf8");
120119}
121120122121function resolvePairingFilePath(stateDir: string, channel: string) {
@@ -128,9 +127,9 @@ function resolveAllowFromFilePath(stateDir: string, channel: string, accountId?:
128127return path.join(resolveOAuthDir(process.env, stateDir), `${channel}${suffix}-allowFrom.json`);
129128}
130129131-async function clearOAuthFixtures(stateDir: string) {
130+function clearOAuthFixtures(stateDir: string) {
132131clearPairingAllowFromReadCacheForTest();
133-await fs.rm(resolveOAuthDir(process.env, stateDir), { recursive: true, force: true });
132+fsSync.rmSync(resolveOAuthDir(process.env, stateDir), { recursive: true, force: true });
134133}
135134136135async function writeAllowFromFixture(params: {
@@ -139,13 +138,10 @@ async function writeAllowFromFixture(params: {
139138allowFrom: string[];
140139accountId?: string;
141140}) {
142-await writeJsonFixture(
143-resolveAllowFromFilePath(params.stateDir, params.channel, params.accountId),
144-{
145-version: 1,
146-allowFrom: params.allowFrom,
147-},
148-);
141+writeJsonFixture(resolveAllowFromFilePath(params.stateDir, params.channel, params.accountId), {
142+version: 1,
143+allowFrom: params.allowFrom,
144+});
149145}
150146151147async function createTelegramPairingRequest(accountId: string, id = "12345") {
@@ -338,15 +334,15 @@ describe("pairing store", () => {
338334});
339335expect(created.created).toBe(true);
340336const filePath = resolvePairingFilePath(stateDir, "demo-pairing-b");
341-const raw = await fs.readFile(filePath, "utf8");
337+const raw = fsSync.readFileSync(filePath, "utf8");
342338const parsed = JSON.parse(raw) as {
343339requests?: Array<Record<string, unknown>>;
344340};
345341const expiredAt = new Date(Date.now() - 2 * 60 * 60 * 1000).toISOString();
346342const requests = (parsed.requests ?? []).map((entry) =>
347343Object.assign({}, entry, { createdAt: expiredAt, lastSeenAt: expiredAt }),
348344);
349-await writeJsonFixture(filePath, { version: 1, requests });
345+writeJsonFixture(filePath, { version: 1, requests });
350346expect(await listChannelPairingRequests("demo-pairing-b")).toHaveLength(0);
351347const next = await upsertChannelPairingRequest({
352348channel: "demo-pairing-b",
@@ -374,7 +370,7 @@ describe("pairing store", () => {
374370expect(listIds).toEqual(["+15550000001", "+15550000002", "+15550000003"]);
375371376372const createdAt = new Date().toISOString();
377-await writeJsonFixture(resolvePairingFilePath(stateDir, "demo-pairing-d"), {
373+writeJsonFixture(resolvePairingFilePath(stateDir, "demo-pairing-d"), {
378374version: 1,
379375requests: ids.map((id, index) => ({
380376 id,
@@ -510,8 +506,8 @@ describe("pairing store", () => {
510506allowFrom: ["1001"],
511507});
512508const malformedScopedPath = resolveAllowFromFilePath(stateDir, "telegram", "yy");
513-await fs.mkdir(path.dirname(malformedScopedPath), { recursive: true });
514-await fs.writeFile(malformedScopedPath, "{ this is not json\n", "utf8");
509+fsSync.mkdirSync(path.dirname(malformedScopedPath), { recursive: true });
510+fsSync.writeFileSync(malformedScopedPath, "{ this is not json\n", "utf8");
515511},
516512accountId: "yy",
517513expected: [],
@@ -531,7 +527,7 @@ describe("pairing store", () => {
531527expected: ["1002", "1001"],
532528},
533529] as const) {
534-await clearOAuthFixtures(stateDir);
530+clearOAuthFixtures(stateDir);
535531await setup();
536532await expectAllowFromReadConsistencyCase({
537533 ...(accountId !== undefined ? { accountId } : {}),
@@ -550,7 +546,7 @@ describe("pairing store", () => {
550546secondAccountId: "beta",
551547});
552548553-await clearOAuthFixtures(stateDir);
549+clearOAuthFixtures(stateDir);
554550for (const accountId of ["alpha", "beta", "gamma"]) {
555551const created = await upsertChannelPairingRequest({
556552channel: "telegram",
@@ -591,7 +587,7 @@ describe("pairing store", () => {
591587readAllowFrom: async () => readChannelAllowFromStoreSync("telegram", process.env, "yy"),
592588},
593589]) {
594-await clearOAuthFixtures(stateDir);
590+clearOAuthFixtures(stateDir);
595591await withAllowFromCacheReadSpy({
596592 stateDir,
597593createReadSpy: variant.createReadSpy,
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。