export const EVENT_BRIDGE_RECOVERY_FIXTURE = Object.freeze({ customerCode: 'C10000000', eventId: 'b569c7f6-3493-4a0f-a944-dd42698f183b', initialOutboxStatus: 'PENDING', initialRetryCount: 62, failedTarget: '172.31.198.8:9313', currentOutboxStatus: 'PENDING', currentRetryCount: 81, currentFailureCode: 'A0401', currentFailureMessage: '内部服务令牌无效', currentRequestId: '200edca3-428e-446d-977a-ca98a84dd704', currentTraceId: 'e8e6d620c1cff40caa765e6968f89024', dockerDnsProven: true, }) export const TEST_EVENT_BRIDGE_URLS = Object.freeze({ LASTLEG_EVENT_BRIDGE_URL: 'http://event-bridge-overseas:9312', FIRSTLEG_EVENT_BRIDGE_URL: 'http://event-bridge-cn:9312', }) export const INTERNAL_TOKEN_COHORT_SERVICES = Object.freeze([ 'firstleg', 'event-bridge-cn', 'event-bridge-overseas', 'lastleg-service', ]) export function validTestEventBridgeEnvironment(values = {}) { return Object.entries(TEST_EVENT_BRIDGE_URLS) .every(([key, expected]) => values[key] === expected) && Object.values(values).every((value) => !/^https?:\/\/(?:\d{1,3}\.){3}\d{1,3}(?::|\/|$)/.test(String(value))) } // Callers must provide only a non-secret fingerprint/revision marker, never the token value. export function validInternalTokenCohort(fingerprints = {}) { const values = INTERNAL_TOKEN_COHORT_SERVICES.map((service) => fingerprints[service]) return values.every((value) => typeof value === 'string' && value.length > 0) && new Set(values).size === 1 } export function recoveredEventBridgeFacts(facts = {}) { return facts.firstlegOutboxStatus === 'SENT' && Number(facts.overseasBridgeEventCount) === 1 && Number(facts.lastlegInboxEventCount) === 1 && Number(facts.lastlegOrderCount) === 1 && Number(facts.cnBridgeDuplicateCount) === 0 && Number(facts.manualReplayCount) === 0 && Number(facts.sqlMutationCount) === 0 }