Home | History | Annotate | Download | only in elonen
      1 package fi.iki.elonen;
      2 
      3 /*
      4  * #%L
      5  * NanoHttpd-Core
      6  * %%
      7  * Copyright (C) 2012 - 2015 nanohttpd
      8  * %%
      9  * Redistribution and use in source and binary forms, with or without modification,
     10  * are permitted provided that the following conditions are met:
     11  *
     12  * 1. Redistributions of source code must retain the above copyright notice, this
     13  *    list of conditions and the following disclaimer.
     14  *
     15  * 2. Redistributions in binary form must reproduce the above copyright notice,
     16  *    this list of conditions and the following disclaimer in the documentation
     17  *    and/or other materials provided with the distribution.
     18  *
     19  * 3. Neither the name of the nanohttpd nor the names of its contributors
     20  *    may be used to endorse or promote products derived from this software without
     21  *    specific prior written permission.
     22  *
     23  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
     24  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
     25  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
     26  * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
     27  * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
     28  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
     29  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
     30  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
     31  * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
     32  * OF THE POSSIBILITY OF SUCH DAMAGE.
     33  * #L%
     34  */
     35 
     36 import java.io.File;
     37 import java.io.IOException;
     38 
     39 import javax.net.ssl.SSLContext;
     40 
     41 import org.apache.http.HttpEntity;
     42 import org.apache.http.HttpResponse;
     43 import org.apache.http.client.ClientProtocolException;
     44 import org.apache.http.client.methods.HttpTrace;
     45 import org.apache.http.impl.client.DefaultHttpClient;
     46 import org.junit.After;
     47 import org.junit.Assert;
     48 import org.junit.Before;
     49 import org.junit.Test;
     50 
     51 public class HttpSSLServerTest extends HttpServerTest {
     52 
     53     @Test
     54     public void testSSLConnection() throws ClientProtocolException, IOException {
     55         DefaultHttpClient httpclient = new DefaultHttpClient();
     56         HttpTrace httphead = new HttpTrace("https://localhost:9043/index.html");
     57         HttpResponse response = httpclient.execute(httphead);
     58         HttpEntity entity = response.getEntity();
     59         Assert.assertEquals(200, response.getStatusLine().getStatusCode());
     60 
     61         Assert.assertEquals(9043, this.testServer.getListeningPort());
     62         Assert.assertTrue(this.testServer.isAlive());
     63     }
     64 
     65     @Before
     66     public void setUp() throws Exception {
     67         System.setProperty("javax.net.ssl.trustStore", new File("src/test/resources/keystore.jks").getAbsolutePath());
     68         this.testServer = new TestServer(9043);
     69         this.testServer.makeSecure(NanoHTTPD.makeSSLSocketFactory("/keystore.jks", "password".toCharArray()), null);
     70         this.tempFileManager = new TestTempFileManager();
     71         this.testServer.start();
     72         try {
     73             long start = System.currentTimeMillis();
     74             Thread.sleep(100L);
     75             while (!this.testServer.wasStarted()) {
     76                 Thread.sleep(100L);
     77                 if (System.currentTimeMillis() - start > 2000) {
     78                     Assert.fail("could not start server");
     79                 }
     80             }
     81         } catch (InterruptedException e) {
     82         }
     83     }
     84 
     85     @After
     86     public void tearDown() {
     87         this.testServer.stop();
     88     }
     89 }
     90