1package fi.iki.elonen.integration; 2 3import fi.iki.elonen.NanoHTTPD; 4import org.apache.http.client.CookieStore; 5import org.apache.http.client.ResponseHandler; 6import org.apache.http.client.methods.HttpGet; 7import org.apache.http.impl.client.BasicResponseHandler; 8import org.apache.http.impl.cookie.BasicClientCookie; 9import org.junit.Test; 10 11import java.util.ArrayList; 12import java.util.Calendar; 13import java.util.List; 14 15import static org.junit.Assert.*; 16 17/** 18 * @author Paul S. Hawke (paul.hawke@gmail.com) 19 * On: 9/2/13 at 10:10 PM 20 */ 21public 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