diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/exception/CatalogExceptionMessage.java b/openmetadata-service/src/main/java/org/openmetadata/service/exception/CatalogExceptionMessage.java index 16defe13c59..98e015bb2b0 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/exception/CatalogExceptionMessage.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/exception/CatalogExceptionMessage.java @@ -14,8 +14,10 @@ package org.openmetadata.service.exception; import com.fasterxml.jackson.core.JsonProcessingException; +import java.util.Arrays; import java.util.List; import java.util.UUID; +import java.util.stream.Collectors; import org.openmetadata.schema.api.events.CreateEventSubscription; import org.openmetadata.schema.api.teams.CreateTeam.TeamType; import org.openmetadata.schema.entity.teams.Team; @@ -234,4 +236,17 @@ public final class CatalogExceptionMessage { public static String invalidFieldForTask(String fieldName, TaskType type) { return String.format("The field name %s is not supported for %s task.", fieldName, type); } + + public static String invalidEnumValue(Class> enumClass) { + String className = enumClass.getSimpleName(); + String classNameWithLowercaseFirstLetter = className.substring(0, 1).toLowerCase() + className.substring(1); + + return invalidEnumValue(enumClass, classNameWithLowercaseFirstLetter); + } + + public static String invalidEnumValue(Class> enumClass, String key) { + String enumValues = + Arrays.stream(enumClass.getEnumConstants()).map(Object::toString).collect(Collectors.joining(", ")); + return "query param " + key + " must be one of [" + enumValues + "]"; + } } diff --git a/openmetadata-service/src/test/java/org/openmetadata/service/resources/services/DatabaseServiceResourceTest.java b/openmetadata-service/src/test/java/org/openmetadata/service/resources/services/DatabaseServiceResourceTest.java index fb9c9991454..6b7af297255 100644 --- a/openmetadata-service/src/test/java/org/openmetadata/service/resources/services/DatabaseServiceResourceTest.java +++ b/openmetadata-service/src/test/java/org/openmetadata/service/resources/services/DatabaseServiceResourceTest.java @@ -19,14 +19,18 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertNull; import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.openmetadata.service.exception.CatalogExceptionMessage.invalidEnumValue; import static org.openmetadata.service.util.EntityUtil.fieldAdded; import static org.openmetadata.service.util.EntityUtil.fieldUpdated; import static org.openmetadata.service.util.TestUtils.ADMIN_AUTH_HEADERS; import static org.openmetadata.service.util.TestUtils.INGESTION_BOT_AUTH_HEADERS; import static org.openmetadata.service.util.TestUtils.TEST_AUTH_HEADERS; +import static org.openmetadata.service.util.TestUtils.UpdateType; +import static org.openmetadata.service.util.TestUtils.assertResponse; import static org.openmetadata.service.util.TestUtils.assertResponseContains; import java.io.IOException; +import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.UUID; @@ -54,6 +58,7 @@ import org.openmetadata.schema.services.connections.database.RedshiftConnection; import org.openmetadata.schema.services.connections.database.SnowflakeConnection; import org.openmetadata.schema.services.connections.database.common.basicAuth; import org.openmetadata.schema.type.ChangeDescription; +import org.openmetadata.schema.type.Include; import org.openmetadata.schema.type.Schedule; import org.openmetadata.service.Entity; import org.openmetadata.service.resources.EntityResourceTest; @@ -62,7 +67,6 @@ import org.openmetadata.service.resources.services.ingestionpipelines.IngestionP import org.openmetadata.service.secrets.masker.PasswordEntityMasker; import org.openmetadata.service.util.JsonUtils; import org.openmetadata.service.util.TestUtils; -import org.openmetadata.service.util.TestUtils.UpdateType; @Slf4j public class DatabaseServiceResourceTest extends EntityResourceTest { @@ -269,6 +273,17 @@ public class DatabaseServiceResourceTest extends EntityResourceTest queryParams = new HashMap<>(); + queryParams.put("include", "invalid-enum-value"); + + assertResponse( + () -> listEntities(queryParams, ADMIN_AUTH_HEADERS), BAD_REQUEST, invalidEnumValue(Include.class, "include")); + + assertResponse(() -> listEntities(queryParams, ADMIN_AUTH_HEADERS), BAD_REQUEST, invalidEnumValue(Include.class)); + } + public DatabaseService putTestConnectionResult( UUID serviceId, TestConnectionResult testConnectionResult, Map authHeaders) throws HttpResponseException {