diff --git a/provider/search-aws/src/test/java/org/opengroup/osdu/search/provider/aws/util/AwsCrossTenantUtilsTest.java b/provider/search-aws/src/test/java/org/opengroup/osdu/search/provider/aws/util/AwsCrossTenantUtilsTest.java new file mode 100644 index 0000000000000000000000000000000000000000..9b8e1ab9d9bdfc29376bcc8468b1f2c3d80366e8 --- /dev/null +++ b/provider/search-aws/src/test/java/org/opengroup/osdu/search/provider/aws/util/AwsCrossTenantUtilsTest.java @@ -0,0 +1,68 @@ +package org.opengroup.osdu.search.provider.aws.util; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.*; +import org.mockito.junit.MockitoJUnitRunner; +import org.opengroup.osdu.core.common.exception.BadRequestException; +import org.opengroup.osdu.core.common.model.http.DpsHeaders; +import org.opengroup.osdu.core.common.model.search.*; +import org.opengroup.osdu.core.common.search.ElasticIndexNameResolver; + +import static org.junit.Assert.assertEquals; +import static org.mockito.Mockito.when; + +@RunWith(MockitoJUnitRunner.class) +public class AwsCrossTenantUtilsTest { + + @InjectMocks + AwsCrossTenantUtils awsCrossTenantUtils; + + @Mock + private DpsHeaders dpsHeaders; + + @Mock + private ElasticIndexNameResolver elasticIndexNameResolver; + + @Mock + private Query searchRequest; + + @Test + public void should_return_IndexName_when_partitionIdAndKindMatches() { + String DATA_PARTITION_ID = "tenant1"; + String KIND = "tenant1:*:*:*"; + 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_PartitionIdIndexName_when_searchingAllKinds() { + String DATA_PARTITION_ID = "tenant1"; + String KIND = "*:*:*:*"; + String INDEX = 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); + + assertEquals(INDEX_NAME, awsCrossTenantUtils.getIndexName(searchRequest)); + } + + @Test(expected = BadRequestException.class) + public void should_throw_BadRequestException_when_searchingAcrossTenants() { + String DATA_PARTITION_ID = "tenant1"; + String KIND = "tenant2:*:*:*"; + 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); + + awsCrossTenantUtils.getIndexName(searchRequest); // Should throw an exception. + } +}