50 lines
1.9 KiB
JavaScript
50 lines
1.9 KiB
JavaScript
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
|
|
}
|