Files
geo/apps/desktop-client/src/main/platform-auth-adapters.test.ts
T
root 290da7cd50 feat(publish): add seven publish adapters for new media platforms
Wire sohuhao, wangyihao, juejin, smzdm, weixin-gzh, zol, and dongchedi
into the publish runtime: each ships its own publish protocol and
auth-failure classifier (login/token/challenge codes) plus registry
entries in selectPublishAdapter and the auth adapter map. Smzdm bind
detection now triple-falls-back across page-context fetch, session
fetch, cookie fetch, and a final cookie-derived account so the
nickname-less guest profile still resolves to a stable platform UID.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-27 00:57:37 +08:00

121 lines
2.9 KiB
TypeScript

import { beforeAll, describe, expect, it, vi } from "vitest";
vi.mock("./account-binder", () => ({
probePublishAccountSession: vi.fn(),
silentRefreshPublishAccountSession: vi.fn(),
}));
let getPlatformAdapter: typeof import("./platform-auth-adapters").getPlatformAdapter;
beforeAll(async () => {
({ getPlatformAdapter } = await import("./platform-auth-adapters"));
});
describe("platform auth adapters", () => {
it("classifies Wenxin environment abnormal messages as risk control", () => {
const adapter = getPlatformAdapter("wenxin");
expect(
adapter.classifyFailure({
message: "当前访问环境存在异常,请更换浏览器再尝试提问",
}),
).toBe("risk_control");
});
it("classifies Qiehao missing cookie as auth failure", () => {
const adapter = getPlatformAdapter("qiehao");
expect(
adapter.classifyFailure({
error: {
code: "qiehao_cookie_missing",
},
}),
).toBe("auth_failure");
});
it("classifies Bilibili missing csrf as auth failure", () => {
const adapter = getPlatformAdapter("bilibili");
expect(
adapter.classifyFailure({
error: {
code: "bilibili_csrf_missing",
},
}),
).toBe("auth_failure");
});
it("classifies Juejin missing login as auth failure", () => {
const adapter = getPlatformAdapter("juejin");
expect(
adapter.classifyFailure({
error: {
code: "juejin_not_logged_in",
},
}),
).toBe("auth_failure");
});
it("classifies Sohuhao missing login as auth failure", () => {
const adapter = getPlatformAdapter("sohuhao");
expect(
adapter.classifyFailure({
error: {
code: "sohuhao_not_logged_in",
},
}),
).toBe("auth_failure");
});
it("classifies Wangyihao missing token as auth failure", () => {
const adapter = getPlatformAdapter("wangyihao");
expect(
adapter.classifyFailure({
error: {
code: "wangyihao_token_missing",
},
}),
).toBe("auth_failure");
});
it("classifies Weixin GZH verification as challenge", () => {
const adapter = getPlatformAdapter("weixin_gzh");
expect(
adapter.classifyFailure({
error: {
code: "weixin_gzh_challenge_required",
},
}),
).toBe("challenge");
});
it("classifies ZOL missing login as auth failure", () => {
const adapter = getPlatformAdapter("zol");
expect(
adapter.classifyFailure({
error: {
code: "zol_not_logged_in",
},
}),
).toBe("auth_failure");
});
it("classifies Dongchedi platform verification as challenge", () => {
const adapter = getPlatformAdapter("dongchedi");
expect(
adapter.classifyFailure({
error: {
code: "dongchedi_challenge_required",
},
}),
).toBe("challenge");
});
});