package restx.server.simple; import com.google.common.collect.Lists; import org.junit.Test; import org.simpleframework.http.*; import restx.HttpSettings; import restx.factory.Factory; import restx.server.simple.simple.SimpleRestxRequest; import static org.hamcrest.CoreMatchers.*; import static org.junit.Assert.*; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; /** * @author fcamblor */ public class CookiesTest { @Test public void shouldCookiesFetchedCorrectly() throws InterruptedException { SimpleRestxRequest restxRequest = createRestxRequest(new Cookie("foo", "valueWhenFound")); assertThat(restxRequest.getCookieValue("foo").or("valueWhenNotFound"), is(equalTo("valueWhenFound"))); assertThat(restxRequest.getCookieValue("unexistingCookie").or("valueWhenNotFound"), is(equalTo("valueWhenNotFound"))); } @Test public void shouldCookieExpirationBeCorrectlyCalculated() throws InterruptedException { SimpleRestxRequest restxRequest = createRestxRequest( persistentCookie("fastlyExpiredCookie", "fastlyExpiredCookieValue", 1), new Cookie("foo", "fooVal") ); assertThat(restxRequest.isPersistentCookie("foo"), is(false)); assertThat(restxRequest.isPersistentCookie("fastlyExpiredCookie"), is(true)); } private static SimpleRestxRequest createRestxRequest(Cookie... cookies) { Request simpleRequest = createSimpleRequestMock(cookies); return new SimpleRestxRequest(Factory.getInstance().getComponent(HttpSettings.class), "/foo", simpleRequest); } private static Request createSimpleRequestMock(Cookie... cookies) { Request simpleRequest = mock(Request.class); when(simpleRequest.getTarget()).thenReturn("/foo"); when(simpleRequest.getCookies()).thenReturn(Lists.newArrayList(cookies)); for(Cookie cookie : cookies){ when(simpleRequest.getCookie(cookie.getName())).thenReturn(cookie); } return simpleRequest; } private static Cookie persistentCookie(String name, String value, int expiry) { Cookie persistentCookie = new Cookie(name, value); persistentCookie.setExpiry(expiry); return persistentCookie; } }