package ch.csnc.extension.httpclient;
import org.junit.Before;
import org.junit.Test;
import static org.hamcrest.Matchers.equalTo;
import static org.hamcrest.Matchers.is;
import static org.junit.Assert.assertThat;
public class SSLContextManagerUnitTest {
private SSLContextManager sslContextManager;
@Before
public void setUp() throws Exception {
sslContextManager = new SSLContextManager();
}
@Test
public void shouldReturnAvailabilityOfPKCS11Provider() {
// Given
boolean pkcs11ProviderAvailable = true;
try {
Class.forName(SSLContextManager.SUN_PKCS11_CANONICAL_CLASS_NAME);
} catch (ClassNotFoundException e) {
try {
Class.forName(SSLContextManager.IBM_PKCS11_CONONICAL_CLASS_NAME);
} catch (ClassNotFoundException e2) {
pkcs11ProviderAvailable = false;
}
}
// When
boolean result = sslContextManager.isProviderAvailable(SSLContextManager.PKCS11_PROVIDER_TYPE);
// Then
assertThat(result, is(equalTo(pkcs11ProviderAvailable)));
}
@Test
public void shouldReturnAvailabilityOfMsksProvider() {
// Given
boolean msks11ProviderAvailable = true;
try {
Class.forName("se.assembla.jce.provider.ms.MSProvider");
} catch (ClassNotFoundException e) {
msks11ProviderAvailable = false;
}
// When
boolean result = sslContextManager.isProviderAvailable("msks");
// Then
assertThat(result, is(equalTo(msks11ProviderAvailable)));
}
@Test
public void shouldAlwaysReturnFalseForOtherThanPKCS11AndMsksProvider() {
// Given
// When
boolean result = sslContextManager.isProviderAvailable("thisProviderDoesNotExist");
// Then
assertThat(result, is(false));
}
}