package org.jenkinsci.plugins.github.webhook;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.kohsuke.github.GHEvent;
import org.kohsuke.stapler.StaplerRequest;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.equalTo;
import static org.hamcrest.Matchers.instanceOf;
import static org.hamcrest.Matchers.nullValue;
import static org.mockito.Mockito.when;
/**
* @author lanwen (Merkushev Kirill)
*/
@RunWith(MockitoJUnitRunner.class)
public class GHEventHeaderTest {
public static final String STRING_PUSH_HEADER = "push";
public static final String PARAM_NAME = "event";
public static final String UNKNOWN_EVENT = "unkn";
@Mock
private StaplerRequest req;
@Mock
private GHEventHeader ann;
@Test
public void shouldReturnParsedPushHeader() throws Exception {
when(req.getHeader(GHEventHeader.PayloadHandler.EVENT_HEADER)).thenReturn(STRING_PUSH_HEADER);
Object event = new GHEventHeader.PayloadHandler().parse(req, ann, GHEvent.class, PARAM_NAME);
assertThat("instance of event", event, instanceOf(GHEvent.class));
assertThat("parsed event", (GHEvent) event, equalTo(GHEvent.PUSH));
}
@Test
public void shouldReturnNullOnEmptyHeader() throws Exception {
Object event = new GHEventHeader.PayloadHandler().parse(req, ann, GHEvent.class, PARAM_NAME);
assertThat("event with empty header", event, nullValue());
}
@Test
public void shouldReturnNullOnUnknownEventHeader() throws Exception {
when(req.getHeader(GHEventHeader.PayloadHandler.EVENT_HEADER)).thenReturn(UNKNOWN_EVENT);
Object event = new GHEventHeader.PayloadHandler().parse(req, ann, GHEvent.class, PARAM_NAME);
assertThat("event with unknown event header", event, nullValue());
}
@Test(expected = IllegalArgumentException.class)
public void shouldThrowExcOnWrongTypeOfHeader() throws Exception {
new GHEventHeader.PayloadHandler().parse(req, ann, String.class, PARAM_NAME);
}
}