/* See LICENSE for licensing and NOTICE for copyright. */
package org.ldaptive.props;
import org.ldaptive.ssl.KeyStoreCredentialConfig;
import org.ldaptive.ssl.X509CredentialConfig;
import org.testng.Assert;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
/**
* Unit test for {@link CredentialConfigParser}.
*
* @author Middleware Services
*/
public class CredentialConfigParserTest
{
/**
* Property test data.
*
* @return configuration properties
*/
@DataProvider(name = "properties")
public Object[][] createProperties()
{
final String p1 = "{trustCertificates=classpath:/ldaptive.trust.crt}";
final X509CredentialConfig o1 = new X509CredentialConfig();
o1.setTrustCertificates("classpath:/ldaptive.trust.crt");
final String p2 = "{{trustCertificates=classpath:/ldaptive.trust.crt}}";
final X509CredentialConfig o2 = new X509CredentialConfig();
o2.setTrustCertificates("classpath:/ldaptive.trust.crt");
final String p3 = "{trustCertificates=classpath:/ldaptive.trust.crt}" +
"{authenticationCertificate=classpath:/ldaptive.crt}";
final X509CredentialConfig o3 = new X509CredentialConfig();
o3.setTrustCertificates("classpath:/ldaptive.trust.crt");
o3.setAuthenticationCertificate("classpath:/ldaptive.crt");
final String p4 = "{{trustCertificates=classpath:/ldaptive.trust.crt}" +
"{authenticationCertificate=classpath:/ldaptive.crt}}";
final X509CredentialConfig o4 = new X509CredentialConfig();
o4.setTrustCertificates("classpath:/ldaptive.trust.crt");
o4.setAuthenticationCertificate("classpath:/ldaptive.crt");
final String p5 = "org.ldaptive.ssl.X509CredentialConfig" +
"{trustCertificates=file:ldaptive.trust.crt}";
final X509CredentialConfig o5 = new X509CredentialConfig();
o5.setTrustCertificates("file:ldaptive.trust.crt");
final String p6 = "org.ldaptive.ssl.X509CredentialConfig" +
"{{trustCertificates=file:ldaptive.trust.crt}}";
final X509CredentialConfig o6 = new X509CredentialConfig();
o6.setTrustCertificates("file:ldaptive.trust.crt");
final String p7 = "org.ldaptive.ssl.KeyStoreCredentialConfig" +
"{{trustStore=classpath:/ldaptive.truststore}{trustStoreType=BKS}}";
final KeyStoreCredentialConfig o7 = new KeyStoreCredentialConfig();
o7.setTrustStore("classpath:/ldaptive.truststore");
o7.setTrustStoreType("BKS");
final String p8 = "org.ldaptive.ssl.KeyStoreCredentialConfig" +
"{{trustStore=classpath:/ldaptive.truststore} {trustStoreType=BKS}}";
final KeyStoreCredentialConfig o8 = new KeyStoreCredentialConfig();
o8.setTrustStore("classpath:/ldaptive.truststore");
o8.setTrustStoreType("BKS");
final String p9 = "org.ldaptive.ssl.KeyStoreCredentialConfig" +
"{{trustStore=classpath:/ldaptive.truststore}" +
"{trustStoreType=BKS}" +
"{trustStoreAliases=alias1}}";
final KeyStoreCredentialConfig o9 = new KeyStoreCredentialConfig();
o9.setTrustStore("classpath:/ldaptive.truststore");
o9.setTrustStoreType("BKS");
o9.setTrustStoreAliases("alias1");
final String p10 = "org.ldaptive.ssl.KeyStoreCredentialConfig" +
"{{trustStore=classpath:/ldaptive.truststore}" +
"{trustStoreType=BKS}" +
"{trustStoreAliases=alias1,alias2}}";
final KeyStoreCredentialConfig o10 = new KeyStoreCredentialConfig();
o10.setTrustStore("classpath:/ldaptive.truststore");
o10.setTrustStoreType("BKS");
o10.setTrustStoreAliases("alias1", "alias2");
final String p11 = "org.ldaptive.ssl.KeyStoreCredentialConfig" +
"{{trustStore=file:/path/to/my/cacerts}" +
"{trustStorePassword=changeit}" +
"{trustStoreAliases=custom-1,custom-2}" +
"{keyStore=file:/path/to/my/ldaptive.keystore}" +
"{keyStorePassword=changeit}" +
"{keyStoreAliases=alias1,alias2}}";
final KeyStoreCredentialConfig o11 = new KeyStoreCredentialConfig();
o11.setTrustStore("file:/path/to/my/cacerts");
o11.setTrustStorePassword("changeit");
o11.setTrustStoreAliases("custom-1", "custom-2");
o11.setKeyStore("file:/path/to/my/ldaptive.keystore");
o11.setKeyStorePassword("changeit");
o11.setKeyStoreAliases("alias1", "alias2");
return
new Object[][] {
new Object[] {p1, o1, },
new Object[] {p2, o2, },
new Object[] {p3, o3, },
new Object[] {p4, o4, },
new Object[] {p5, o5, },
new Object[] {p6, o6, },
new Object[] {p7, o7, },
new Object[] {p8, o8, },
new Object[] {p9, o9, },
new Object[] {p10, o10, },
new Object[] {p11, o11, },
};
}
/**
* @param property to test
* @param initialized object to compare
*
* @throws Exception On test failure.
*/
@Test(groups = {"props"}, dataProvider = "properties")
public void initializeType(final String property, final Object initialized)
throws Exception
{
Assert.assertTrue(CredentialConfigParser.isCredentialConfig(property));
final CredentialConfigParser parser = new CredentialConfigParser(property);
Assert.assertEquals(initialized, parser.initializeType());
}
}