Fix test case team ownership listing (#16286)

* fix: test case team ownership listing

* fix: moved from forEach to stream.map.collect

* style: ran java linting

---------

Co-authored-by: Ashish Gupta <ashish@getcollate.io>
This commit is contained in:
Teddy 2024-05-17 07:56:44 +02:00 committed by GitHub
parent 263afbeb5c
commit 02d0a3e06e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 33 additions and 7 deletions

View File

@ -16,6 +16,7 @@ import io.swagger.v3.oas.annotations.tags.Tag;
import java.io.IOException;
import java.util.List;
import java.util.UUID;
import java.util.stream.Collectors;
import javax.json.JsonPatch;
import javax.validation.Valid;
import javax.validation.constraints.Max;
@ -42,6 +43,7 @@ import org.openmetadata.schema.EntityInterface;
import org.openmetadata.schema.api.data.RestoreEntity;
import org.openmetadata.schema.api.tests.CreateLogicalTestCases;
import org.openmetadata.schema.api.tests.CreateTestCase;
import org.openmetadata.schema.entity.teams.User;
import org.openmetadata.schema.tests.TestCase;
import org.openmetadata.schema.tests.TestSuite;
import org.openmetadata.schema.tests.type.TestCaseResult;
@ -379,13 +381,24 @@ public class TestCaseResource extends EntityResource<TestCase, TestCaseRepositor
searchListFilter.addQueryParam("domain", domain);
if (!nullOrEmpty(owner)) {
EntityInterface entity;
StringBuffer owners = new StringBuffer();
try {
entity = Entity.getEntityByName(Entity.USER, owner, "", ALL);
User user = (User) Entity.getEntityByName(Entity.USER, owner, "teams", ALL);
owners.append(user.getId().toString());
if (!nullOrEmpty(user.getTeams())) {
owners
.append(",")
.append(
user.getTeams().stream()
.map(t -> t.getId().toString())
.collect(Collectors.joining(",")));
}
} catch (Exception e) {
// If the owner is not a user, then we'll try to geta team
// If the owner is not a user, then we'll try to get team
entity = Entity.getEntityByName(Entity.TEAM, owner, "", ALL);
owners.append(entity.getId().toString());
}
searchListFilter.addQueryParam("owner", entity.getId().toString());
searchListFilter.addQueryParam("owner", owners.toString());
}
if (startTimestamp != null) {

View File

@ -106,7 +106,9 @@ public class SearchListFilter extends Filter<SearchListFilter> {
private String getOwnerCondition() {
String owner = getQueryParam("owner");
if (!nullOrEmpty(owner)) {
return String.format("{\"term\": {\"owner.id\": \"%s\"}}", owner);
String ownerList =
Arrays.stream(owner.split(",")).collect(Collectors.joining("\", \"", "\"", "\""));
return String.format("{\"terms\": {\"owner.id\": [%s]}}", ownerList);
}
return "";
}

View File

@ -742,8 +742,11 @@ public class TestCaseResourceTest extends EntityResourceTest<TestCase, CreateTes
.withParameterValues(
List.of(
new TestCaseParameterValue().withValue("20").withName("missingCountValue")));
if (i % 2 == 0) {
// create 3 test cases with USER1_REF as owner
if (i == 2) {
// create 1 test cases with USER21_TEAM as owner
create.withOwner(TEAM21.getEntityReference());
} else if (i % 2 == 0) {
// create 2 test cases with USER1_REF as owner
create.withOwner(USER2_REF);
}
TestCase testCase = createEntity(create, ADMIN_AUTH_HEADERS);
@ -798,7 +801,15 @@ public class TestCaseResourceTest extends EntityResourceTest<TestCase, CreateTes
queryParams.clear();
queryParams.put("owner", USER2_REF.getName());
allEntities = listEntitiesFromSearch(queryParams, testCasesNum, 0, ADMIN_AUTH_HEADERS);
assertEquals(3, allEntities.getData().size()); // we have 3 test cases with USER2_REF as owner
assertEquals(2, allEntities.getData().size()); // we have 2 test cases with USER2_REF as owner
queryParams.put("owner", USER_TEAM21.getName());
allEntities = listEntitiesFromSearch(queryParams, testCasesNum, 0, ADMIN_AUTH_HEADERS);
assertEquals(
1,
allEntities
.getData()
.size()); // we have 1 test cases with TEAM21 as owner which USER_21 is part of
}
public void putTestCaseResult(String fqn, TestCaseResult data, Map<String, String> authHeaders)