package org.codehaus.httpcache4j;
import org.junit.Test;
import java.time.LocalDateTime;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
public class CacheableHeadersTest {
@Test
public void cacheControlprivateMaxAgeIsCacheable() {
Headers headers = new Headers().add(new Header(HeaderConstants.CACHE_CONTROL, "private, max-age=60"));
assertTrue("There was no cacheable headers", HeaderUtils.hasCacheableHeaders(headers));
}
@Test
public void expiresAndDateSetToTheSameInstantIsNotCacheable() {
Headers headers = new Headers().add(HeaderUtils.toHttpDate(HeaderConstants.DATE, LocalDateTime.now()));
headers = headers.add(HeaderUtils.toHttpDate(HeaderConstants.EXPIRES, LocalDateTime.now()));
assertFalse("There was cacheable headers", HeaderUtils.hasCacheableHeaders(headers));
}
@Test
public void expiresAndDateIsCacheable() {
LocalDateTime now = LocalDateTime.now();
Headers headers = new Headers().add(HeaderUtils.toHttpDate(HeaderConstants.DATE, now));
headers = headers.add(HeaderUtils.toHttpDate(HeaderConstants.EXPIRES, now.plusHours(10)));
assertTrue("There was uncacheable headers", HeaderUtils.hasCacheableHeaders(headers));
}
@Test
public void expiresSetTo0isNotCacheable() {
Headers headers = new Headers().add(HeaderUtils.toHttpDate(HeaderConstants.DATE, LocalDateTime.now()));
headers = headers.add(HeaderConstants.EXPIRES, "0");
assertFalse("There was cacheable headers", HeaderUtils.hasCacheableHeaders(headers));
}
@Test
public void expiresWithOutDateIsNotCacheable() {
Headers headers = new Headers().add(HeaderConstants.EXPIRES, "0");
assertFalse("There was cacheable headers", HeaderUtils.hasCacheableHeaders(headers));
}
@Test
public void cacheControlNoStoreIsNotCacheable() {
Headers headers = new Headers().add(new Header(HeaderConstants.CACHE_CONTROL, "no-store"));
assertFalse("There was cacheable headers", HeaderUtils.hasCacheableHeaders(headers));
}
@Test
public void cacheControlNoCacheIsNotCacheable() {
Headers headers = new Headers().add(new Header(HeaderConstants.PRAGMA, "no-cache"));
assertFalse("There was cacheable headers", HeaderUtils.hasCacheableHeaders(headers));
}
@Test
public void onlyETagIsCacheable() {
Headers headers = new Headers().add(HeaderConstants.ETAG, new Tag("foo").format());
assertTrue("There was no cacheable headers", HeaderUtils.hasCacheableHeaders(headers));
}
@Test
public void emptyHeadersIsNotCacheable() {
Headers headers = new Headers();
assertTrue("No headers is cacheable", HeaderUtils.hasCacheableHeaders(headers));
}
}