/**
* Licensed to the Austrian Association for Software Tool Integration (AASTI)
* under one or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information regarding copyright
* ownership. The AASTI licenses this file to you under the Apache License,
* Version 2.0 (the "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.openengsb.core.console.internal.util;
import static org.junit.Assert.assertTrue;
import static org.mockito.Matchers.any;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import org.junit.Before;
import org.junit.Test;
import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer;
import org.openengsb.core.api.ConnectorManager;
import org.openengsb.core.api.Domain;
import org.openengsb.core.api.DomainProvider;
import org.openengsb.core.api.WiringService;
import org.openengsb.core.api.descriptor.AttributeDefinition;
import org.openengsb.core.api.l10n.LocalizableString;
import org.openengsb.core.test.NullDomain;
import org.openengsb.core.test.NullDomainImpl;
import org.openengsb.core.util.DefaultOsgiUtilsService;
import org.osgi.framework.Constants;
import org.osgi.framework.ServiceReference;
public class ServicesHelperTest {
private ServicesHelper serviceHelper;
private DefaultOsgiUtilsService osgiServiceMock;
private ConnectorManager connectorManagerMock;
@Before
public void init() {
osgiServiceMock = mock(DefaultOsgiUtilsService.class);
final List<DomainProvider> domainProviders = new ArrayList<DomainProvider>();
final List<Domain> domainEndpoints = new ArrayList<Domain>();
Domain domainEndpoint = new NullDomainImpl("id");
domainEndpoints.add(domainEndpoint);
DomainProvider domainProviderMock = mock(DomainProvider.class);
when(domainProviderMock.getDomainInterface()).thenAnswer(new Answer<Class<? extends Domain>>() {
@Override
public Class<? extends Domain> answer(InvocationOnMock invocationOnMock) throws Throwable {
return NullDomain.class;
}
});
LocalizableString descriptionMock = mock(LocalizableString.class);
LocalizableString nameDescritptionMock = mock(LocalizableString.class);
when(descriptionMock.getString(any(Locale.class))).thenReturn("Dummy description");
when(nameDescritptionMock.getString(any(Locale.class))).thenReturn("Dummy Name");
when(domainProviderMock.getDescription()).thenReturn(descriptionMock);
when(domainProviderMock.getName()).thenReturn(nameDescritptionMock);
domainProviders.add(domainProviderMock);
when(osgiServiceMock.listServices(DomainProvider.class)).thenAnswer(new Answer<List<DomainProvider>>() {
@Override
public List<DomainProvider> answer(InvocationOnMock invocationOnMock) throws Throwable {
return domainProviders;
}
});
final List<ServiceReference> serviceReferences = new ArrayList<ServiceReference>();
ServiceReference serviceReferencesMock = mock(ServiceReference.class);
serviceReferences.add(serviceReferencesMock);
when(serviceReferencesMock.getProperty(Constants.SERVICE_PID)).thenReturn("dummyId");
when(osgiServiceMock.listServiceReferences(Domain.class)).thenAnswer(new Answer<List<ServiceReference>>() {
@Override
public List<ServiceReference> answer(InvocationOnMock invocationOnMock) throws Throwable {
return serviceReferences;
}
});
WiringService wiringServiceMock = mock(WiringService.class);
when(osgiServiceMock.getService(WiringService.class)).thenReturn(wiringServiceMock);
when(wiringServiceMock.getDomainEndpoints(NullDomain.class, "*")).thenAnswer(new Answer<List<? extends
Domain>>() {
@Override
public List<? extends Domain> answer(InvocationOnMock invocationOnMock) throws Throwable {
return domainEndpoints;
}
});
connectorManagerMock = mock(ConnectorManager.class);
when(osgiServiceMock.getService(ConnectorManager.class)).thenAnswer(new Answer<ConnectorManager>() {
@Override
public ConnectorManager answer(InvocationOnMock invocationOnMock) throws Throwable {
return connectorManagerMock;
}
});
serviceHelper = new ServicesHelper();
serviceHelper.setOsgiUtilsService(osgiServiceMock);
}
@Test
public void testGetRunningServiceIds_shouldReturnTheRunningServiceIds() throws Exception {
List<String> runningServiceIds = serviceHelper.getRunningServiceIds();
assertTrue(runningServiceIds.contains("dummyId"));
}
@Test
public void testGetDomainProviderNames_shouldReturnProviderNames() throws Exception {
List<String> domainProviderNames = serviceHelper.getDomainProviderNames();
assertTrue(domainProviderNames.contains("Dummy Name"));
}
@Test
public void testGetConnectorAttributes_shouldReturnConnectorAttributes() throws Exception {
//get attributes from user but without reading from the input
Map<String, String> attributes = new HashMap<String, String>();
attributes.put("attr1", "val1");
attributes.put("attr2", "val2");
AttributeDefinition atr1 = createAttributeMock("attr1", "1");
AttributeDefinition atr2 = createAttributeMock("attr2", "2");
List<AttributeDefinition> attributeDefinitions = new ArrayList<AttributeDefinition>();
attributeDefinitions.add(atr1);
attributeDefinitions.add(atr2);
Map<String, String> connectorAttributes =
serviceHelper.getConnectorAttributes(attributeDefinitions, attributes);
assertTrue(connectorAttributes.get("name1").equals("val1"));
assertTrue(connectorAttributes.get("name2").equals("val2"));
}
private AttributeDefinition createAttributeMock(String attr1, final String id) {
AttributeDefinition atr2 = mock(AttributeDefinition.class);
when(atr2.getId()).thenReturn(attr1);
when(atr2.getName()).thenAnswer(new Answer<LocalizableString>() {
@Override
public LocalizableString answer(InvocationOnMock invocationOnMock) throws Throwable {
LocalizableString nameLocalizerMock = mock(LocalizableString.class);
when(nameLocalizerMock.getString(any(Locale.class))).thenReturn("name" + id);
return nameLocalizerMock;
}
});
when(atr2.getDefaultValue()).thenAnswer(new Answer<LocalizableString>() {
@Override
public LocalizableString answer(InvocationOnMock invocationOnMock) throws Throwable {
LocalizableString nameLocalizerMock = mock(LocalizableString.class);
when(nameLocalizerMock.getString(any(Locale.class))).thenReturn("defaultValue" + id);
return nameLocalizerMock;
}
});
when(atr2.getDescription()).thenAnswer(new Answer<LocalizableString>() {
@Override
public LocalizableString answer(InvocationOnMock invocationOnMock) throws Throwable {
LocalizableString nameLocalizerMock = mock(LocalizableString.class);
when(nameLocalizerMock.getString(any(Locale.class))).thenReturn("description" + id);
return nameLocalizerMock;
}
});
return atr2;
}
}