/* * Copyright (c) 2012 - 2016 Jadler contributors * This program is made available under the terms of the MIT License. */ package net.jadler.matchers; import net.jadler.Request; import org.junit.Test; import org.hamcrest.Matcher; import java.util.List; import org.junit.runner.RunWith; import org.mockito.runners.MockitoJUnitRunner; import org.mockito.Mock; import net.jadler.KeyValues; import static org.junit.Assert.assertThat; import static net.jadler.matchers.HeaderRequestMatcher.requestHeader; import static org.hamcrest.Matchers.*; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import static net.jadler.KeyValues.EMPTY; @RunWith(MockitoJUnitRunner.class) public class HeaderRequestMatcherTest { private static final String HEADER_NAME = "header1"; private static final String HEADER_VALUE1 = "value1"; private static final String HEADER_VALUE2 = "value2"; private static final String NO_VALUE_HEADER = "header2"; private static final String UNDEFINED_HEADER = "header3"; @Mock Matcher<? super List<String>> mockMatcher; @Test public void retrieveValue() { final KeyValues headers = EMPTY.add(HEADER_NAME, HEADER_VALUE1).add(HEADER_NAME, HEADER_VALUE2); final Request req = when(mock(Request.class).getHeaders()).thenReturn(headers).getMock(); assertThat(requestHeader(HEADER_NAME, mockMatcher).retrieveValue(req), is(allOf(notNullValue(), contains(HEADER_VALUE1, HEADER_VALUE2)))); } @Test public void retrieveValueEmpty() throws Exception { final KeyValues param = EMPTY.add(NO_VALUE_HEADER, ""); final Request req = when(mock(Request.class).getHeaders()).thenReturn(param).getMock(); assertThat(requestHeader(NO_VALUE_HEADER, mockMatcher).retrieveValue(req), is(allOf(notNullValue(), contains("")))); } @Test public void retrieveValueNoHeader() { final Request req = when(mock(Request.class).getHeaders()).thenReturn(EMPTY).getMock(); assertThat(requestHeader(UNDEFINED_HEADER, mockMatcher).retrieveValue(req), is(nullValue())); } @Test public void provideDescription() { assertThat(requestHeader(HEADER_NAME, mockMatcher).provideDescription(), is("header \"" + HEADER_NAME + "\" is")); } }