package org.digidoc4j.impl.bdoc.ocsp; import static org.junit.Assert.assertNull; import static org.mockito.Matchers.any; import static org.mockito.Matchers.anyString; import static org.mockito.Mockito.when; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.security.Security; import java.security.cert.CertificateException; import java.security.cert.CertificateFactory; import java.security.cert.X509Certificate; import org.bouncycastle.jce.provider.BouncyCastleProvider; import org.digidoc4j.Configuration; import org.digidoc4j.impl.bdoc.SkDataLoader; import org.digidoc4j.utils.CertificatesForTests; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.rules.TemporaryFolder; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; import eu.europa.esig.dss.x509.CertificateToken; import eu.europa.esig.dss.x509.ocsp.OCSPToken; @RunWith(MockitoJUnitRunner.class) public class SKOnlineOCSPSourceTest { @Rule public TemporaryFolder testFolder = new TemporaryFolder(); @Mock SkDataLoader dataLoader; X509Certificate issuerCert; Configuration configuration = new Configuration(Configuration.Mode.TEST); @Before public void setUp() throws Exception { Security.addProvider(new BouncyCastleProvider()); issuerCert = openX509Cert("testFiles/Juur-SK.pem.crt"); //Any certificate will do } @Test public void gettingOCSPToken_shouldReturnNull_whenOCSPResponseIsEmpty() throws Exception { mockDataLoader(); SKOnlineOCSPSource ocspSource = new BDocTSOcspSource(configuration); ocspSource.setDataLoader(dataLoader); CertificateToken certificateToken = new CertificateToken(CertificatesForTests.SIGN_CERT); OCSPToken ocspToken = ocspSource.getOCSPToken(certificateToken, new CertificateToken(issuerCert)); assertNull(ocspToken); } private void mockDataLoader() { byte[] emptyOcspResponse = {48, 3, 10, 1, 6}; when(dataLoader.post(anyString(), any(byte[].class))).thenReturn(emptyOcspResponse); } private X509Certificate openX509Cert(String path) throws CertificateException, IOException { CertificateFactory certificateFactory = CertificateFactory.getInstance("X.509"); try (FileInputStream inStream = new FileInputStream(new File(path))) { return (X509Certificate) certificateFactory.generateCertificate(inStream); } } }