1 /*
2 * ====================================================================
3 * Licensed to the Apache Software Foundation (ASF) under one
4 * or more contributor license agreements. See the NOTICE file
5 * distributed with this work for additional information
6 * regarding copyright ownership. The ASF licenses this file
7 * to you under the Apache License, Version 2.0 (the
8 * "License"); you may not use this file except in compliance
9 * with the License. You may obtain a copy of the License at
10 *
11 * http://www.apache.org/licenses/LICENSE-2.0
12 *
13 * Unless required by applicable law or agreed to in writing,
14 * software distributed under the License is distributed on an
15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16 * KIND, either express or implied. See the License for the
17 * specific language governing permissions and limitations
18 * under the License.
19 * ====================================================================
20 *
21 * This software consists of voluntary contributions made by many
22 * individuals on behalf of the Apache Software Foundation. For more
23 * information on the Apache Software Foundation, please see
24 * <http://www.apache.org/>.
25 *
26 */
27 package org.apache.hc.client5.http.impl.cache;
28
29 import static org.hamcrest.MatcherAssert.assertThat;
30
31 import org.apache.hc.client5.http.HeaderMatcher;
32 import org.apache.hc.client5.http.cache.RequestCacheControl;
33 import org.junit.jupiter.api.Assertions;
34 import org.junit.jupiter.api.Test;
35
36 class CacheControlGeneratorTest {
37
38 private final CacheControlHeaderGenerator generator = CacheControlHeaderGenerator.INSTANCE;
39
40 @Test
41 void testGenerateRequestCacheControlHeader() {
42 assertThat(generator.generate(
43 RequestCacheControl.builder()
44 .setMaxAge(12)
45 .setMaxStale(23)
46 .setMinFresh(34)
47 .setNoCache(true)
48 .setNoStore(true)
49 .setOnlyIfCached(true)
50 .setStaleIfError(56)
51 .build()),
52 HeaderMatcher.same("Cache-Control", "max-age=12, max-stale=23, " +
53 "min-fresh=34, no-cache, no-store, only-if-cached, stale-if-error=56"));
54 assertThat(generator.generate(
55 RequestCacheControl.builder()
56 .setMaxAge(12)
57 .setNoCache(true)
58 .setMinFresh(34)
59 .setMaxStale(23)
60 .setNoStore(true)
61 .setStaleIfError(56)
62 .setOnlyIfCached(true)
63 .build()),
64 HeaderMatcher.same("Cache-Control", "max-age=12, max-stale=23, " +
65 "min-fresh=34, no-cache, no-store, only-if-cached, stale-if-error=56"));
66 assertThat(generator.generate(
67 RequestCacheControl.builder()
68 .setMaxAge(0)
69 .build()),
70 HeaderMatcher.same("Cache-Control", "max-age=0"));
71 assertThat(generator.generate(
72 RequestCacheControl.builder()
73 .setMaxAge(-1)
74 .setMinFresh(10)
75 .build()),
76 HeaderMatcher.same("Cache-Control", "min-fresh=10"));
77 }
78
79 @Test
80 void testGenerateRequestCacheControlHeaderNoDirectives() {
81 final RequestCacheControl cacheControl = RequestCacheControl.builder()
82 .build();
83 Assertions.assertNull(generator.generate(cacheControl));
84 }
85
86 }