|
|
import { describe, expect, it } from "vitest";
|
|
|
import {
|
|
|
FLOCK_RECORDING_TEST_ACCOUNT,
|
|
|
getFlockQuotesPerEmail,
|
|
|
getFlockTestAccount,
|
|
|
isFlockFreshSessionPerQuote,
|
|
|
isFlockRandomAccountPerQuote,
|
|
|
isFlockWorkerReuseSession,
|
|
|
shouldLoadFlockStorageState,
|
|
|
} from "@/lib/flock/env";
|
|
|
|
|
|
describe("getFlockTestAccount", () => {
|
|
|
it("默认使用录制验证账号", () => {
|
|
|
const prev = {
|
|
|
random: process.env.FLOCK_RANDOM_ACCOUNT_PER_QUOTE,
|
|
|
fresh: process.env.FLOCK_FRESH_SESSION_PER_QUOTE,
|
|
|
email: process.env.FLOCK_TEST_EMAIL,
|
|
|
phone: process.env.FLOCK_TEST_PHONE,
|
|
|
};
|
|
|
delete process.env.FLOCK_RANDOM_ACCOUNT_PER_QUOTE;
|
|
|
delete process.env.FLOCK_FRESH_SESSION_PER_QUOTE;
|
|
|
delete process.env.FLOCK_TEST_EMAIL;
|
|
|
delete process.env.FLOCK_TEST_PHONE;
|
|
|
|
|
|
const account = getFlockTestAccount();
|
|
|
expect(account.email).toBe(FLOCK_RECORDING_TEST_ACCOUNT.email);
|
|
|
expect(account.phone).toBe(FLOCK_RECORDING_TEST_ACCOUNT.phone);
|
|
|
|
|
|
process.env.FLOCK_RANDOM_ACCOUNT_PER_QUOTE = prev.random;
|
|
|
process.env.FLOCK_FRESH_SESSION_PER_QUOTE = prev.fresh;
|
|
|
process.env.FLOCK_TEST_EMAIL = prev.email;
|
|
|
process.env.FLOCK_TEST_PHONE = prev.phone;
|
|
|
});
|
|
|
});
|
|
|
|
|
|
describe("getFlockQuotesPerEmail", () => {
|
|
|
it("未设置时不限次数", () => {
|
|
|
const prev = process.env.FLOCK_QUOTES_PER_EMAIL;
|
|
|
delete process.env.FLOCK_QUOTES_PER_EMAIL;
|
|
|
expect(getFlockQuotesPerEmail()).toBe(Number.POSITIVE_INFINITY);
|
|
|
process.env.FLOCK_QUOTES_PER_EMAIL = prev;
|
|
|
});
|
|
|
|
|
|
it("解析每邮箱查价次数", () => {
|
|
|
const prev = process.env.FLOCK_QUOTES_PER_EMAIL;
|
|
|
process.env.FLOCK_QUOTES_PER_EMAIL = "3";
|
|
|
expect(getFlockQuotesPerEmail()).toBe(3);
|
|
|
process.env.FLOCK_QUOTES_PER_EMAIL = prev;
|
|
|
});
|
|
|
});
|
|
|
|
|
|
describe("isFlockWorkerReuseSession", () => {
|
|
|
it("配置 FLOCK_QUOTES_PER_EMAIL 时默认开启", () => {
|
|
|
const prev = {
|
|
|
perEmail: process.env.FLOCK_QUOTES_PER_EMAIL,
|
|
|
reuse: process.env.FLOCK_WORKER_REUSE_SESSION,
|
|
|
};
|
|
|
process.env.FLOCK_QUOTES_PER_EMAIL = "3";
|
|
|
delete process.env.FLOCK_WORKER_REUSE_SESSION;
|
|
|
expect(isFlockWorkerReuseSession()).toBe(true);
|
|
|
process.env.FLOCK_QUOTES_PER_EMAIL = prev.perEmail;
|
|
|
process.env.FLOCK_WORKER_REUSE_SESSION = prev.reuse;
|
|
|
});
|
|
|
|
|
|
it("显式 false 时关闭", () => {
|
|
|
const prev = {
|
|
|
perEmail: process.env.FLOCK_QUOTES_PER_EMAIL,
|
|
|
reuse: process.env.FLOCK_WORKER_REUSE_SESSION,
|
|
|
};
|
|
|
process.env.FLOCK_QUOTES_PER_EMAIL = "3";
|
|
|
process.env.FLOCK_WORKER_REUSE_SESSION = "false";
|
|
|
expect(isFlockWorkerReuseSession()).toBe(false);
|
|
|
process.env.FLOCK_QUOTES_PER_EMAIL = prev.perEmail;
|
|
|
process.env.FLOCK_WORKER_REUSE_SESSION = prev.reuse;
|
|
|
});
|
|
|
});
|
|
|
|
|
|
describe("flock env defaults (recording mode)", () => {
|
|
|
it("默认不随机账号", () => {
|
|
|
const prev = process.env.FLOCK_RANDOM_ACCOUNT_PER_QUOTE;
|
|
|
delete process.env.FLOCK_RANDOM_ACCOUNT_PER_QUOTE;
|
|
|
delete process.env.FLOCK_FRESH_SESSION_PER_QUOTE;
|
|
|
expect(isFlockRandomAccountPerQuote()).toBe(false);
|
|
|
process.env.FLOCK_RANDOM_ACCOUNT_PER_QUOTE = prev;
|
|
|
});
|
|
|
|
|
|
it("无痕模式不加载 storage", () => {
|
|
|
const prev = {
|
|
|
fresh: process.env.FLOCK_FRESH_SESSION_PER_QUOTE,
|
|
|
load: process.env.FLOCK_LOAD_STORAGE_STATE,
|
|
|
};
|
|
|
process.env.FLOCK_FRESH_SESSION_PER_QUOTE = "true";
|
|
|
delete process.env.FLOCK_LOAD_STORAGE_STATE;
|
|
|
expect(isFlockFreshSessionPerQuote()).toBe(true);
|
|
|
expect(shouldLoadFlockStorageState(true)).toBe(false);
|
|
|
process.env.FLOCK_FRESH_SESSION_PER_QUOTE = prev.fresh;
|
|
|
process.env.FLOCK_LOAD_STORAGE_STATE = prev.load;
|
|
|
});
|
|
|
|
|
|
it("默认加载 storage(若文件存在)", () => {
|
|
|
const prev = {
|
|
|
load: process.env.FLOCK_LOAD_STORAGE_STATE,
|
|
|
fresh: process.env.FLOCK_FRESH_SESSION_PER_QUOTE,
|
|
|
random: process.env.FLOCK_RANDOM_ACCOUNT_PER_QUOTE,
|
|
|
};
|
|
|
delete process.env.FLOCK_LOAD_STORAGE_STATE;
|
|
|
delete process.env.FLOCK_FRESH_SESSION_PER_QUOTE;
|
|
|
delete process.env.FLOCK_RANDOM_ACCOUNT_PER_QUOTE;
|
|
|
expect(shouldLoadFlockStorageState(true)).toBe(true);
|
|
|
expect(shouldLoadFlockStorageState(false)).toBe(false);
|
|
|
process.env.FLOCK_LOAD_STORAGE_STATE = prev.load;
|
|
|
process.env.FLOCK_FRESH_SESSION_PER_QUOTE = prev.fresh;
|
|
|
process.env.FLOCK_RANDOM_ACCOUNT_PER_QUOTE = prev.random;
|
|
|
});
|
|
|
});
|