feat(openapi): FormCenterSchemaClient 走标准 appCode 网关 fallback,application.yml 出厂 base-host 默认内部网关
build / build-push (push) Successful in 1m18s

This commit is contained in:
chenxing
2026-10-22 17:14:06 +08:00
parent 4b4d63e3ba
commit a10f2e054c
3 changed files with 44 additions and 2 deletions
@@ -0,0 +1,41 @@
package com.yunhai.flowcenter.service;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.sun.net.httpserver.HttpServer;
import com.yunhai.platform.openapi.core.*;
import org.junit.jupiter.api.Test;
import java.net.InetSocketAddress;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List;
import static org.junit.jupiter.api.Assertions.*;
class AppCodeFormCenterRoutingTest {
@Test
void realSdkNeedsOnlyGatewayForCatalogAndExactSchema() throws Exception {
List<String> paths = new ArrayList<>();
HttpServer gateway = HttpServer.create(new InetSocketAddress("127.0.0.1", 0), 0);
gateway.createContext("/", exchange -> {
String path = exchange.getRequestURI().getPath(); paths.add(path);
String data = path.endsWith("/schema")
? "{\"formUuid\":\"test-form\",\"version\":3,\"groups\":[],\"audience\":[]}"
: "{\"items\":[],\"total\":0}";
byte[] bytes = ("{\"code\":0,\"data\":" + data + "}").getBytes(StandardCharsets.UTF_8);
exchange.sendResponseHeaders(200, bytes.length);
exchange.getResponseBody().write(bytes); exchange.close();
});
gateway.start();
try {
OpenApiProperties open = new OpenApiProperties();
open.setBaseHost("http://127.0.0.1:" + gateway.getAddress().getPort());
YschOpenCall call = new YschOpenCall(new YschCallProperties(), open, new ObjectMapper(), null);
assertFalse(call.hasTarget("form-center"));
assertEquals(0, new FormCenterCatalogClient(call).listForms(1L, null, null, 1, 20).getTotal());
assertEquals(3, new FormCenterSchemaClient(call, new ObjectMapper())
.fetchSchema(1L, "test-form", 3).get("formVersion"));
assertEquals(java.util.Arrays.asList("/form-center/oapi/form/forms", "/form-center/oapi/form/schema"), paths);
} finally {
gateway.stop(0);
}
}
}