diff --git a/server/src/main/java/com/epam/aidial/core/server/controller/ControllerSelector.java b/server/src/main/java/com/epam/aidial/core/server/controller/ControllerSelector.java index 4e244ba2..b037372e 100644 --- a/server/src/main/java/com/epam/aidial/core/server/controller/ControllerSelector.java +++ b/server/src/main/java/com/epam/aidial/core/server/controller/ControllerSelector.java @@ -176,9 +176,9 @@ public class ControllerSelector { ApplicationTypeSchemaController controller = new ApplicationTypeSchemaController(context); String operation = pathMatcher.group(1); return switch (operation) { - case "/schemas" -> controller::handleListSchemas; - case "/meta_schema" -> controller::handleGetMetaSchema; - case "/schema" -> controller::handleGetSchema; + case "schemas" -> controller::handleListSchemas; + case "meta_schema" -> controller::handleGetMetaSchema; + case "schema" -> controller::handleGetSchema; default -> null; }; }); diff --git a/server/src/test/java/com/epam/aidial/core/server/ApplicationTypeSchemaApiTest.java b/server/src/test/java/com/epam/aidial/core/server/ApplicationTypeSchemaApiTest.java new file mode 100644 index 00000000..dab83c05 --- /dev/null +++ b/server/src/test/java/com/epam/aidial/core/server/ApplicationTypeSchemaApiTest.java @@ -0,0 +1,59 @@ +package com.epam.aidial.core.server; + + +import java.util.concurrent.atomic.AtomicReference; + +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import io.vertx.core.http.HttpMethod; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +public class ApplicationTypeSchemaApiTest extends ResourceBaseTest { + + private final ObjectMapper objectMapper = new ObjectMapper(); + + @Test + void testApplicationTypeSchemaList_ok() { + Response response = send(HttpMethod.GET,"/v1/application_type_schemas/schemas",null, null); + + Assertions.assertEquals(200, response.status()); + AtomicReference jsonNode = new AtomicReference<>(); + Assertions.assertDoesNotThrow(() -> jsonNode.set(objectMapper.readTree(response.body()))); + Assertions.assertTrue(jsonNode.get().isArray()); + Assertions.assertFalse(jsonNode.get().isEmpty()); + jsonNode.get().forEach(node -> { + Assertions.assertTrue(node.has("$id")); + Assertions.assertTrue(node.has("dial:applicationTypeEditorUrl")); + Assertions.assertTrue(node.has("dial:applicationTypeDisplayName")); + }); + } + + @Test + void testApplicationTypeSchemaMetaSchema_ok() { + Response response = send(HttpMethod.GET,"/v1/application_type_schemas/meta_schema",null, null); + + Assertions.assertEquals(200, response.status()); + AtomicReference jsonNodeRef = new AtomicReference<>(); + Assertions.assertDoesNotThrow(() -> jsonNodeRef.set(objectMapper.readTree(response.body()))); + JsonNode node = jsonNodeRef.get(); + Assertions.assertTrue(node.isObject()); + Assertions.assertTrue(node.has("$id")); + Assertions.assertTrue(node.has("$schema")); + } + + @Test + void testApplicationTypeSchemaSchema_ok() { + Response response = send(HttpMethod.GET,"/v1/application_type_schemas/schema", + "id=https://mydial.somewhere.com/custom_application_schemas/specific_application_type", null); + + Assertions.assertEquals(200, response.status()); + AtomicReference jsonNodeRef = new AtomicReference<>(); + Assertions.assertDoesNotThrow(() -> jsonNodeRef.set(objectMapper.readTree(response.body()))); + JsonNode node = jsonNodeRef.get(); + Assertions.assertTrue(node.isObject()); + Assertions.assertTrue(node.has("$id")); + Assertions.assertTrue(node.has("$schema")); + } + +}