fix(testing): use UUIDs for Telegram credential leases · openclaw/openclaw@aaa73a5
vincentkoc
·
2026-06-17
·
via Recent Commits to openclaw:main
| Original file line number | Diff line number | Diff line change |
|---|
|
1 | 1 | #!/usr/bin/env -S node --import tsx |
2 | 2 | // Telegram User Credential script supports OpenClaw repository automation. |
3 | 3 | |
4 | | -import { createHash } from "node:crypto"; |
| 4 | +import { createHash, randomUUID } from "node:crypto"; |
5 | 5 | import { copyFile, mkdir, mkdtemp, readFile, rm, unlink, writeFile } from "node:fs/promises"; |
6 | 6 | import { tmpdir } from "node:os"; |
7 | 7 | import path from "node:path"; |
@@ -224,6 +224,10 @@ async function postBroker(params: {
|
224 | 224 | return payload; |
225 | 225 | } |
226 | 226 | |
| 227 | +export function buildTelegramUserCredentialOwnerId() { |
| 228 | +return `telegram-user-${randomUUID()}`; |
| 229 | +} |
| 230 | + |
227 | 231 | async function resolveConvexLeaseConfig(opts: Map<string, string>) { |
228 | 232 | const envFile = opts.get("env-file") || DEFAULT_CONVEX_ENV_FILE; |
229 | 233 | const fileEnv = await readEnvFile(envFile); |
@@ -259,7 +263,7 @@ async function resolveConvexLeaseConfig(opts: Map<string, string>) {
|
259 | 263 | ownerId: |
260 | 264 | opts.get("owner-id") || |
261 | 265 | process.env.OPENCLAW_QA_CREDENTIAL_OWNER_ID?.trim() || |
262 | | -`telegram-user-${Date.now()}-${Math.random().toString(16).slice(2, 10)}`, |
| 266 | + buildTelegramUserCredentialOwnerId(), |
263 | 267 | }; |
264 | 268 | } |
265 | 269 | |
|
| Original file line number | Diff line number | Diff line change |
|---|
@@ -118,6 +118,21 @@ describe("telegram user credential path handling", () => {
|
118 | 118 | }); |
119 | 119 | |
120 | 120 | describe("telegram user credential IO", () => { |
| 121 | +it("uses collision-resistant generated credential lease owner IDs", async () => { |
| 122 | +const credentialModule = (await import( |
| 123 | +`${new URL("../../scripts/e2e/telegram-user-credential.ts", import.meta.url).href}?case=owner-id-${Date.now()}` |
| 124 | +)) as { |
| 125 | +buildTelegramUserCredentialOwnerId(): string; |
| 126 | +}; |
| 127 | + |
| 128 | +expect(credentialModule.buildTelegramUserCredentialOwnerId()).toMatch( |
| 129 | +/^telegram-user-[0-9a-f-]{36}$/u, |
| 130 | +); |
| 131 | +expect(readFileSync("scripts/e2e/telegram-user-credential.ts", "utf8")).not.toContain( |
| 132 | +"telegram-user-${Date.now()}-${Math.random()", |
| 133 | +); |
| 134 | +}); |
| 135 | + |
121 | 136 | it("rejects oversized chunked lease payload markers before hydration", async () => { |
122 | 137 | const credentialModule = (await import( |
123 | 138 | `${new URL("../../scripts/e2e/telegram-user-credential.ts", import.meta.url).href}?case=chunk-marker-${Date.now()}` |
|
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。