/* * Copyright 2015 Hewlett-Packard Development Company, L.P. * Licensed under the MIT License (the "License"); you may not use this file except in compliance with the License. */ package com.hp.autonomy.frontend.find.idol.configuration; import com.autonomy.aci.client.transport.AciServerDetails; import com.hp.autonomy.frontend.configuration.ConfigException; import com.hp.autonomy.frontend.configuration.authentication.CommunityAuthentication; import com.hp.autonomy.frontend.configuration.server.ProductType; import com.hp.autonomy.frontend.configuration.server.ServerConfig; import com.hp.autonomy.frontend.find.core.configuration.SavedSearchConfig; import com.hp.autonomy.frontend.find.core.configuration.TrendingConfiguration; import com.hp.autonomy.frontend.find.core.configuration.export.ExportConfig; import com.hp.autonomy.searchcomponents.idol.configuration.QueryManipulation; import com.hp.autonomy.searchcomponents.idol.view.configuration.ViewConfig; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.mockito.Mockito.*; @RunWith(MockitoJUnitRunner.class) public class IdolFindConfigTest { @Mock private ServerConfig serverConfig; @Mock private CommunityAuthentication communityAuthentication; @Mock private ExportConfig export; @Mock private QueryManipulation queryManipulation; @Mock private SavedSearchConfig savedSearchConfig; @Mock private ViewConfig viewConfig; @Mock private TrendingConfiguration trending; private IdolFindConfig idolFindConfig; @Before public void setUp() { idolFindConfig = IdolFindConfig.builder() .content(serverConfig) .login(communityAuthentication) .queryManipulation(queryManipulation) .savedSearchConfig(savedSearchConfig) .trending(trending) .view(viewConfig) .export(export) .build(); } @Test public void validateGoodConfig() throws ConfigException { idolFindConfig.basicValidate(null); } @Test(expected = ConfigException.class) public void validateBadConfig() throws ConfigException { doThrow(new ConfigException("QMS", "Bad Config")).when(queryManipulation).basicValidate(anyString()); idolFindConfig.basicValidate(null); } @Test public void merge() { when(serverConfig.merge(any(ServerConfig.class))).thenReturn(serverConfig); when(communityAuthentication.merge(any(CommunityAuthentication.class))).thenReturn(communityAuthentication); when(queryManipulation.merge(any(QueryManipulation.class))).thenReturn(queryManipulation); when(savedSearchConfig.merge(any(SavedSearchConfig.class))).thenReturn(savedSearchConfig); when(viewConfig.merge(any(ViewConfig.class))).thenReturn(viewConfig); when(export.merge(any(ExportConfig.class))).thenReturn(export); when(trending.merge(any(TrendingConfiguration.class))).thenReturn(trending); final IdolFindConfig defaults = IdolFindConfig.builder().content(mock(ServerConfig.class)).build(); final IdolFindConfig mergedConfig = idolFindConfig.merge(defaults); assertEquals(serverConfig, mergedConfig.getContent()); assertEquals(communityAuthentication, mergedConfig.getLogin()); assertEquals(queryManipulation, mergedConfig.getQueryManipulation()); assertEquals(savedSearchConfig, mergedConfig.getSavedSearchConfig()); assertEquals(viewConfig, mergedConfig.getViewConfig()); assertEquals(export, mergedConfig.getExport()); assertEquals(trending, mergedConfig.getTrending()); assertEquals(idolFindConfig, mergedConfig); } @Test public void mergeWithNoDefaults() { assertNotNull(idolFindConfig.merge(null)); } @Test public void getCommunityDetails() { final ServerConfig community = mock(ServerConfig.class); when(community.toAciServerDetails()).thenReturn(mock(AciServerDetails.class)); when(communityAuthentication.getCommunity()).thenReturn(community); assertNotNull(idolFindConfig.getCommunityDetails()); } @Test public void getContentAciServerDetails() { when(serverConfig.toAciServerDetails()).thenReturn(mock(AciServerDetails.class)); assertNotNull(idolFindConfig.getContentAciServerDetails()); } @Test public void getAuthentication() { assertEquals(communityAuthentication, idolFindConfig.getAuthentication()); } @Test public void withoutDefaultLogin() { idolFindConfig.withoutDefaultLogin(); verify(communityAuthentication).withoutDefaultLogin(); } @Test public void generateDefaultLogin() { idolFindConfig.generateDefaultLogin(); verify(communityAuthentication).generateDefaultLogin(); } @Test public void withHashedPasswords() { assertEquals(idolFindConfig, idolFindConfig.withHashedPasswords()); } @Test public void lookupComponentNameByHostAndPort() { when(communityAuthentication.getMethod()).thenReturn("default"); final String host = "localhost"; when(serverConfig.getHost()).thenReturn(host); final int port = 1234; when(serverConfig.getPort()).thenReturn(port); final int servicePort = 5678; when(serverConfig.getServicePort()).thenReturn(servicePort); assertEquals(ProductType.AXE.getFriendlyName(), idolFindConfig.lookupComponentNameByHostAndPort(host, port)); assertEquals(ProductType.AXE.getFriendlyName(), idolFindConfig.lookupComponentNameByHostAndPort(host, servicePort)); } }