Skip to content
Snippets Groups Projects
Commit 6eb8d362 authored by Morris Estepa's avatar Morris Estepa
Browse files

Merge branch 'aws-integration-merge-estepamo' into 'master'

Fix issue where hyphen in kind name causes search to fail

See merge request !443
parents 3dd3ffc5 4130e1de
No related branches found
No related tags found
1 merge request!443Fix issue where hyphen in kind name causes search to fail
Pipeline #169635 failed
......@@ -52,19 +52,21 @@ public class AwsCrossTenantUtils extends CrossTenantUtils {
builder.append(alias);
}
else {
String index = this.elasticIndexNameResolver.getIndexNameFromKind(kind);
String[] indexArr = index.split("-");
if (indexArr[0].equalsIgnoreCase("*")) {
indexArr[0] = dpsHeaders.getPartitionId();
String[] kindArr = kind.split(":");
if (kindArr[0].equalsIgnoreCase("*")) {
kindArr[0] = dpsHeaders.getPartitionId();
}
else if (indexArr[0].equalsIgnoreCase(dpsHeaders.getPartitionId()) == false) {
else if (kindArr[0].equalsIgnoreCase(dpsHeaders.getPartitionId()) == false) {
throw new BadRequestException("Invalid kind in search request.");
}
builder.append(String.join("-", indexArr));
String newKind = String.join(":", kindArr);
String index = this.elasticIndexNameResolver.getIndexNameFromKind(newKind);
builder.append(index);
}
builder.append(",");
}
builder.append("-.*"); // Exclude Lucene/ElasticSearch internal indices
return builder.toString();
}
}
......@@ -48,6 +48,19 @@ public class AwsCrossTenantUtilsTest {
assertEquals(INDEX_NAME, awsCrossTenantUtils.getIndexName(searchRequest));
}
@Test
public void should_return_IndexNameWithHyphen_when_partitionIdAndKindMatches() {
String DATA_PARTITION_ID = "tenant-1";
String KIND = "tenant-1:*:*:*";
String INDEX = KIND.replace(":", "-");
String INDEX_NAME = String.format("%s,%s", INDEX, "-.*");
when(dpsHeaders.getPartitionId()).thenReturn(DATA_PARTITION_ID);
when(searchRequest.getKind()).thenReturn(KIND);
when(elasticIndexNameResolver.getIndexNameFromKind(KIND)).thenReturn(INDEX);
assertEquals(INDEX_NAME, awsCrossTenantUtils.getIndexName(searchRequest));
}
@Test
public void should_return_alias_when_searchingHundredSameKindsAndKindMatches() {
Integer KIND_COUNT = 300;
......@@ -88,7 +101,7 @@ public class AwsCrossTenantUtilsTest {
String DATA_PARTITION_ID = "tenant1";
String KIND = "*:*:*:*";
String TENANT_KIND = "tenant1:*:*:*";
String INDEX = KIND.replace(":", "-");
String INDEX = TENANT_KIND.replace(":", "-");
List<String> KINDS = Collections.nCopies(KIND_COUNT, KIND);
String ALIAS = String.format("a%d", TENANT_KIND.hashCode());
Map<String, String> ALIAS_MAP = new HashMap<>();
......@@ -111,7 +124,7 @@ public class AwsCrossTenantUtilsTest {
when(dpsHeaders.getPartitionId()).thenReturn(DATA_PARTITION_ID);
when(searchRequest.getKind()).thenReturn(HUNDREDS_KINDS);
when(elasticIndexNameResolver.getIndexNameFromKind(KIND)).thenReturn(INDEX);
when(elasticIndexNameResolver.getIndexNameFromKind(TENANT_KIND)).thenReturn(INDEX);
when(indexAliasService.getIndicesAliases(KINDS)).thenReturn(ALIAS_MAP);
assertEquals(INDEX_NAME, awsCrossTenantUtils.getIndexName(searchRequest));
......@@ -121,11 +134,12 @@ public class AwsCrossTenantUtilsTest {
public void should_return_PartitionIdIndexName_when_searchingAllKinds() {
String DATA_PARTITION_ID = "tenant1";
String KIND = "*:*:*:*";
String INDEX = KIND.replace(":", "-");
String TENANT_KIND = "tenant1:*:*:*";
String INDEX = TENANT_KIND.replace(":", "-");
String INDEX_NAME = String.format("%s%s,%s", DATA_PARTITION_ID, "-*-*-*", "-.*");
when(dpsHeaders.getPartitionId()).thenReturn(DATA_PARTITION_ID);
when(searchRequest.getKind()).thenReturn(KIND);
when(elasticIndexNameResolver.getIndexNameFromKind(KIND)).thenReturn(INDEX);
when(elasticIndexNameResolver.getIndexNameFromKind(TENANT_KIND)).thenReturn(INDEX);
assertEquals(INDEX_NAME, awsCrossTenantUtils.getIndexName(searchRequest));
}
......@@ -138,7 +152,6 @@ public class AwsCrossTenantUtilsTest {
String INDEX_NAME = String.format("%s,%s", INDEX, "-.*");
when(dpsHeaders.getPartitionId()).thenReturn(DATA_PARTITION_ID);
when(searchRequest.getKind()).thenReturn(KIND);
when(elasticIndexNameResolver.getIndexNameFromKind(KIND)).thenReturn(INDEX);
awsCrossTenantUtils.getIndexName(searchRequest); // Should throw an exception.
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment