fix: hash name of test suite + append (#12125)

* fix: hash name of test suite + append

* fix: ran java linting

---------

Co-authored-by: Sriharsha Chintalapani <harshach@users.noreply.github.com>
This commit is contained in:
Teddy 2023-06-26 04:14:34 +02:00 committed by GitHub
parent a243b78dd8
commit efec8a1019
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 49 additions and 6 deletions

View File

@ -691,6 +691,10 @@ public class TestCaseResource extends EntityResource<TestCase, TestCaseRepositor
}
List<UUID> testCaseIds = createLogicalTestCases.getTestCaseIds();
if (testCaseIds == null || testCaseIds.isEmpty()) {
return new RestUtil.PutResponse<>(Response.Status.OK, testSuite, RestUtil.ENTITY_NO_CHANGE).toResponse();
}
int existingTestCaseCount = repository.getTestCaseCount(testCaseIds);
if (existingTestCaseCount != testCaseIds.size()) {
throw new IllegalArgumentException("You are trying to add one or more test cases that do not exist.");

View File

@ -52,6 +52,7 @@ import org.openmetadata.service.resources.Collection;
import org.openmetadata.service.resources.EntityResource;
import org.openmetadata.service.security.Authorizer;
import org.openmetadata.service.security.policyevaluator.OperationContext;
import org.openmetadata.service.util.FullyQualifiedName;
import org.openmetadata.service.util.RestUtil;
import org.openmetadata.service.util.ResultList;
@ -297,6 +298,7 @@ public class TestSuiteResource extends EntityResource<TestSuite, TestSuiteReposi
Entity.getEntityByName(Entity.TABLE, create.getExecutableEntityReference(), null, null); // check if entity exists
TestSuite testSuite = getTestSuite(create, securityContext.getUserPrincipal().getName());
testSuite.setExecutable(true);
testSuite = setExecutableTestSuiteName(testSuite);
return create(uriInfo, securityContext, testSuite);
}
@ -538,6 +540,16 @@ public class TestSuiteResource extends EntityResource<TestSuite, TestSuiteReposi
return testSuite;
}
private TestSuite setExecutableTestSuiteName(TestSuite testSuite) {
if (!testSuite.getExecutable()) {
return testSuite;
}
String name = testSuite.getName();
String hashedName = FullyQualifiedName.buildHash(name + ".testSuite");
return testSuite.withDisplayName(name).withName(hashedName);
}
@Override
public TestSuite getByNameInternal(
UriInfo uriInfo, SecurityContext securityContext, String name, String fieldsParam, Include include)

View File

@ -156,13 +156,13 @@ public class TestCaseResourceTest extends EntityResourceTest<TestCase, CreateTes
TestSuiteResourceTest testSuiteResourceTest = new TestSuiteResourceTest();
CreateTestSuite createTestSuite =
testSuiteResourceTest.createRequest(test).withName(TEST_TABLE1.getFullyQualifiedName());
testSuiteResourceTest.createExecutableTestSuite(createTestSuite, ADMIN_AUTH_HEADERS);
TestSuite testSuite = testSuiteResourceTest.createExecutableTestSuite(createTestSuite, ADMIN_AUTH_HEADERS);
create.withEntityLink(INVALID_LINK1).withTestSuite(TEST_TABLE1.getFullyQualifiedName());
create.withEntityLink(INVALID_LINK1).withTestSuite(testSuite.getFullyQualifiedName());
assertResponseContains(
() -> createAndCheckEntity(create, ADMIN_AUTH_HEADERS), BAD_REQUEST, ENTITY_LINK_MATCH_ERROR);
create.withEntityLink(INVALID_LINK2).withTestSuite(TEST_TABLE1.getFullyQualifiedName());
create.withEntityLink(INVALID_LINK2).withTestSuite(testSuite.getFullyQualifiedName());
assertResponseContains(
() -> createAndCheckEntity(create, ADMIN_AUTH_HEADERS), NOT_FOUND, "table instance for non-existent not found");
@ -176,7 +176,7 @@ public class TestCaseResourceTest extends EntityResourceTest<TestCase, CreateTes
CreateTestCase create2 = createRequest(test);
create2
.withEntityLink(TABLE_LINK)
.withTestSuite(TEST_SUITE1.getFullyQualifiedName())
.withTestSuite(testSuite.getFullyQualifiedName())
.withTestDefinition(TEST_SUITE1.getFullyQualifiedName());
assertResponseContains(
() -> createAndCheckEntity(create2, ADMIN_AUTH_HEADERS),
@ -607,14 +607,41 @@ public class TestCaseResourceTest extends EntityResourceTest<TestCase, CreateTes
}
@Test
public void delete_test_case_from_logical_test_suite(TestInfo test) throws IOException {
public void add_EmptyTestCaseToLogicalTestSuite_200(TestInfo test) throws IOException {
TestSuiteResourceTest testSuiteResourceTest = new TestSuiteResourceTest();
// Create a logical Test Suite
CreateTestSuite createLogicalTestSuite = testSuiteResourceTest.createRequest(test);
TestSuite logicalTestSuite = testSuiteResourceTest.createEntity(createLogicalTestSuite, ADMIN_AUTH_HEADERS);
testSuiteResourceTest.addTestCasesToLogicalTestSuite(logicalTestSuite, new ArrayList<>());
}
@Test
public void delete_testCaseFromLogicalTestSuite(TestInfo test) throws IOException {
TestSuiteResourceTest testSuiteResourceTest = new TestSuiteResourceTest();
// Create a logical Test Suite
CreateTestSuite createLogicalTestSuite = testSuiteResourceTest.createRequest(test);
TestSuite logicalTestSuite = testSuiteResourceTest.createEntity(createLogicalTestSuite, ADMIN_AUTH_HEADERS);
// Create an executable test suite
TableResourceTest tableResourceTest = new TableResourceTest();
CreateTable tableReq =
tableResourceTest
.createRequest(test)
.withName(test.getDisplayName())
.withDatabaseSchema(DATABASE_SCHEMA.getFullyQualifiedName())
.withOwner(USER1_REF)
.withColumns(
List.of(
new Column()
.withName(C1)
.withDisplayName("c1")
.withDataType(ColumnDataType.VARCHAR)
.withDataLength(10)))
.withOwner(USER1_REF);
Table table = tableResourceTest.createAndCheckEntity(tableReq, ADMIN_AUTH_HEADERS);
CreateTestSuite createExecutableTestSuite = testSuiteResourceTest.createRequest(table.getFullyQualifiedName());
TestSuite executableTestSuite =
testSuiteResourceTest.getEntityByName(TEST_TABLE1.getFullyQualifiedName(), "*", ADMIN_AUTH_HEADERS);
testSuiteResourceTest.createExecutableTestSuite(createExecutableTestSuite, ADMIN_AUTH_HEADERS);
List<TestCase> testCases = new ArrayList<TestCase>();