1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 package org.apache.http.client.protocol;
29
30 import org.apache.http.Header;
31 import org.apache.http.HttpVersion;
32 import org.apache.http.client.config.RequestConfig;
33 import org.apache.http.entity.StringEntity;
34 import org.apache.http.message.BasicHttpEntityEnclosingRequest;
35 import org.apache.http.message.BasicHttpRequest;
36 import org.apache.http.protocol.BasicHttpContext;
37 import org.apache.http.protocol.HTTP;
38 import org.apache.http.protocol.HttpContext;
39 import org.junit.Assert;
40 import org.junit.Test;
41
42 public class TestRequestExpectContinue {
43
44 @Test
45 public void testRequestExpectContinueGenerated() throws Exception {
46 final HttpClientContext context = HttpClientContext.create();
47 final RequestConfig config = RequestConfig.custom().setExpectContinueEnabled(true).build();
48 context.setAttribute(HttpClientContext.REQUEST_CONFIG, config);
49 final BasicHttpEntityEnclosingRequest request = new BasicHttpEntityEnclosingRequest("POST", "/");
50 final String s = "whatever";
51 final StringEntity entity = new StringEntity(s, "US-ASCII");
52 request.setEntity(entity);
53 final RequestExpectContinue interceptor = new RequestExpectContinue();
54 interceptor.process(request, context);
55 final Header header = request.getFirstHeader(HTTP.EXPECT_DIRECTIVE);
56 Assert.assertNotNull(header);
57 Assert.assertEquals(HTTP.EXPECT_CONTINUE, header.getValue());
58 }
59
60 @Test
61 public void testRequestExpectContinueNotGenerated() throws Exception {
62 final HttpContext context = new BasicHttpContext(null);
63 final RequestConfig config = RequestConfig.custom().setExpectContinueEnabled(false).build();
64 context.setAttribute(HttpClientContext.REQUEST_CONFIG, config);
65 final BasicHttpEntityEnclosingRequest request = new BasicHttpEntityEnclosingRequest("POST", "/");
66 final String s = "whatever";
67 final StringEntity entity = new StringEntity(s, "US-ASCII");
68 request.setEntity(entity);
69 final RequestExpectContinue interceptor = new RequestExpectContinue();
70 interceptor.process(request, context);
71 final Header header = request.getFirstHeader(HTTP.EXPECT_DIRECTIVE);
72 Assert.assertNull(header);
73 }
74
75 @Test
76 public void testRequestExpectContinueHTTP10() throws Exception {
77 final HttpContext context = new BasicHttpContext(null);
78 final RequestConfig config = RequestConfig.custom().setExpectContinueEnabled(true).build();
79 context.setAttribute(HttpClientContext.REQUEST_CONFIG, config);
80 final BasicHttpEntityEnclosingRequest request = new BasicHttpEntityEnclosingRequest(
81 "POST", "/", HttpVersion.HTTP_1_0);
82 final String s = "whatever";
83 final StringEntity entity = new StringEntity(s, "US-ASCII");
84 request.setEntity(entity);
85 final RequestExpectContinue interceptor = new RequestExpectContinue();
86 interceptor.process(request, context);
87 final Header header = request.getFirstHeader(HTTP.EXPECT_DIRECTIVE);
88 Assert.assertNull(header);
89 }
90
91 @Test
92 public void testRequestExpectContinueZeroContent() throws Exception {
93 final HttpContext context = new BasicHttpContext(null);
94 final RequestConfig config = RequestConfig.custom().setExpectContinueEnabled(true).build();
95 context.setAttribute(HttpClientContext.REQUEST_CONFIG, config);
96 final BasicHttpEntityEnclosingRequest request = new BasicHttpEntityEnclosingRequest("POST", "/");
97 final String s = "";
98 final StringEntity entity = new StringEntity(s, "US-ASCII");
99 request.setEntity(entity);
100 final RequestExpectContinue interceptor = new RequestExpectContinue();
101 interceptor.process(request, context);
102 final Header header = request.getFirstHeader(HTTP.EXPECT_DIRECTIVE);
103 Assert.assertNull(header);
104 }
105
106 @Test
107 public void testRequestExpectContinueInvalidInput() throws Exception {
108 final RequestExpectContinue interceptor = new RequestExpectContinue();
109 try {
110 interceptor.process(null, null);
111 Assert.fail("IllegalArgumentException should have been thrown");
112 } catch (final IllegalArgumentException ex) {
113
114 }
115 }
116
117 @Test
118 public void testRequestExpectContinueIgnoreNonenclosingRequests() throws Exception {
119 final HttpContext context = new BasicHttpContext(null);
120 final BasicHttpRequest request = new BasicHttpRequest("POST", "/");
121 final RequestExpectContinue interceptor = new RequestExpectContinue();
122 interceptor.process(request, context);
123 Assert.assertEquals(0, request.getAllHeaders().length);
124 }
125
126 }