fix(feishu): recover CJK filenames from JSON file_name field (fixes #… · openclaw/openclaw@7b65954
liuhao1024
·
2026-06-17
·
via Recent Commits to openclaw:main
| Original file line number | Diff line number | Diff line change |
|---|
@@ -953,4 +953,36 @@ describe("downloadMessageResourceFeishu", () => {
|
953 | 953 | await fs.rm(tempHome, { recursive: true, force: true }); |
954 | 954 | } |
955 | 955 | }); |
| 956 | + |
| 957 | +it("recovers CJK filenames from the inbound message payload fallback", async () => { |
| 958 | +const originalHome = process.env.HOME; |
| 959 | +const tempHome = await fs.mkdtemp(path.join(os.tmpdir(), "openclaw-feishu-media-")); |
| 960 | +const fileName = "武汉15座山登山信息汇总.csv"; |
| 961 | +const latin1LookingFileName = Buffer.from(fileName, "utf8").toString("latin1"); |
| 962 | +try { |
| 963 | +process.env.HOME = tempHome; |
| 964 | +messageResourceGetMock.mockResolvedValueOnce({ |
| 965 | +getReadableStream: () => Readable.from([Buffer.from("a,b\n1,2\n")]), |
| 966 | +headers: { "content-type": "text/csv" }, |
| 967 | +}); |
| 968 | + |
| 969 | +const result = await saveMessageResourceFeishu({ |
| 970 | +cfg: emptyConfig, |
| 971 | +messageId: "om_stream_msg_cjk", |
| 972 | +fileKey: "file_key_stream_cjk", |
| 973 | +type: "file", |
| 974 | +maxBytes: 1024, |
| 975 | +originalFilename: latin1LookingFileName, |
| 976 | +}); |
| 977 | + |
| 978 | +expect(result.saved.id).toMatch(/^武汉15座山登山信息汇总---[a-f0-9-]{36}\.csv$/); |
| 979 | +} finally { |
| 980 | +if (originalHome === undefined) { |
| 981 | +delete process.env.HOME; |
| 982 | +} else { |
| 983 | +process.env.HOME = originalHome; |
| 984 | +} |
| 985 | +await fs.rm(tempHome, { recursive: true, force: true }); |
| 986 | +} |
| 987 | +}); |
956 | 988 | }); |
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。