mirror of
https://github.com/openclaw/openclaw.git
synced 2026-04-30 21:30:21 +00:00
test(plugins): finish moving contract coverage
This commit is contained in:
@@ -3,19 +3,13 @@ import os from "node:os";
|
||||
import path from "node:path";
|
||||
import { describe, expect, it, vi } from "vitest";
|
||||
import {
|
||||
assertWebChannel,
|
||||
CONFIG_DIR,
|
||||
ensureDir,
|
||||
jidToE164,
|
||||
normalizeE164,
|
||||
resolveConfigDir,
|
||||
resolveHomeDir,
|
||||
resolveJidToE164,
|
||||
resolveUserPath,
|
||||
shortenHomeInString,
|
||||
shortenHomePath,
|
||||
sleep,
|
||||
toWhatsappJid,
|
||||
} from "./utils.js";
|
||||
|
||||
async function withTempDir<T>(
|
||||
@@ -50,74 +44,6 @@ describe("sleep", () => {
|
||||
});
|
||||
});
|
||||
|
||||
describe("assertWebChannel", () => {
|
||||
it("accepts valid channel", () => {
|
||||
expect(() => assertWebChannel("web")).not.toThrow();
|
||||
});
|
||||
|
||||
it("throws for invalid channel", () => {
|
||||
expect(() => assertWebChannel("bad" as string)).toThrow();
|
||||
});
|
||||
});
|
||||
|
||||
describe("normalizeE164 & toWhatsappJid", () => {
|
||||
it("strips formatting and prefixes", () => {
|
||||
expect(normalizeE164("whatsapp:(555) 123-4567")).toBe("+5551234567");
|
||||
expect(toWhatsappJid("whatsapp:+555 123 4567")).toBe("5551234567@s.whatsapp.net");
|
||||
});
|
||||
|
||||
it("preserves existing JIDs", () => {
|
||||
expect(toWhatsappJid("123456789-987654321@g.us")).toBe("123456789-987654321@g.us");
|
||||
expect(toWhatsappJid("whatsapp:123456789-987654321@g.us")).toBe("123456789-987654321@g.us");
|
||||
expect(toWhatsappJid("1555123@s.whatsapp.net")).toBe("1555123@s.whatsapp.net");
|
||||
});
|
||||
});
|
||||
|
||||
describe("jidToE164", () => {
|
||||
it("maps @lid using reverse mapping file", () => {
|
||||
const mappingPath = path.join(CONFIG_DIR, "credentials", "lid-mapping-123_reverse.json");
|
||||
const original = fs.readFileSync;
|
||||
const spy = vi.spyOn(fs, "readFileSync").mockImplementation((...args) => {
|
||||
if (args[0] === mappingPath) {
|
||||
return `"5551234"`;
|
||||
}
|
||||
return original(...args);
|
||||
});
|
||||
expect(jidToE164("123@lid")).toBe("+5551234");
|
||||
spy.mockRestore();
|
||||
});
|
||||
|
||||
it("maps @lid from authDir mapping files", async () => {
|
||||
await withTempDir("openclaw-auth-", (authDir) => {
|
||||
const mappingPath = path.join(authDir, "lid-mapping-456_reverse.json");
|
||||
fs.writeFileSync(mappingPath, JSON.stringify("5559876"));
|
||||
expect(jidToE164("456@lid", { authDir })).toBe("+5559876");
|
||||
});
|
||||
});
|
||||
|
||||
it("maps @hosted.lid from authDir mapping files", async () => {
|
||||
await withTempDir("openclaw-auth-", (authDir) => {
|
||||
const mappingPath = path.join(authDir, "lid-mapping-789_reverse.json");
|
||||
fs.writeFileSync(mappingPath, JSON.stringify(4440001));
|
||||
expect(jidToE164("789@hosted.lid", { authDir })).toBe("+4440001");
|
||||
});
|
||||
});
|
||||
|
||||
it("accepts hosted PN JIDs", () => {
|
||||
expect(jidToE164("1555000:2@hosted")).toBe("+1555000");
|
||||
});
|
||||
|
||||
it("falls back through lidMappingDirs in order", async () => {
|
||||
await withTempDir("openclaw-lid-a-", async (first) => {
|
||||
await withTempDir("openclaw-lid-b-", (second) => {
|
||||
const mappingPath = path.join(second, "lid-mapping-321_reverse.json");
|
||||
fs.writeFileSync(mappingPath, JSON.stringify("123321"));
|
||||
expect(jidToE164("321@lid", { lidMappingDirs: [first, second] })).toBe("+123321");
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe("resolveConfigDir", () => {
|
||||
it("prefers ~/.openclaw when legacy dir is missing", async () => {
|
||||
const root = await fs.promises.mkdtemp(path.join(os.tmpdir(), "openclaw-config-dir-"));
|
||||
@@ -178,32 +104,6 @@ describe("shortenHomeInString", () => {
|
||||
});
|
||||
});
|
||||
|
||||
describe("resolveJidToE164", () => {
|
||||
it("resolves @lid via lidLookup when mapping file is missing", async () => {
|
||||
const lidLookup = {
|
||||
getPNForLID: vi.fn().mockResolvedValue("777:0@s.whatsapp.net"),
|
||||
};
|
||||
await expect(resolveJidToE164("777@lid", { lidLookup })).resolves.toBe("+777");
|
||||
expect(lidLookup.getPNForLID).toHaveBeenCalledWith("777@lid");
|
||||
});
|
||||
|
||||
it("skips lidLookup for non-lid JIDs", async () => {
|
||||
const lidLookup = {
|
||||
getPNForLID: vi.fn().mockResolvedValue("888:0@s.whatsapp.net"),
|
||||
};
|
||||
await expect(resolveJidToE164("888@s.whatsapp.net", { lidLookup })).resolves.toBe("+888");
|
||||
expect(lidLookup.getPNForLID).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it("returns null when lidLookup throws", async () => {
|
||||
const lidLookup = {
|
||||
getPNForLID: vi.fn().mockRejectedValue(new Error("lookup failed")),
|
||||
};
|
||||
await expect(resolveJidToE164("777@lid", { lidLookup })).resolves.toBeNull();
|
||||
expect(lidLookup.getPNForLID).toHaveBeenCalledWith("777@lid");
|
||||
});
|
||||
});
|
||||
|
||||
describe("resolveUserPath", () => {
|
||||
it("expands ~ to home dir", () => {
|
||||
expect(resolveUserPath("~", {}, () => "/Users/thoffman")).toBe(path.resolve("/Users/thoffman"));
|
||||
|
||||
Reference in New Issue
Block a user