feat(openapi): FlowCenterClient 切 SDK appCode 寻址(显式>legacy>fallback),application.yml 出厂 base-host 默认内部网关
build / build-push (push) Successful in 1m18s
build / build-push (push) Successful in 1m18s
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
package com.yunhai.svchall.service.impl;
|
||||
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.yunhai.platform.openapi.core.*;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.springframework.test.util.ReflectionTestUtils;
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
class FlowCenterClientRoutingTest {
|
||||
private YschOpenCall call(String gateway) {
|
||||
OpenApiProperties open = new OpenApiProperties();
|
||||
open.setBaseHost(gateway);
|
||||
return new YschOpenCall(new YschCallProperties(), open, new ObjectMapper(), null);
|
||||
}
|
||||
|
||||
@Test
|
||||
void enabledWithoutExplicitTargetUsesSdk() {
|
||||
YschOpenCall call = call("http://gateway:10013");
|
||||
assertFalse(call.hasTarget("flow-center"));
|
||||
FlowCenterClient client = new FlowCenterClient(call, new ObjectMapper(), true, "");
|
||||
assertTrue(client.enabled());
|
||||
assertEquals(true, ReflectionTestUtils.getField(client, "directoryResolved"));
|
||||
assertNull(ReflectionTestUtils.getField(client, "flowSpec"));
|
||||
assertEquals("http://gateway:10013/form-center", call.resolveTarget("form-center").resolveBaseUrl());
|
||||
assertDoesNotThrow(() -> new FormCenterCatalogClient(call));
|
||||
assertDoesNotThrow(() -> new FcSubmissionClient(call));
|
||||
assertDoesNotThrow(() -> new FormSyncClient(call));
|
||||
}
|
||||
|
||||
@Test
|
||||
void explicitThenLegacyThenSdkPriority() {
|
||||
YschCallProperties props = new YschCallProperties();
|
||||
props.getTargets().put("flow-center", TargetSpec.of("http://explicit", "/flow-center"));
|
||||
YschOpenCall explicit = new YschOpenCall(props, new ObjectMapper(), null);
|
||||
FlowCenterClient client = new FlowCenterClient(explicit, new ObjectMapper(), true, "http://legacy/ctx");
|
||||
assertEquals(true, ReflectionTestUtils.getField(client, "directoryResolved"));
|
||||
client = new FlowCenterClient(call("http://gateway"), new ObjectMapper(), true, "http://legacy/ctx");
|
||||
assertEquals(false, ReflectionTestUtils.getField(client, "directoryResolved"));
|
||||
TargetSpec spec = (TargetSpec) ReflectionTestUtils.getField(client, "flowSpec");
|
||||
assertEquals("http://legacy/ctx", spec.resolveBaseUrl());
|
||||
}
|
||||
|
||||
@Test
|
||||
void enabledWithoutResolvableAddressFailsButDisabledDoesNot() {
|
||||
assertThrows(IllegalStateException.class,
|
||||
() -> new FlowCenterClient(call(null), new ObjectMapper(), true, ""));
|
||||
assertThrows(IllegalStateException.class,
|
||||
() -> new FlowCenterClient(call("http://gateway/open-gateway"), new ObjectMapper(), true, ""));
|
||||
assertFalse(new FlowCenterClient(call(null), new ObjectMapper(), false, "").enabled());
|
||||
assertFalse(new FlowCenterClient(call(null), new ObjectMapper(), false, "unused-legacy-value").enabled());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user