1

Note client is RestHightLevelClient,

@Override
public void createAlias(final String aliasName, final String indexName, final boolean writable)
        throws IOException {
    IndicesAliasesRequest request = new IndicesAliasesRequest(); 
    AliasActions aliasAction = new AliasActions(AliasActions.Type.ADD).index(indexName)
          .alias(aliasName);
    if (writable) {
       aliasAction.writeIndex(true);
    }
    request.addAliasAction(aliasAction); 
    AcknowledgedResponse response = client.indices().updateAliases(request, RequestOptions.DEFAULT);
}

I tried writing test case for this :

@Test
void testCreateAlias() throws IOException {
    AcknowledgedResponse response = AcknowledgedResponse.of(true);
    when(client.indices().updateAliases(Mockito.mock(IndicesAliasesRequest.class), RequestOptions.DEFAULT))
            .thenReturn(response);
    searchManagerService.createAlias("test", "test_idx", true);
}

ERROR : client.indices() is null,

How to resolve this ?

1 Answers1

0

Mock client.indices() to return a mocked instance of IndicesClient. Then mock that IndicesClient updateAliases method to return response.

var mockedIndicesClient = Mockito.mock(IndicesClient.class);
when(client.indices()).thenReturn(mockedIndicesClient);
when(mockedIndicesClient.updateAliases(Mockito.mock(IndicesAliasesRequest.class), RequestOptions.DEFAULT)).thenReturn(response);

Also I believe you want to use matchers in the last line. any(IndicesAliasesRequest.class) instead of Mockito.mock:

when(mockedIndicesClient.updateAliases(any(IndicesAliasesRequest.class), RequestOptions.DEFAULT)).thenReturn(response);