diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/TestCaseRepository.java b/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/TestCaseRepository.java index a897fba87a5..f760d9f8fe1 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/TestCaseRepository.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/TestCaseRepository.java @@ -575,6 +575,12 @@ public class TestCaseRepository extends EntityRepository { + " e.g. <#E::table::{entityFqn}::columns::{columnName}>", entityLink.getFieldName())); } + + // Validate that the referenced column actually exists in the table + if (entityLink.getArrayFieldName() != null) { + Table table = Entity.getEntity(entityLink, "columns", ALL); + validateColumn(table, entityLink.getArrayFieldName()); + } } } diff --git a/openmetadata-service/src/test/java/org/openmetadata/service/resources/dqtests/TestCaseResourceTest.java b/openmetadata-service/src/test/java/org/openmetadata/service/resources/dqtests/TestCaseResourceTest.java index d2f69bca1f4..df4032f7ab0 100644 --- a/openmetadata-service/src/test/java/org/openmetadata/service/resources/dqtests/TestCaseResourceTest.java +++ b/openmetadata-service/src/test/java/org/openmetadata/service/resources/dqtests/TestCaseResourceTest.java @@ -531,6 +531,38 @@ public class TestCaseResourceTest extends EntityResourceTest", + TEST_TABLE1.getFullyQualifiedName(), "nonExistentColumn"); + CreateTestCase create = + createRequest(test) + .withTestDefinition(TEST_DEFINITION2.getFullyQualifiedName()) + .withEntityLink(invalidColumnLink); + + assertResponseContains( + () -> createAndCheckEntity(create, ADMIN_AUTH_HEADERS), + BAD_REQUEST, + "Invalid column name nonExistentColumn"); + } + + @Test + void post_testWithWrongCaseColumnName_4xx(TestInfo test) { + String wrongCaseColumnLink = + String.format("<#E::table::%s::columns::%s>", TEST_TABLE1.getFullyQualifiedName(), "C1"); + CreateTestCase create = + createRequest(test) + .withTestDefinition(TEST_DEFINITION2.getFullyQualifiedName()) + .withEntityLink(wrongCaseColumnLink); + + assertResponseContains( + () -> createAndCheckEntity(create, ADMIN_AUTH_HEADERS), + BAD_REQUEST, + "Invalid column name C1"); + } + @Test void createUpdateDelete_tests_200(TestInfo test) throws IOException { // Create a test case diff --git a/openmetadata-service/src/test/java/org/openmetadata/service/resources/lineage/LineageResourceTest.java b/openmetadata-service/src/test/java/org/openmetadata/service/resources/lineage/LineageResourceTest.java index e59533a87f1..ce07f6a1858 100644 --- a/openmetadata-service/src/test/java/org/openmetadata/service/resources/lineage/LineageResourceTest.java +++ b/openmetadata-service/src/test/java/org/openmetadata/service/resources/lineage/LineageResourceTest.java @@ -520,10 +520,16 @@ public class LineageResourceTest extends OpenMetadataApplicationTest { MessageParser.EntityLink TABLE4_COLUMN_LINK = MessageParser.EntityLink.parse( - String.format("<#E::table::%s::columns::c1>", TABLES.get(4).getFullyQualifiedName())); + String.format( + "<#E::table::%s::columns::%s>", + TABLES.get(4).getFullyQualifiedName(), + TABLES.get(4).getColumns().get(0).getName())); MessageParser.EntityLink TABLE6_COLUMN_LINK = MessageParser.EntityLink.parse( - String.format("<#E::table::%s::columns::c1>", TABLES.get(6).getFullyQualifiedName())); + String.format( + "<#E::table::%s::columns::%s>", + TABLES.get(6).getFullyQualifiedName(), + TABLES.get(6).getColumns().get(0).getName())); CreateTestCase create4 = testCaseResourceTest.createRequest(test); CreateTestCase create6 = testCaseResourceTest.createRequest(test, 2); create4