package com.vtence.molecule.middlewares;
import com.vtence.molecule.Request;
import com.vtence.molecule.Response;
import org.junit.Test;
import java.time.Clock;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZoneOffset;
import java.util.concurrent.ExecutionException;
import static com.vtence.molecule.testing.ResponseAssert.assertThat;
public class DateHeaderTest {
Instant currentTime = LocalDateTime.of(2012, 6, 8, 0, 0, 0).toInstant(ZoneOffset.of("-04:00"));
DateHeader dateHeader = new DateHeader(Clock.fixed(currentTime, ZoneId.systemDefault()));
Request request = new Request();
Response response = new Response();
@Test public void
setsDateHeaderFromClockTimeOnceDoneIfMissing() throws Exception {
dateHeader.handle(request, response);
assertThat(response).hasNoHeader("Date");
response.done();
assertNoExecutionError();
assertThat(response).hasHeader("Date", "Fri, 8 Jun 2012 04:00:00 GMT");
}
@Test public void
wontOverrideExistingDateHeader() throws Exception {
dateHeader.handle(request, response);
response.header("Date", "now").done();
assertNoExecutionError();
assertThat(response).hasHeader("Date", "now");
}
private void assertNoExecutionError() throws ExecutionException, InterruptedException {
response.await();
}
}