diff --git a/httpclient/src/test/java/org/baeldung/httpclient/HttpClientCookieLiveTest.java b/httpclient/src/test/java/org/baeldung/httpclient/HttpClientCookieLiveTest.java new file mode 100644 index 0000000000..1ed91bebc4 --- /dev/null +++ b/httpclient/src/test/java/org/baeldung/httpclient/HttpClientCookieLiveTest.java @@ -0,0 +1,115 @@ +package org.baeldung.httpclient; + +import static org.hamcrest.Matchers.equalTo; +import static org.junit.Assert.assertThat; + +import java.io.IOException; +import java.io.InputStream; + +import org.apache.http.HttpEntity; +import org.apache.http.client.ClientProtocolException; +import org.apache.http.client.methods.CloseableHttpResponse; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.client.protocol.HttpClientContext; +import org.apache.http.impl.client.BasicCookieStore; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.DefaultHttpClient; +import org.apache.http.impl.client.HttpClientBuilder; +import org.apache.http.impl.cookie.BasicClientCookie; +import org.apache.http.protocol.BasicHttpContext; +import org.apache.http.protocol.HttpContext; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class HttpClientCookieLiveTest { + + private CloseableHttpClient instance; + + private CloseableHttpResponse response; + + @Before + public final void before() { + instance = HttpClientBuilder.create().build(); + } + + @After + public final void after() throws IllegalStateException, IOException { + if (response == null) { + return; + } + + try { + final HttpEntity entity = response.getEntity(); + if (entity != null) { + final InputStream instream = entity.getContent(); + instream.close(); + } + } finally { + response.close(); + } + } + + // tests + + @Test + public final void whenSettingCookiesOnARequest_thenCorrect() throws ClientProtocolException, IOException { + instance = HttpClientBuilder.create().build(); + final HttpGet request = new HttpGet("http://www.github.com"); + request.setHeader("Cookie", "JSESSIONID=1234"); + + response = instance.execute(request); + + assertThat(response.getStatusLine().getStatusCode(), equalTo(200)); + } + + @SuppressWarnings("deprecation") + @Test + public final void givenUsingDeprecatedApi_whenSettingCookiesOnTheHttpClient_thenCorrect() throws ClientProtocolException, IOException { + final BasicCookieStore cookieStore = new BasicCookieStore(); + final BasicClientCookie cookie = new BasicClientCookie("JSESSIONID", "1234"); + cookie.setDomain(".github.com"); + cookieStore.addCookie(cookie); + final DefaultHttpClient client = new DefaultHttpClient(); + client.setCookieStore(cookieStore); + + final HttpGet request = new HttpGet("http://www.github.com"); + + response = client.execute(request); + + assertThat(response.getStatusLine().getStatusCode(), equalTo(200)); + } + + @Test + public final void whenSettingCookiesOnTheHttpClient_thenCookieSentCorrectly() throws ClientProtocolException, IOException { + final BasicCookieStore cookieStore = new BasicCookieStore(); + final BasicClientCookie cookie = new BasicClientCookie("JSESSIONID", "1234"); + cookie.setDomain(".github.com"); + cookieStore.addCookie(cookie); + instance = HttpClientBuilder.create().setDefaultCookieStore(cookieStore).build(); + + final HttpGet request = new HttpGet("http://www.github.com"); + + response = instance.execute(request); + + assertThat(response.getStatusLine().getStatusCode(), equalTo(200)); + } + + @Test + public final void whenSettingCookiesOnTheRequest_thenCookieSentCorrectly() throws ClientProtocolException, IOException { + final BasicCookieStore cookieStore = new BasicCookieStore(); + final BasicClientCookie cookie = new BasicClientCookie("JSESSIONID", "1234"); + cookie.setDomain(".github.com"); + cookieStore.addCookie(cookie); + instance = HttpClientBuilder.create().build(); + + final HttpGet request = new HttpGet("http://www.github.com"); + + final HttpContext localContext = new BasicHttpContext(); + localContext.setAttribute(HttpClientContext.COOKIE_STORE, cookieStore); + response = instance.execute(request, localContext); + + assertThat(response.getStatusLine().getStatusCode(), equalTo(200)); + } + +}