/*
* Copyright (C) 2006-2016 DLR, Germany
*
* All rights reserved
*
* http://www.rcenvironment.de/
*/
package de.rcenvironment.core.login.internal;
import java.security.cert.X509Certificate;
import junit.framework.TestCase;
import org.easymock.EasyMock;
import de.rcenvironment.core.configuration.ConfigurationService;
import de.rcenvironment.core.configuration.testutils.MockConfigurationService;
import de.rcenvironment.core.login.LoginConfiguration;
import de.rcenvironment.core.login.LoginMockFactory;
import de.rcenvironment.core.login.LoginTestConstants;
/**
*
* Test case for the class {@link ServiceHandler}.
*
* @author Doreen Seider
* @author Tobias Menden
*/
public class ServiceHandlerTest extends TestCase {
private static final int VALIDITY_IN_DAYS = 7;
/**
* Test.
*
* @throws Exception if an exception during start or stop calling.
*/
public void testServiceHandlerForSuccess() throws Exception {
ServiceHandler handler = new ServiceHandler();
assertNotNull(ServiceHandler.getAuthenticationService());
assertNotNull(ServiceHandler.getNotificationService());
assertNotNull(ServiceHandler.getConfigurationService());
handler.bindAuthenticationService(LoginMockFactory.getInstance().getAuthenticationServiceMock());
handler.bindConfigurationService(LoginMockFactory.getInstance().getConfigurationServiceMock());
handler.bindNotificationService(LoginMockFactory.getInstance().getNotificationServiceMock());
handler.activate(LoginMockFactory.getInstance().getBundleContextMock());
assertNotNull(ServiceHandler.getAuthenticationService());
assertNotNull(ServiceHandler.getNotificationService());
assertNotNull(ServiceHandler.getConfigurationService());
handler.bindConfigurationService(new DummyConfigurationService());
handler.activate(LoginMockFactory.getInstance().getBundleContextMock());
handler.deactivate(LoginMockFactory.getInstance().getBundleContextMock());
handler.unbindAuthenticationService(LoginMockFactory.getInstance().getAuthenticationServiceMock());
handler.unbindConfigurationService(LoginMockFactory.getInstance().getConfigurationServiceMock());
handler.unbindNotificationService(LoginMockFactory.getInstance().getNotificationServiceMock());
assertNotNull(ServiceHandler.getAuthenticationService());
assertNotNull(ServiceHandler.getNotificationService());
assertNotNull(ServiceHandler.getConfigurationService());
try {
ServiceHandler.getAuthenticationService().createUser(EasyMock.createNiceMock(X509Certificate.class), VALIDITY_IN_DAYS);
fail();
} catch (IllegalStateException e) {
assertTrue(true);
}
try {
ServiceHandler.getNotificationService().send("kabumm", "peng");
fail();
} catch (IllegalStateException e) {
assertTrue(true);
}
try {
// TODO method is deprecated; use another - misc_ro
ServiceHandler.getConfigurationService().getProfileDirectory();
fail();
} catch (IllegalStateException e) {
assertTrue(true);
}
}
/**
* Test {@link ConfigurationService} implementation.
*
* @author Doreen Seider
*/
private class DummyConfigurationService extends MockConfigurationService.ThrowExceptionByDefault {
@Override
@SuppressWarnings("unchecked")
public <T> T getConfiguration(String identifier, Class<T> clazz) {
if (identifier.equals(LoginMockFactory.BUNDLE_SYMBOLIC_NAME)
&& clazz == LoginConfiguration.class) {
LoginConfiguration config = new LoginConfiguration();
config.setAutoLogin(true);
config.setAutoLoginPassword(LoginMockFactory.PASSWORD);
config.setCertificateFile(LoginTestConstants.USER_1_CERTIFICATE_FILENAME);
config.setKeyFile(LoginTestConstants.USER_1_KEY_FILENAME);
return (T) config;
}
return null;
}
@Override
public String resolveBundleConfigurationPath(String identifier, String path) {
return path;
}
}
}