package org.apereo.cas.adaptors.x509.authentication.principal; import org.junit.Assert; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; import org.junit.runners.Parameterized.Parameters; import java.io.FileInputStream; import java.security.cert.CertificateFactory; import java.security.cert.X509Certificate; import java.util.ArrayList; import java.util.Collection; /** * Unit test for {@link X509SubjectAlternativeNameUPNPrincipalResolver}. * * @author Dmitriy Kopylenko * @since 3.0.0 */ @RunWith(Parameterized.class) public class X509SubjectAlternativeNameUPNPrincipalResolverTests { private X509Certificate certificate; private final X509SubjectAlternativeNameUPNPrincipalResolver resolver; private final String expected; /** * Creates a new test instance with the given parameters. * * @param certPath path to the cert * @param expectedResult the result expected from the test */ public X509SubjectAlternativeNameUPNPrincipalResolverTests( final String certPath, final String expectedResult) { this.resolver = new X509SubjectAlternativeNameUPNPrincipalResolver(); try { this.certificate = (X509Certificate) CertificateFactory.getInstance("X509").generateCertificate( new FileInputStream(getClass().getResource(certPath).getPath())); } catch (final Exception e) { Assert.fail(String.format("Error parsing certificate %s: %s", certPath, e.getMessage())); } this.expected = expectedResult; } /** * Gets the unit test parameters. * * @return Test parameter data. */ @Parameters public static Collection<Object[]> getTestParameters() { final Collection<Object[]> params = new ArrayList<>(); params.add(new Object[] { "/x509-san-upn-resolver.crt", "test-user@some-company-domain" }); return params; } @Test public void verifyResolvePrincipalInternal() { Assert.assertEquals(this.expected, this.resolver.resolvePrincipalInternal(this.certificate)); } }