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.impl.entity;
29
30 import org.apache.http.HttpMessage;
31 import org.apache.http.entity.ContentLengthStrategy;
32 import org.junit.Assert;
33 import org.junit.Test;
34
35 public class TestLaxContentLengthStrategy {
36
37 @Test
38 public void testEntityWithTransferEncoding() throws Exception {
39 final ContentLengthStrategy lenStrategy = new LaxContentLengthStrategy();
40 final HttpMessage message = new DummyHttpMessage();
41
42 message.addHeader("Content-Type", "unknown");
43 message.addHeader("Transfer-Encoding", "identity, chunked");
44 message.addHeader("Content-Length", "plain wrong");
45 Assert.assertEquals(ContentLengthStrategy.CHUNKED, lenStrategy.determineLength(message));
46 }
47
48 @Test
49 public void testEntityWithIdentityTransferEncoding() throws Exception {
50 final ContentLengthStrategy lenStrategy = new LaxContentLengthStrategy();
51 final HttpMessage message = new DummyHttpMessage();
52
53 message.addHeader("Content-Type", "unknown");
54 message.addHeader("Transfer-Encoding", "identity");
55 message.addHeader("Content-Length", "plain wrong");
56 Assert.assertEquals(ContentLengthStrategy.IDENTITY, lenStrategy.determineLength(message));
57 }
58
59 @Test
60 public void testEntityWithUnsupportedTransferEncoding() throws Exception {
61 final ContentLengthStrategy lenStrategy = new LaxContentLengthStrategy();
62 final HttpMessage message = new DummyHttpMessage();
63
64 message.addHeader("Content-Type", "unknown");
65 message.addHeader("Transfer-Encoding", "whatever; param=value, chunked");
66 message.addHeader("Content-Length", "plain wrong");
67 Assert.assertEquals(ContentLengthStrategy.CHUNKED, lenStrategy.determineLength(message));
68 }
69
70 @Test
71 public void testChunkedTransferEncodingMustBeLast() throws Exception {
72 final ContentLengthStrategy lenStrategy = new LaxContentLengthStrategy();
73 final HttpMessage message = new DummyHttpMessage();
74
75 message.addHeader("Content-Type", "unknown");
76 message.addHeader("Transfer-Encoding", "chunked, identity");
77 message.addHeader("Content-Length", "plain wrong");
78 Assert.assertEquals(ContentLengthStrategy.IDENTITY, lenStrategy.determineLength(message));
79 }
80
81 @Test
82 public void testEntityWithContentLength() throws Exception {
83 final ContentLengthStrategy lenStrategy = new LaxContentLengthStrategy();
84 final HttpMessage message = new DummyHttpMessage();
85
86 message.addHeader("Content-Type", "unknown");
87 message.addHeader("Content-Length", "0");
88 Assert.assertEquals(0, lenStrategy.determineLength(message));
89 }
90
91 @Test
92 public void testEntityWithMultipleContentLength() throws Exception {
93 final ContentLengthStrategy lenStrategy = new LaxContentLengthStrategy();
94 final HttpMessage message = new DummyHttpMessage();
95
96 message.addHeader("Content-Type", "unknown");
97 message.addHeader("Content-Length", "0");
98 message.addHeader("Content-Length", "0");
99 message.addHeader("Content-Length", "1");
100 Assert.assertEquals(1, lenStrategy.determineLength(message));
101 }
102
103 @Test
104 public void testEntityWithMultipleContentLengthSomeWrong() throws Exception {
105 final ContentLengthStrategy lenStrategy = new LaxContentLengthStrategy();
106 final HttpMessage message = new DummyHttpMessage();
107
108 message.addHeader("Content-Type", "unknown");
109 message.addHeader("Content-Length", "1");
110 message.addHeader("Content-Length", "yyy");
111 message.addHeader("Content-Length", "xxx");
112 Assert.assertEquals(1, lenStrategy.determineLength(message));
113 }
114
115 @Test
116 public void testEntityWithMultipleContentLengthAllWrong() throws Exception {
117 final ContentLengthStrategy lenStrategy = new LaxContentLengthStrategy();
118 final HttpMessage message = new DummyHttpMessage();
119
120 message.addHeader("Content-Type", "unknown");
121 message.addHeader("Content-Length", "yyy");
122 message.addHeader("Content-Length", "xxx");
123 Assert.assertEquals(ContentLengthStrategy.IDENTITY, lenStrategy.determineLength(message));
124 }
125
126 @Test
127 public void testEntityWithInvalidContentLength() throws Exception {
128 final ContentLengthStrategy lenStrategy = new LaxContentLengthStrategy();
129 final HttpMessage message = new DummyHttpMessage();
130
131 message.addHeader("Content-Type", "unknown");
132 message.addHeader("Content-Length", "xxx");
133 Assert.assertEquals(ContentLengthStrategy.IDENTITY, lenStrategy.determineLength(message));
134 }
135
136 @Test
137 public void testEntityNeitherContentLengthNorTransferEncoding() throws Exception {
138 final ContentLengthStrategy lenStrategy = new LaxContentLengthStrategy();
139 final HttpMessage message = new DummyHttpMessage();
140
141
142 Assert.assertEquals(ContentLengthStrategy.IDENTITY, lenStrategy.determineLength(message));
143 }
144
145 }
146