package cc.blynk.integration.http; import cc.blynk.integration.BaseTest; import cc.blynk.server.Holder; import cc.blynk.server.SslContextHolder; import cc.blynk.server.acme.AcmeClient; import cc.blynk.server.acme.ContentHolder; import cc.blynk.server.api.http.HttpAPIServer; import cc.blynk.server.core.BaseServer; import cc.blynk.server.workers.CertificateRenewalWorker; import cc.blynk.utils.ServerProperties; import org.apache.commons.lang.SystemUtils; import org.junit.After; import org.junit.Before; import org.junit.Ignore; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mockito; import org.mockito.runners.MockitoJUnitRunner; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; /** * The Blynk Project. * Created by Dmitriy Dumanskiy. * Created on 07.01.16. */ @RunWith(MockitoJUnitRunner.class) public class AcmeTest extends BaseTest { private BaseServer httpServer; private Holder holder2; @After public void shutdown() throws Exception { httpServer.close(); } @Before public void init() throws Exception { ServerProperties properties2 = new ServerProperties("no_certs.properties"); //disable native linux epoll transport for non linux envs. if (!SystemUtils.IS_OS_LINUX) { System.out.println("WARNING : DISABLING NATIVE EPOLL TRANSPORT. SYSTEM : " + SystemUtils.OS_NAME); properties2.put("enable.native.epoll.transport", false); } this.holder2 = new Holder(properties2, twitterWrapper, mailWrapper, gcmWrapper, smsWrapper, "no-db.properties"); httpServer = new HttpAPIServer(holder2).start(); } @Override public String getDataFolder() { return getRelativeDataFolder("/profiles"); } @Test public void testCorrectContext() { SslContextHolder sslContextHolder = holder2.sslContextHolder; assertNotNull(sslContextHolder); assertTrue(sslContextHolder.isAutoGenerationEnabled); assertTrue(sslContextHolder.isNeedInitializeOnStart); assertNotNull(sslContextHolder.acmeClient); } @Test @Ignore public void testCreateCertificates() throws Exception { final String STAGING = "acme://letsencrypt.org/staging"; ContentHolder contentHolder = holder2.sslContextHolder.contentHolder; AcmeClient acmeClient = new AcmeClient(STAGING, "test@blynk.cc", "test.blynk.cc", contentHolder); assertTrue(acmeClient.requestCertificate()); } @Test @Ignore public void testWorker() throws Exception { AcmeClient acmeClient = Mockito.mock(AcmeClient.class); CertificateRenewalWorker certificateRenewalWorker = new CertificateRenewalWorker(acmeClient, 7); certificateRenewalWorker.run(); verify(acmeClient, times(0)).requestCertificate(); certificateRenewalWorker = new CertificateRenewalWorker(acmeClient, 100); certificateRenewalWorker.run(); verify(acmeClient, times(1)).requestCertificate(); } }