Skip to content
This repository was archived by the owner on Feb 13, 2020. It is now read-only.

Commit

Permalink
Response 2xx even if executor fails
Browse files Browse the repository at this point in the history
  • Loading branch information
ikikko committed Feb 7, 2015
1 parent f29d99f commit ea06ef8
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 17 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,10 @@ public String getMessage() {
return message;
}

private TypetalkMessage.Emoji emoji = TypetalkMessage.Emoji.SMILEY;
private TypetalkMessage.Emoji emoji;

public TypetalkMessage.Emoji getEmoji() {
return emoji;
return emoji != null ? emoji : TypetalkMessage.Emoji.SMILEY;
}

public void setEmoji(TypetalkMessage.Emoji emoji) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,23 +26,20 @@ protected WebhookExecutor(WebhookRequest req, StaplerResponse rsp, String comman
public abstract void execute();

protected void output(ResponseParameter parameter) {
outputInternal(Level.INFO, HttpServletResponse.SC_OK, parameter);
outputInternal(Level.INFO, parameter);
}

protected void outputError(ResponseParameter parameter) {
outputError(parameter, HttpServletResponse.SC_BAD_REQUEST);
parameter.setEmoji(TypetalkMessage.Emoji.CRY);
outputInternal(Level.WARNING, parameter);
}

protected void outputError(ResponseParameter parameter, int status) {
outputInternal(Level.WARNING, status, parameter);
}

private void outputInternal(Level level, int status, ResponseParameter parameter) {
private void outputInternal(Level level, ResponseParameter parameter) {
try {
logger.log(level, parameter.getDescription());

rsp.setContentType("application/json");
rsp.setStatus(status);
rsp.setStatus(HttpServletResponse.SC_OK);
rsp.getWriter().println(buildResponseMessage(parameter));
} catch (IOException e) {
throw new IllegalStateException(e);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
import org.jenkinsci.plugins.typetalk.webhookaction.WebhookRequest;
import org.kohsuke.stapler.StaplerResponse;

import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
Expand Down Expand Up @@ -54,7 +53,7 @@ public void execute() {

if (!project.hasPermission(Item.BUILD)) {
String name = Jenkins.getAuthentication().getName();
outputError(new ResponseParameter(String.format("Project [ %s ] cannot be built by '%s'", job, name)), HttpServletResponse.SC_FORBIDDEN);
outputError(new ResponseParameter(String.format("Project [ %s ] cannot be built by '%s'", job, name)));
return;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,8 @@ class BuildExecutorSpec extends Specification {
executor.execute()

then:
1 * res.setStatus(HttpServletResponse.SC_BAD_REQUEST)
1 * res.setStatus(HttpServletResponse.SC_OK)
!isBuilt()
}

def "execute : no parameter"() {
Expand All @@ -57,9 +58,11 @@ class BuildExecutorSpec extends Specification {

when:
executor.execute()
buildStarted.block()

then:
1 * res.setStatus(HttpServletResponse.SC_OK)
isBuilt()
}

def "execute : parameter without key"() {
Expand Down Expand Up @@ -182,17 +185,19 @@ class BuildExecutorSpec extends Specification {

when:
executor.execute()
if (isBuilt) buildStarted.block()

then:
1 * res.setStatus(result)
1 * res.setStatus(HttpServletResponse.SC_OK)
isBuilt() == isBuilt

cleanup:
SecurityContextHolder.setContext(old);

where:
username || result
"authorized" || HttpServletResponse.SC_OK
"not authorized" || HttpServletResponse.SC_FORBIDDEN
username || isBuilt
"authorized" || true
"not authorized" || false
}

// --- helper method ---
Expand All @@ -215,6 +220,10 @@ class BuildExecutorSpec extends Specification {
})
}

def isBuilt() {
project?.lastBuild != null
}

def getBuildParameter(key) {
project.lastBuild.getAction(ParametersAction.class).getParameter(key).value
}
Expand Down

0 comments on commit ea06ef8

Please sign in to comment.