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 package org.apache.hc.client5.http.impl.cache;
28
29 import java.util.Date;
30
31 import org.apache.hc.client5.http.ClientProtocolException;
32 import org.apache.hc.client5.http.classic.methods.HttpGet;
33 import org.apache.hc.client5.http.utils.DateUtils;
34 import org.apache.hc.core5.http.HttpRequest;
35 import org.apache.hc.core5.http.HttpResponse;
36 import org.apache.hc.core5.http.HttpStatus;
37 import org.apache.hc.core5.http.message.BasicHttpResponse;
38 import org.apache.hc.core5.http.support.BasicRequestBuilder;
39 import org.junit.Before;
40 import org.junit.Test;
41
42 public class TestResponseProtocolCompliance {
43
44 private ResponseProtocolCompliance impl;
45
46 @Before
47 public void setUp() {
48 impl = new ResponseProtocolCompliance();
49 }
50
51 private void setMinimalResponseHeaders(final HttpResponse resp) {
52 resp.setHeader("Date", DateUtils.formatDate(new Date()));
53 resp.setHeader("Server", "MyServer/1.0");
54 }
55
56 private HttpResponse makePartialResponse(final int nbytes) {
57 final HttpResponse resp = new BasicHttpResponse(HttpStatus.SC_PARTIAL_CONTENT, "Partial Content");
58 setMinimalResponseHeaders(resp);
59 resp.setHeader("Content-Length","" + nbytes);
60 resp.setHeader("Content-Range","0-127/256");
61 return resp;
62 }
63
64 @Test(expected=ClientProtocolException.class)
65 public void throwsExceptionIfOriginReturnsPartialResponseWhenNotRequested() throws Exception {
66 final HttpGet req = new HttpGet("http://foo.example.com/");
67 final HttpRequest wrapper = BasicRequestBuilder.copy(req).build();
68 final int nbytes = 128;
69 final HttpResponse resp = makePartialResponse(nbytes);
70
71 impl.ensureProtocolCompliance(wrapper, req, resp);
72 }
73
74 }