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 org.apache.hc.client5.http.cache.RequestCacheControl;
30 import org.apache.hc.core5.http.message.BasicHttpRequest;
31 import org.junit.jupiter.api.Assertions;
32 import org.junit.jupiter.api.BeforeEach;
33 import org.junit.jupiter.api.Test;
34
35 class TestCacheableRequestPolicy {
36
37 private CacheableRequestPolicy policy;
38
39 @BeforeEach
40 void setUp() {
41 policy = new CacheableRequestPolicy();
42 }
43
44 @Test
45 void testIsGetServableFromCache() {
46 final BasicHttpRequest request = new BasicHttpRequest("GET", "someUri");
47 final RequestCacheControl cacheControl = RequestCacheControl.builder().build();
48
49 Assertions.assertTrue(policy.canBeServedFromCache(cacheControl, request));
50 }
51
52 @Test
53 void testIsGetWithCacheControlServableFromCache() {
54 final BasicHttpRequest request = new BasicHttpRequest("GET", "someUri");
55 final RequestCacheControl cacheControl = RequestCacheControl.builder()
56 .setNoCache(true)
57 .build();
58
59 Assertions.assertFalse(policy.canBeServedFromCache(cacheControl, request));
60
61 final RequestCacheControl cacheControl2 = RequestCacheControl.builder()
62 .setNoStore(true)
63 .setMaxAge(20)
64 .build();
65
66 Assertions.assertFalse(policy.canBeServedFromCache(cacheControl2, request));
67 }
68
69 @Test
70 void testIsHeadServableFromCache() {
71 final BasicHttpRequest request = new BasicHttpRequest("HEAD", "someUri");
72 final RequestCacheControl cacheControl = RequestCacheControl.builder().build();
73
74 Assertions.assertTrue(policy.canBeServedFromCache(cacheControl, request));
75
76 final RequestCacheControl cacheControl2 = RequestCacheControl.builder()
77 .setMaxAge(20)
78 .build();
79
80 Assertions.assertTrue(policy.canBeServedFromCache(cacheControl2, request));
81 }
82
83 @Test
84 void testIsHeadWithCacheControlServableFromCache() {
85 final BasicHttpRequest request = new BasicHttpRequest("HEAD", "someUri");
86 final RequestCacheControl cacheControl = RequestCacheControl.builder()
87 .setNoCache(true)
88 .build();
89
90 Assertions.assertFalse(policy.canBeServedFromCache(cacheControl, request));
91
92 request.addHeader("Cache-Control", "no-store");
93 request.addHeader("Cache-Control", "max-age=20");
94 final RequestCacheControl cacheControl2 = RequestCacheControl.builder()
95 .setNoStore(true)
96 .setMaxAge(20)
97 .build();
98
99 Assertions.assertFalse(policy.canBeServedFromCache(cacheControl2, request));
100 }
101
102 @Test
103 void testIsArbitraryMethodServableFromCache() {
104 final BasicHttpRequest request = new BasicHttpRequest("TRACE", "someUri");
105 final RequestCacheControl cacheControl = RequestCacheControl.builder()
106 .build();
107
108 Assertions.assertFalse(policy.canBeServedFromCache(cacheControl, request));
109
110 final BasicHttpRequest request2 = new BasicHttpRequest("huh", "someUri");
111
112 Assertions.assertFalse(policy.canBeServedFromCache(cacheControl, request2));
113
114 }
115
116 }