mirror of
https://github.com/open-metadata/OpenMetadata.git
synced 2025-11-01 11:09:14 +00:00
add automate exception message for invalid enum value as api request parameter (#12400)
* add exception Message for invalid enum value when enum value is incorrect in api call, this method generates the exactly message as we expect. for example the Include.java in databaseServiceResource.java list() api. * add an example for invalid enum value as unit test for databaseServiceResource class. A unit test example that shows how to use invalidEnumValue() method instead of traditional way i.e. writing plain string. * apply google-formatter * Merge branch 'EsmaeilChitgar-AddExceptionMessageForInvalidEnumValue' of https://github.com/EsmaeilChitgar/OpenMetadata into EsmaeilChitgar-AddExceptionMessageForInvalidEnumValue * fix reported issues in pull request --------- Co-authored-by: Sriharsha Chintalapani <harshach@users.noreply.github.com>
This commit is contained in:
parent
c32ec25ebe
commit
744a3d403f
@ -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<? extends Enum<?>> enumClass) {
|
||||
String className = enumClass.getSimpleName();
|
||||
String classNameWithLowercaseFirstLetter = className.substring(0, 1).toLowerCase() + className.substring(1);
|
||||
|
||||
return invalidEnumValue(enumClass, classNameWithLowercaseFirstLetter);
|
||||
}
|
||||
|
||||
public static String invalidEnumValue(Class<? extends Enum<?>> enumClass, String key) {
|
||||
String enumValues =
|
||||
Arrays.stream(enumClass.getEnumConstants()).map(Object::toString).collect(Collectors.joining(", "));
|
||||
return "query param " + key + " must be one of [" + enumValues + "]";
|
||||
}
|
||||
}
|
||||
|
||||
@ -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<DatabaseService, CreateDatabaseService> {
|
||||
@ -269,6 +273,17 @@ public class DatabaseServiceResourceTest extends EntityResourceTest<DatabaseServ
|
||||
assertEquals(stored.getConnection(), service.getConnection());
|
||||
}
|
||||
|
||||
@Test
|
||||
void get_listDatabaseServicesWithInvalidEnumValue_400(TestInfo test) {
|
||||
Map<String, String> 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<String, String> authHeaders)
|
||||
throws HttpResponseException {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user