package org.jooby.issues;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import java.time.Duration;
import java.util.concurrent.TimeUnit;
import org.jooby.handlers.AssetHandler;
import org.jooby.test.ServerFeature;
import org.junit.Assert;
import org.junit.Test;
public class Issue356 extends ServerFeature {
{
assets("/assets/file.css", new AssetHandler("/")
.etag(false).lastModified(false).maxAge(TimeUnit.HOURS.toSeconds(24)));
assets("/assets/favicon.ico", new AssetHandler("/")
.etag(false).lastModified(true).maxAge(Duration.ofDays(14)));
assets("/assets/file.js", new AssetHandler("/")
.etag(true).lastModified(false).maxAge(Duration.ofDays(2)));
assets("/assets/empty.css", new AssetHandler("/")
.etag(true).lastModified(true).maxAge("7d"));
}
@Test
public void etag() throws Exception {
request().get("/assets/file.css").execute().header("ETag", Assert::assertNull);
request().get("/assets/favicon.ico").execute().header("ETag", Assert::assertNull);
request().get("/assets/file.js").execute().header("ETag", Assert::assertNotNull);
request().get("/assets/empty.css").execute().header("ETag", Assert::assertNotNull);
}
@Test
public void lastModified() throws Exception {
request().get("/assets/file.css").execute().header("Last-Modified", Assert::assertNull);
request().get("/assets/favicon.ico").execute().header("Last-Modified", Assert::assertNotNull);
request().get("/assets/file.js").execute().header("Last-Modified", Assert::assertNull);
request().get("/assets/empty.css").execute().header("Last-Modified", Assert::assertNotNull);
}
@Test
public void maxAge() throws Exception {
request().get("/assets/file.css").execute().header("Cache-Control", value -> {
assertNotNull(value);
assertTrue(value.contains("max-age=86400"));
});
request().get("/assets/favicon.ico").execute().header("Cache-Control", value -> {
assertNotNull(value);
assertTrue(value.contains("max-age=1209600"));
});
request().get("/assets/file.js").execute().header("Cache-Control", value -> {
assertNotNull(value);
assertTrue(value.contains("max-age=172800"));
});
request().get("/assets/empty.css").execute().header("Cache-Control", value -> {
assertNotNull(value);
assertTrue(value.contains("max-age=604800"));
});
}
}