package org.apereo.cas.adaptors.x509.authentication.principal; import static org.junit.Assert.*; import static org.mockito.Mockito.*; import org.apereo.cas.authentication.CoreAuthenticationTestUtils; import org.apereo.cas.authentication.UsernamePasswordCredential; import org.apereo.cas.authentication.handler.support.SimpleTestUsernamePasswordAuthenticationHandler; import org.junit.Test; import java.math.BigInteger; import java.security.cert.X509Certificate; /** * @author Scott Battaglia * @author Jan Van der Velpen * @since 3.0.0.6 * */ public class X509SerialNumberPrincipalResolverTests extends AbstractX509CertificateTests { private final X509SerialNumberPrincipalResolver resolver = new X509SerialNumberPrincipalResolver(); @Test public void verifyResolvePrincipalInternal() { final X509CertificateCredential c = new X509CertificateCredential(new X509Certificate[] {VALID_CERTIFICATE}); c.setCertificate(VALID_CERTIFICATE); assertEquals(VALID_CERTIFICATE.getSerialNumber().toString(), this.resolver.resolve(c, CoreAuthenticationTestUtils.getPrincipal(), new SimpleTestUsernamePasswordAuthenticationHandler()).getId()); } @Test public void verifySupport() { final X509CertificateCredential c = new X509CertificateCredential(new X509Certificate[] {VALID_CERTIFICATE}); assertTrue(this.resolver.supports(c)); } @Test public void verifySupportFalse() { assertFalse(this.resolver.supports(new UsernamePasswordCredential())); } @Test public void verifyHexPrincipalOdd() { final X509SerialNumberPrincipalResolver r = new X509SerialNumberPrincipalResolver(16, true); final X509Certificate mockCert = mock(X509Certificate.class); when(mockCert.getSerialNumber()).thenReturn(BigInteger.valueOf(300L)); final String principal = r.resolvePrincipalInternal(mockCert); assertEquals("012c", principal); } @Test public void verifyHexPrincipalOddFalse() { final X509SerialNumberPrincipalResolver r = new X509SerialNumberPrincipalResolver(16, false); final X509Certificate mockCert = mock(X509Certificate.class); when(mockCert.getSerialNumber()).thenReturn(BigInteger.valueOf(300L)); final String principal = r.resolvePrincipalInternal(mockCert); assertEquals("12c", principal); } @Test public void verifyHexPrincipalEven() { final X509SerialNumberPrincipalResolver r = new X509SerialNumberPrincipalResolver(16, true); final X509Certificate mockCert = mock(X509Certificate.class); when(mockCert.getSerialNumber()).thenReturn(BigInteger.valueOf(60300L)); final String principal = r.resolvePrincipalInternal(mockCert); assertEquals("eb8c", principal); } }