package com.ausregistry.jtoolkit2; import static org.hamcrest.CoreMatchers.is; import static org.junit.Assert.*; import static org.mockito.Mockito.when; import static org.powermock.api.mockito.PowerMockito.mock; import javax.xml.bind.DatatypeConverter; import java.math.BigInteger; import java.security.Principal; import java.security.cert.X509Certificate; import java.util.Calendar; import org.junit.Test; public class ErrorPkgTest { @Test public void testGetMessageString() { String msg = ErrorPkg.getMessage("test.msg.1"); assertEquals("This is a test message; do not change", msg); } @Test public void testGetMessageStringStringString() { String msg = ErrorPkg.getMessage("test.msg.1", "change", "modify"); assertEquals("This is a test message; do not modify", msg); } @Test public void testGetMessageStringStringArrayStringArray() { String[] args = new String[] {"test", "change"}; String[] vals = new String[] {"weird", "womble"}; String msg = ErrorPkg.getMessage("test.msg.1", args, vals); assertEquals("This is a weird message; do not womble", msg); } @Test public void testGetMessageFromInts() { String[] args = new String[] {"<<in1>>", "<<in2>>"}; int[] vals = new int[] {0, 1}; String msg = ErrorPkg.getMessage("test.msg.2", args, vals); assertEquals("Test message 0; 1", msg); } @Test public void shouldFormatDateCorrectly() { Calendar calendar = DatatypeConverter.parseDate("2009-08-16T09:00:00Z"); String message = ErrorPkg.getMessage("test.msg.2", "<<in1>>", calendar.getTime()); assertThat(message, is("Test message 2009-08-16T09:00:00Z; <<in2>>")); } @Test public void shouldFormatCertificateCorrectly() { Principal mockPrincipal = mock(Principal.class); Principal mockPrincipalTwo = mock(Principal.class); X509Certificate mockSmdCertificate = mock(X509Certificate.class); when(mockSmdCertificate.getSerialNumber()).thenReturn(BigInteger.valueOf(7)); when(mockSmdCertificate.getSubjectDN()).thenReturn(mockPrincipal); when(mockPrincipal.getName()).thenReturn("EMAILADDRESS=revoked@abc.com.au, CN=revoked," + " OU=Oud, O=ARI, L=Melbourne, ST=Victoria, C=AU"); when(mockSmdCertificate.getIssuerDN()).thenReturn(mockPrincipalTwo); when(mockPrincipalTwo.getName()).thenReturn("EMAILADDRESS=issuer@abc.com.au, " + "CN=issuer, OU=Oud, O=ARI, L=Melbourne, ST=Vic, C=AU"); Calendar notAfterCal = DatatypeConverter.parseDate("2019-08-16T09:00:00Z"); Calendar notBeforeCal = DatatypeConverter.parseDate("2009-08-16T09:00:00Z"); when(mockSmdCertificate.getNotAfter()).thenReturn(notAfterCal.getTime()); when(mockSmdCertificate.getNotBefore()).thenReturn(notBeforeCal.getTime()); String expectedMessage = "Test message <<in1>>; " + "Certificate of serial number '7' and DN 'EMAILADDRESS=revoked@abc.com.au," + " CN=revoked, OU=Oud, O=ARI, L=Melbourne, ST=Victoria, C=AU' and \nsigner DN" + " 'EMAILADDRESS=issuer@abc.com.au, CN=issuer, OU=Oud, O=ARI, L=Melbourne," + " ST=Vic, C=AU'\nvalid from '2009-08-16T09:00:00Z' and valid to '2019-08-16T09:00:00Z'"; String message = ErrorPkg.getMessage("test.msg.2", "<<in2>>", mockSmdCertificate); assertThat(message, is(expectedMessage)); } }