Skip to content

Commit

Permalink
fix(webhooks): Test for empty ref on Git hooks (#590)
Browse files Browse the repository at this point in the history
* fix(webhooks):  Test for empty ref on Git hooks

Some Git webhooks don't have a "ref" field, which is assumed in this
handler.  Sets the branch to empty string in this case (presuming other
code is expecting to find a non-null value further downstream).
  • Loading branch information
dotdotdotpaul authored and marchello2000 committed Jul 3, 2019
1 parent 1708ec0 commit 918768f
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,11 @@ public void handle(Event event, Map postedEvent) {
objectMapper.convertValue(postedEvent, GithubWebhookEvent.class);

event.content.put("hash", githubWebhookEvent.after);
event.content.put("branch", githubWebhookEvent.ref.replace("refs/heads/", ""));
if (githubWebhookEvent.ref == null) {
event.content.put("branch", "");
} else {
event.content.put("branch", githubWebhookEvent.ref.replace("refs/heads/", ""));
}
event.content.put("repoProject", githubWebhookEvent.repository.owner.name);
event.content.put("slug", githubWebhookEvent.repository.name);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -401,6 +401,42 @@ class WebhooksControllerSpec extends Specification {
event.content.branch == "simple-tag"
}

void 'handles non-push Github Webhook Event gracefully'() {
def event

given:
WebhooksController controller = new WebhooksController(mapper: new ObjectMapper(), scmWebhookHandler: scmWebhookHandler)
controller.propagator = Mock(EventPropagator)
controller.artifactExtractor = Mock(ArtifactExtractor)
controller.artifactExtractor.extractArtifacts(_, _, _) >> []

when:
def response = controller.forwardEvent(
"git",
"github",
"""{
"before": "a10867b14bb761a232cd80139fbd4c0d33264240",
"after": "0000000000000000000000000000000000000000",
"repository": {
"name": "Hello-World",
"owner": {
"name": "Codertocat"
}
}
}
""", new HttpHeaders())

then:
1 * controller.propagator.processEvent(_) >> {
event = it[0]
}

event.content.hash == "0000000000000000000000000000000000000000"
event.content.repoProject == "Codertocat"
event.content.slug == "Hello-World"
event.content.branch == ""
}

void "handles Gitlab Webhook Event"() {
def event

Expand Down

0 comments on commit 918768f

Please sign in to comment.