Home | History | Annotate | Download | only in integration
      1 package fi.iki.elonen.integration;
      2 
      3 import fi.iki.elonen.NanoHTTPD;
      4 import org.apache.http.client.CookieStore;
      5 import org.apache.http.client.ResponseHandler;
      6 import org.apache.http.client.methods.HttpGet;
      7 import org.apache.http.impl.client.BasicResponseHandler;
      8 import org.apache.http.impl.cookie.BasicClientCookie;
      9 import org.junit.Test;
     10 
     11 import java.util.ArrayList;
     12 import java.util.Calendar;
     13 import java.util.List;
     14 
     15 import static org.junit.Assert.*;
     16 
     17 /**
     18  * @author Paul S. Hawke (paul.hawke (at) gmail.com)
     19  *         On: 9/2/13 at 10:10 PM
     20  */
     21 public class CookieIntegrationTest extends IntegrationTestBase<CookieIntegrationTest.CookieTestServer> {
     22 
     23     @Test
     24     public void testNoCookies() throws Exception {
     25         HttpGet httpget = new HttpGet("http://localhost:8192/");
     26         ResponseHandler<String> responseHandler = new BasicResponseHandler();
     27         httpclient.execute(httpget, responseHandler);
     28 
     29         CookieStore cookies = httpclient.getCookieStore();
     30         assertEquals(0, cookies.getCookies().size());
     31     }
     32 
     33     @Test
     34     public void testCookieSentBackToClient() throws Exception {
     35         testServer.cookiesToSend.add(new NanoHTTPD.Cookie("name", "value", 30));
     36         HttpGet httpget = new HttpGet("http://localhost:8192/");
     37         ResponseHandler<String> responseHandler = new BasicResponseHandler();
     38         httpclient.execute(httpget, responseHandler);
     39 
     40         CookieStore cookies = httpclient.getCookieStore();
     41         assertEquals(1, cookies.getCookies().size());
     42         assertEquals("name", cookies.getCookies().get(0).getName());
     43         assertEquals("value", cookies.getCookies().get(0).getValue());
     44     }
     45 
     46     @Test
     47     public void testServerReceivesCookiesSentFromClient() throws Exception {
     48         BasicClientCookie clientCookie = new BasicClientCookie("name", "value");
     49         Calendar calendar = Calendar.getInstance();
     50         calendar.add(Calendar.DAY_OF_YEAR, 100);
     51         clientCookie.setExpiryDate(calendar.getTime());
     52         clientCookie.setDomain("localhost");
     53         httpclient.getCookieStore().addCookie(clientCookie);
     54         HttpGet httpget = new HttpGet("http://localhost:8192/");
     55         ResponseHandler<String> responseHandler = new BasicResponseHandler();
     56         httpclient.execute(httpget, responseHandler);
     57 
     58         assertEquals(1, testServer.cookiesReceived.size());
     59         assertTrue(testServer.cookiesReceived.get(0).getHTTPHeader().contains("name=value"));
     60     }
     61 
     62     @Override public CookieTestServer createTestServer() {
     63         return new CookieTestServer();
     64     }
     65 
     66     public static class CookieTestServer extends NanoHTTPD {
     67         List<Cookie> cookiesReceived = new ArrayList<Cookie>();
     68         List<Cookie> cookiesToSend = new ArrayList<Cookie>();
     69 
     70         public CookieTestServer() {
     71             super(8192);
     72         }
     73 
     74         @Override public Response serve(IHTTPSession session) {
     75             CookieHandler cookies = session.getCookies();
     76             for (String cookieName : cookies) {
     77                 cookiesReceived.add(new Cookie(cookieName, cookies.read(cookieName)));
     78             }
     79             for (Cookie c : cookiesToSend) {
     80                 cookies.set(c);
     81             }
     82             return new Response("Cookies!");
     83         }
     84     }
     85 }
     86