You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
92 lines
2.8 KiB
92 lines
2.8 KiB
import { afterEach, describe, expect, it } from "vitest";
|
|
import {
|
|
getFlockLoginUrl,
|
|
hasFlockLoginCredentials,
|
|
isFlockFreshSessionPerQuote,
|
|
isFlockRandomAccountPerQuote,
|
|
shouldSaveFlockStorageState,
|
|
} from "@/lib/flock/env";
|
|
import {
|
|
flockLoginRegistrationBlockedMessage,
|
|
isFlockLoginPage,
|
|
resetFlockLoginSessionFlagForTests,
|
|
} from "@/workers/rpa/flock/login";
|
|
import { shouldRotateFlockSession } from "@/workers/rpa/flock/worker-session";
|
|
|
|
describe("Flock login credentials env", () => {
|
|
const prev = {
|
|
email: process.env.FLOCK_LOGIN_EMAIL,
|
|
password: process.env.FLOCK_LOGIN_PASSWORD,
|
|
fresh: process.env.FLOCK_FRESH_SESSION_PER_QUOTE,
|
|
random: process.env.FLOCK_RANDOM_ACCOUNT_PER_QUOTE,
|
|
loginUrl: process.env.FLOCK_LOGIN_URL,
|
|
};
|
|
|
|
afterEach(() => {
|
|
process.env.FLOCK_LOGIN_EMAIL = prev.email;
|
|
process.env.FLOCK_LOGIN_PASSWORD = prev.password;
|
|
process.env.FLOCK_FRESH_SESSION_PER_QUOTE = prev.fresh;
|
|
process.env.FLOCK_RANDOM_ACCOUNT_PER_QUOTE = prev.random;
|
|
process.env.FLOCK_LOGIN_URL = prev.loginUrl;
|
|
});
|
|
|
|
it("无凭据时 hasCredentials=false", () => {
|
|
delete process.env.FLOCK_LOGIN_EMAIL;
|
|
delete process.env.FLOCK_LOGIN_PASSWORD;
|
|
expect(hasFlockLoginCredentials()).toBe(false);
|
|
});
|
|
|
|
it("成对凭据时开启登录门禁并关闭 fresh/random", () => {
|
|
process.env.FLOCK_LOGIN_EMAIL = "user@example.com";
|
|
process.env.FLOCK_LOGIN_PASSWORD = "secret";
|
|
process.env.FLOCK_FRESH_SESSION_PER_QUOTE = "true";
|
|
process.env.FLOCK_RANDOM_ACCOUNT_PER_QUOTE = "true";
|
|
expect(hasFlockLoginCredentials()).toBe(true);
|
|
expect(isFlockFreshSessionPerQuote()).toBe(false);
|
|
expect(isFlockRandomAccountPerQuote()).toBe(false);
|
|
expect(shouldSaveFlockStorageState()).toBe(true);
|
|
});
|
|
|
|
it("默认登录 URL", () => {
|
|
delete process.env.FLOCK_LOGIN_URL;
|
|
expect(getFlockLoginUrl()).toContain("flockfreight.com/login");
|
|
});
|
|
});
|
|
|
|
describe("isFlockLoginPage", () => {
|
|
it("识别 login URL", () => {
|
|
expect(
|
|
isFlockLoginPage({
|
|
url: () => "https://app.flockfreight.com/login",
|
|
} as never),
|
|
).toBe(true);
|
|
expect(
|
|
isFlockLoginPage({
|
|
url: () => "https://app.flockfreight.com/get-a-quote",
|
|
} as never),
|
|
).toBe(false);
|
|
});
|
|
});
|
|
|
|
describe("login mode session rotation", () => {
|
|
afterEach(() => {
|
|
delete process.env.FLOCK_LOGIN_EMAIL;
|
|
delete process.env.FLOCK_LOGIN_PASSWORD;
|
|
resetFlockLoginSessionFlagForTests();
|
|
});
|
|
|
|
it("有登录凭据时禁止换号", () => {
|
|
process.env.FLOCK_LOGIN_EMAIL = "a@b.com";
|
|
process.env.FLOCK_LOGIN_PASSWORD = "x";
|
|
expect(
|
|
shouldRotateFlockSession(
|
|
"FLOCK_ACCOUNT_REJECTED: We had an issue creating your account",
|
|
),
|
|
).toBe(false);
|
|
});
|
|
|
|
it("注册页阻断文案", () => {
|
|
expect(flockLoginRegistrationBlockedMessage()).toContain("登录凭据");
|
|
});
|
|
});
|