From ede8108a5a1918f9c8de5e5dfbc31dcb33fa7a8f Mon Sep 17 00:00:00 2001 From: Pere Miquel Brull Date: Wed, 12 Feb 2025 14:07:16 +0100 Subject: [PATCH] MINOR - Validate basic suites do have basicEntityRef (#19763) * MINOR - Validate basic suites do have basicEntityRef * add test --- .../service/jdbi3/TestSuiteRepository.java | 4 ++-- .../resources/dqtests/TestSuiteResource.java | 8 ++++++++ .../service/search/indexes/TestCaseIndex.java | 4 +++- .../indexes/TestCaseResolutionStatusIndex.java | 4 +++- .../resources/dqtests/TestSuiteResourceTest.java | 15 +++++++++++++++ 5 files changed, 31 insertions(+), 4 deletions(-) diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/TestSuiteRepository.java b/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/TestSuiteRepository.java index 9f054a1bdb5..eae9503742c 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/TestSuiteRepository.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/TestSuiteRepository.java @@ -127,7 +127,7 @@ public class TestSuiteRepository extends EntityRepository { @Override public void setInheritedFields(TestSuite testSuite, EntityUtil.Fields fields) { - if (Boolean.TRUE.equals(testSuite.getBasic())) { + if (Boolean.TRUE.equals(testSuite.getBasic()) && testSuite.getBasicEntityReference() != null) { Table table = Entity.getEntity( TABLE, testSuite.getBasicEntityReference().getId(), "owners,domain", ALL); @@ -156,7 +156,7 @@ public class TestSuiteRepository extends EntityRepository { @Override public EntityInterface getParentEntity(TestSuite entity, String fields) { - if (entity.getBasic()) { + if (entity.getBasic() && entity.getBasicEntityReference() != null) { return Entity.getEntity(entity.getBasicEntityReference(), fields, ALL); } return null; diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/resources/dqtests/TestSuiteResource.java b/openmetadata-service/src/main/java/org/openmetadata/service/resources/dqtests/TestSuiteResource.java index caf82a06f38..46ed7f31234 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/resources/dqtests/TestSuiteResource.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/resources/dqtests/TestSuiteResource.java @@ -81,6 +81,8 @@ public class TestSuiteResource extends EntityResource"; public static final String NON_BASIC_TEST_SUITE_DELETION_ERROR = "Cannot delete executable test suite. To delete executable test suite, use DELETE /v1/dataQuality/testSuites/basic/<...>"; + public static final String BASIC_TEST_SUITE_WITHOUT_REF_ERROR = + "Cannot create a basic test suite without the BasicEntityReference field informed."; static final String FIELDS = "owners,tests,summary"; static final String SEARCH_FIELDS_EXCLUDE = "table,database,databaseSchema,service"; @@ -566,6 +568,9 @@ public class TestSuiteResource extends EntityResource authRequests = getAuthRequestsForPost(testSuite); return create(uriInfo, securityContext, authRequests, AuthorizationLogic.ANY, testSuite); diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/TestCaseIndex.java b/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/TestCaseIndex.java index 46d67218d74..b08894a0574 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/TestCaseIndex.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/TestCaseIndex.java @@ -70,7 +70,9 @@ public record TestCaseIndex(TestCase testCase) implements SearchIndex { } TestSuite testSuite = Entity.getEntityOrNull(testSuiteEntityReference, "", Include.ALL); EntityReference entityReference = testSuite.getBasicEntityReference(); - TestSuiteIndex.addTestSuiteParentEntityRelations(entityReference, doc); + if (entityReference != null) { + TestSuiteIndex.addTestSuiteParentEntityRelations(entityReference, doc); + } } public static Map getFields() { diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/TestCaseResolutionStatusIndex.java b/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/TestCaseResolutionStatusIndex.java index b63d3940db8..56de9830049 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/TestCaseResolutionStatusIndex.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/search/indexes/TestCaseResolutionStatusIndex.java @@ -65,7 +65,9 @@ public record TestCaseResolutionStatusIndex(TestCaseResolutionStatus testCaseRes TestSuite testSuite = Entity.getEntityOrNull(testCase.getTestSuite(), "", Include.ALL); if (testSuite == null) return; doc.put("testSuite", testSuite.getEntityReference()); - TestSuiteIndex.addTestSuiteParentEntityRelations(testSuite.getBasicEntityReference(), doc); + if (testSuite.getBasicEntityReference() != null) { + TestSuiteIndex.addTestSuiteParentEntityRelations(testSuite.getBasicEntityReference(), doc); + } } public static Map getFields() { diff --git a/openmetadata-service/src/test/java/org/openmetadata/service/resources/dqtests/TestSuiteResourceTest.java b/openmetadata-service/src/test/java/org/openmetadata/service/resources/dqtests/TestSuiteResourceTest.java index 3289b67bf21..9e82ec55f73 100644 --- a/openmetadata-service/src/test/java/org/openmetadata/service/resources/dqtests/TestSuiteResourceTest.java +++ b/openmetadata-service/src/test/java/org/openmetadata/service/resources/dqtests/TestSuiteResourceTest.java @@ -182,6 +182,15 @@ public class TestSuiteResourceTest extends EntityResourceTest createBasicEmptySuite(createTestSuite, ADMIN_AUTH_HEADERS), + BAD_REQUEST, + "Cannot create a basic test suite without the BasicEntityReference field informed."); + } + @Test void list_testSuitesIncludeEmpty_200(TestInfo test) throws IOException { List testSuites = new ArrayList<>(); @@ -834,6 +843,12 @@ public class TestSuiteResourceTest extends EntityResourceTest authHeaders) throws IOException { + WebTarget target = getResource("dataQuality/testSuites/basic"); + return TestUtils.post(target, createTestSuite, TestSuite.class, authHeaders); + } + public void addTestCasesToLogicalTestSuite(TestSuite testSuite, List testCaseIds) throws IOException { WebTarget target = getResource("dataQuality/testCases/logicalTestCases");