fix: 回调注册补 basePath(从回调 URL 推导接收方 context-path)
build / build-push (push) Successful in 46s

部署带 ctx(/svc-hall)时 flow-center 按整路径签名与 FlowCallbackVerifyFilter
剥 ctx 后对不上 → 注册探活 401 → service_flow_reg 缺失 → 办件状态事件全丢。
本地裸地址(无 ctx)推导为空串,行为不变。新增 FlowCenterClientCallbackBasePathTest。
This commit is contained in:
chenxing
2026-09-16 02:08:55 +08:00
parent 850a70d4f7
commit dedb4aa436
2 changed files with 69 additions and 0 deletions
@@ -0,0 +1,38 @@
package com.yunhai.svchall.service.impl;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;
/**
* 回调注册 basePath 推导契约:接收方 context-path 从回调 URL path 段去掉尾部
* /callback/flow 推导(部署带 ctx=签名对齐关键;本地裸地址=空串保持旧形态)。
* 2026-09-16 修复:注册漏带 basePath,flow-center 推送按整路径签名 →
* FlowCallbackVerifyFilter 剥 ctx 后对不上 → 401(本地无 ctx 掩盖)。
*/
class FlowCenterClientCallbackBasePathTest {
@Test
void derive_withContextPath() {
assertEquals("/svc-hall",
FlowCenterClient.deriveCallbackBasePath("http://svc-hall-service:10007/svc-hall/callback/flow"));
}
@Test
void derive_bareLocalAddressIsEmpty() {
assertEquals("", FlowCenterClient.deriveCallbackBasePath("http://localhost:8086/callback/flow"));
}
@Test
void derive_gatewayForm() {
assertEquals("/svc-hall",
FlowCenterClient.deriveCallbackBasePath("http://base.yunhaixingtong.com/svc-hall/callback/flow"));
}
@Test
void derive_malformedOrNullSafe() {
assertEquals("", FlowCenterClient.deriveCallbackBasePath(null));
assertEquals("", FlowCenterClient.deriveCallbackBasePath(""));
assertEquals("", FlowCenterClient.deriveCallbackBasePath("::::"));
}
}