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.net.SocketTimeoutException;
30 import java.util.Date;
31
32 import org.apache.hc.client5.http.utils.DateUtils;
33 import org.apache.hc.core5.http.ClassicHttpRequest;
34 import org.apache.hc.core5.http.HttpResponse;
35 import org.apache.hc.core5.http.HttpStatus;
36 import org.apache.hc.core5.http.message.BasicClassicHttpRequest;
37 import org.junit.Assert;
38 import org.junit.Test;
39
40
41
42
43
44 public class TestProtocolAllowedBehavior extends AbstractProtocolTest {
45
46 @Test
47 public void testNonSharedCacheReturnsStaleResponseWhenRevalidationFailsForProxyRevalidate()
48 throws Exception {
49 final ClassicHttpRequest req1 = new BasicClassicHttpRequest("GET","/");
50 final Date now = new Date();
51 final Date tenSecondsAgo = new Date(now.getTime() - 10 * 1000L);
52 originResponse.setHeader("Date", DateUtils.formatDate(tenSecondsAgo));
53 originResponse.setHeader("Cache-Control","max-age=5,proxy-revalidate");
54 originResponse.setHeader("Etag","\"etag\"");
55
56 backendExpectsAnyRequest().andReturn(originResponse);
57
58 final ClassicHttpRequest req2 = new BasicClassicHttpRequest("GET","/");
59
60 backendExpectsAnyRequest().andThrow(new SocketTimeoutException());
61
62 replayMocks();
63 behaveAsNonSharedCache();
64 execute(req1);
65 final HttpResponse result = execute(req2);
66 verifyMocks();
67
68 Assert.assertEquals(HttpStatus.SC_OK, result.getCode());
69 }
70
71 @Test
72 public void testNonSharedCacheMayCacheResponsesWithCacheControlPrivate()
73 throws Exception {
74 final ClassicHttpRequest req1 = new BasicClassicHttpRequest("GET","/");
75 originResponse.setHeader("Cache-Control","private,max-age=3600");
76
77 backendExpectsAnyRequest().andReturn(originResponse);
78
79 final ClassicHttpRequest req2 = new BasicClassicHttpRequest("GET","/");
80
81 replayMocks();
82 behaveAsNonSharedCache();
83 execute(req1);
84 final HttpResponse result = execute(req2);
85 verifyMocks();
86
87 Assert.assertEquals(HttpStatus.SC_OK, result.getCode());
88 }
89 }