Merge pull request #335 from AvanzaBank/action-resolver-refactoring-and-tests
More tests and refactoring of ActionResolver.onPost
This commit is contained in:
commit
bd313432b9
|
@ -17,7 +17,6 @@ import hudson.security.ACL;
|
|||
import hudson.util.HttpResponses;
|
||||
import jenkins.model.Jenkins;
|
||||
import org.apache.commons.io.IOUtils;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.kohsuke.stapler.StaplerRequest;
|
||||
import org.kohsuke.stapler.StaplerResponse;
|
||||
|
||||
|
@ -91,15 +90,21 @@ public class ActionResolver {
|
|||
}
|
||||
|
||||
private WebHookAction onPost(Job<?, ?> project, StaplerRequest request) {
|
||||
String requestBody = getRequestBody(request);
|
||||
String eventHeader = request.getHeader("X-Gitlab-Event");
|
||||
if (StringUtils.equals(eventHeader, "Merge Request Hook") ) {
|
||||
return new MergeRequestBuildAction(project, requestBody);
|
||||
} else if ( StringUtils.equals(eventHeader,"Push Hook") || StringUtils.equals(eventHeader,"Tag Push Hook")) {
|
||||
return new PushBuildAction(project, requestBody);
|
||||
if (eventHeader == null) {
|
||||
LOGGER.log(Level.FINE, "Missing X-Gitlab-Event header");
|
||||
return new NoopAction();
|
||||
}
|
||||
switch (eventHeader) {
|
||||
case "Merge Request Hook":
|
||||
return new MergeRequestBuildAction(project, getRequestBody(request));
|
||||
case "Push Hook":
|
||||
case "Tag Push Hook":
|
||||
return new PushBuildAction(project, getRequestBody(request));
|
||||
default:
|
||||
LOGGER.log(Level.FINE, "Unsupported X-Gitlab-Event header: {0}", eventHeader);
|
||||
return new NoopAction();
|
||||
}
|
||||
LOGGER.log(Level.FINE, "Unsupported event header: {0}", eventHeader);
|
||||
return new NoopAction();
|
||||
}
|
||||
|
||||
private String getRequestBody(StaplerRequest request) {
|
||||
|
@ -132,7 +137,7 @@ public class ActionResolver {
|
|||
});
|
||||
}
|
||||
|
||||
private static class NoopAction implements WebHookAction {
|
||||
static class NoopAction implements WebHookAction {
|
||||
public void execute(StaplerResponse response) {
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package com.dabsquared.gitlabjenkins.webhook;
|
||||
|
||||
import com.dabsquared.gitlabjenkins.webhook.ActionResolver.NoopAction;
|
||||
import com.dabsquared.gitlabjenkins.webhook.build.MergeRequestBuildAction;
|
||||
import com.dabsquared.gitlabjenkins.webhook.build.PushBuildAction;
|
||||
import com.dabsquared.gitlabjenkins.webhook.status.BranchBuildPageRedirectAction;
|
||||
|
@ -152,6 +153,33 @@ public class ActionResolverTest {
|
|||
assertThat(resolvedAction, instanceOf(PushBuildAction.class));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void postPushMissingEventHeader() throws IOException {
|
||||
String projectName = "test";
|
||||
jenkins.createFreeStyleProject(projectName);
|
||||
when(request.getRestOfPath()).thenReturn("");
|
||||
when(request.getMethod()).thenReturn("POST");
|
||||
when(request.getHeader("X-Gitlab-Event")).thenReturn(null);
|
||||
when(request.getInputStream()).thenReturn(new ResourceServletInputStream("ActionResolverTest_postPush.json"));
|
||||
|
||||
WebHookAction resolvedAction = new ActionResolver().resolve(projectName, request);
|
||||
|
||||
assertThat(resolvedAction, instanceOf(NoopAction.class));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void postPushUnsupportedEventHeader() throws IOException {
|
||||
String projectName = "test";
|
||||
jenkins.createFreeStyleProject(projectName);
|
||||
when(request.getRestOfPath()).thenReturn("");
|
||||
when(request.getMethod()).thenReturn("POST");
|
||||
when(request.getHeader("X-Gitlab-Event")).thenReturn("__Not Supported Header__");
|
||||
when(request.getInputStream()).thenReturn(new ResourceServletInputStream("ActionResolverTest_postPush.json"));
|
||||
|
||||
WebHookAction resolvedAction = new ActionResolver().resolve(projectName, request);
|
||||
|
||||
assertThat(resolvedAction, instanceOf(NoopAction.class));
|
||||
}
|
||||
|
||||
|
||||
private static class ResourceServletInputStream extends ServletInputStream {
|
||||
|
|
Loading…
Reference in New Issue