package br.gov.servicos.foundation.http;
import lombok.experimental.FieldDefaults;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import static lombok.AccessLevel.PRIVATE;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
import static org.mockito.BDDMockito.given;
@RunWith(MockitoJUnitRunner.class)
@FieldDefaults(level = PRIVATE)
public class CookiesTest {
@Mock
HttpServletRequest httpServletRequest;
Cookies cookies;
@Before
public void setUp() throws Exception {
cookies = new Cookies(httpServletRequest);
}
@Test
public void deveResponderTrueQuandoUmCookieTemStatusON() {
given(httpServletRequest.getCookies()).willReturn(cookies(new Cookie("ativado", "on")));
assertThat(cookies.isOn("ativado"), is(true));
}
@Test
public void deveResponderFalseQuandoUmCookieTemStatusOFF() {
given(httpServletRequest.getCookies()).willReturn(cookies(new Cookie("ativado", "off")));
assertThat(cookies.isOn("ativado"), is(false));
}
@Test
public void deveResponderFalseQuandoOCookieNaoEstaPresente() {
given(httpServletRequest.getCookies()).willReturn(cookies());
assertThat(cookies.isOn("ativado"), is(false));
}
@Test
public void deveResponderFalseComCookiesNulos() {
given(httpServletRequest.getCookies()).willReturn(null);
assertThat(cookies.isOn("ativado"), is(false));
}
@Test
public void deveConterCookie() {
given(httpServletRequest.getCookies()).willReturn(cookies(new Cookie("ativado", "on")));
assertThat(cookies.contem("ativado"), is(true));
}
@Test
public void deveConterCookieMesmoQueNaoTenhaValor() {
given(httpServletRequest.getCookies()).willReturn(cookies(new Cookie("ativado", null)));
assertThat(cookies.contem("ativado"), is(true));
}
@Test
public void naoDeveConterQuandoOCookieNaoEstaPresente() {
given(httpServletRequest.getCookies()).willReturn(cookies());
assertThat(cookies.contem("ativado"), is(false));
}
@Test
public void naoDeveConterComCookiesNulos() {
given(httpServletRequest.getCookies()).willReturn(null);
assertThat(cookies.isOn("ativado"), is(false));
}
private Cookie[] cookies(Cookie... cookies) {
return cookies;
}
}