Skip to content

Commit 10643b6

Browse files
Added support for pr:from_ref_updated hook on bitbucket server (#100)
Co-authored-by: Ale de la Viña <[email protected]>
1 parent 0df65a5 commit 10643b6

File tree

2 files changed

+124
-4
lines changed

2 files changed

+124
-4
lines changed

service/hook/bitbucketserver/bitbucketserver.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -211,7 +211,7 @@ func transformPullRequestEvent(pullRequest PullRequestEventModel) hookCommon.Tra
211211

212212
func isAcceptEventType(eventKey string) bool {
213213
return (sliceutil.IsStringInSlice(eventKey,
214-
[]string{"repo:refs_changed", "pr:opened", "pr:modified", "pr:merged", "diagnostics:ping"}))
214+
[]string{"repo:refs_changed", "pr:opened", "pr:modified", "pr:merged", "diagnostics:ping", "pr:from_ref_updated"}))
215215
}
216216

217217
// TransformRequest ...
@@ -254,7 +254,7 @@ func (hp HookProvider) TransformRequest(r *http.Request) hookCommon.TransformRes
254254
return transformPushEvent(pushEvent)
255255
}
256256

257-
if eventKey == "pr:opened" || eventKey == "pr:modified" || eventKey == "pr:merged" {
257+
if eventKey == "pr:opened" || eventKey == "pr:modified" || eventKey == "pr:merged" || eventKey == "pr:from_ref_updated" {
258258
var pullRequestEvent PullRequestEventModel
259259
if err := json.NewDecoder(r.Body).Decode(&pullRequestEvent); err != nil {
260260
return hookCommon.TransformResultModel{
@@ -264,7 +264,7 @@ func (hp HookProvider) TransformRequest(r *http.Request) hookCommon.TransformRes
264264

265265
return transformPullRequestEvent(pullRequestEvent)
266266
}
267-
267+
268268
if eventKey == "diagnostics:ping" {
269269
return hookCommon.TransformResultModel{
270270
ShouldSkip: true,

service/hook/bitbucketserver/bitbucketserver_test.go

+121-1
Original file line numberDiff line numberDiff line change
@@ -291,6 +291,100 @@ const (
291291
]
292292
}
293293
}
294+
}`
295+
296+
samplePullRequestFromRefUpdatedData = `{
297+
"eventKey":"pr:from_ref_updated",
298+
"date":"2017-09-19T09:58:11+1000",
299+
"actor":{
300+
"name":"admin",
301+
"emailAddress":"[email protected]",
302+
"id":1,
303+
"displayName":"Administrator",
304+
"active":true,
305+
"slug":"admin",
306+
"type":"NORMAL"
307+
},
308+
"pullRequest":{
309+
"id":1,
310+
"version":0,
311+
"title":"a new file added",
312+
"state":"OPEN",
313+
"open":true,
314+
"closed":false,
315+
"createdDate":1505779091796,
316+
"updatedDate":1505779091796,
317+
"fromRef":{
318+
"id":"refs/heads/a-branch",
319+
"displayId":"a-branch",
320+
"latestCommit":"ef8755f06ee4b28c96a847a95cb8ec8ed6ddd1ca",
321+
"repository":{
322+
"slug":"repository",
323+
"id":84,
324+
"name":"repository",
325+
"scmId":"git",
326+
"state":"AVAILABLE",
327+
"statusMessage":"Available",
328+
"forkable":true,
329+
"project":{
330+
"key":"PROJ",
331+
"id":84,
332+
"name":"project",
333+
"public":false,
334+
"type":"NORMAL"
335+
},
336+
"public":false
337+
}
338+
},
339+
"toRef":{
340+
"id":"refs/heads/master",
341+
"displayId":"master",
342+
"latestCommit":"178864a7d521b6f5e720b386b2c2b0ef8563e0dc",
343+
"repository":{
344+
"slug":"repository",
345+
"id":84,
346+
"name":"repository",
347+
"scmId":"git",
348+
"state":"AVAILABLE",
349+
"statusMessage":"Available",
350+
"forkable":true,
351+
"project":{
352+
"key":"PROJ",
353+
"id":84,
354+
"name":"project",
355+
"public":false,
356+
"type":"NORMAL"
357+
},
358+
"public":false
359+
}
360+
},
361+
"locked":false,
362+
"author":{
363+
"user":{
364+
"name":"admin",
365+
"emailAddress":"[email protected]",
366+
"id":1,
367+
"displayName":"Administrator",
368+
"active":true,
369+
"slug":"admin",
370+
"type":"NORMAL"
371+
},
372+
"role":"AUTHOR",
373+
"approved":false,
374+
"status":"UNAPPROVED"
375+
},
376+
"reviewers":[
377+
378+
],
379+
"participants":[
380+
381+
],
382+
"links":{
383+
"self":[
384+
null
385+
]
386+
}
387+
}
294388
}`
295389

296390
samplePullRequestMergedData = `{
@@ -399,7 +493,7 @@ const (
399493
}
400494
}
401495
}`
402-
496+
403497
samplePingData = `{
404498
"test": true
405499
}`
@@ -1198,6 +1292,32 @@ func Test_HookProvider_TransformRequest(t *testing.T) {
11981292
require.Equal(t, false, hookTransformResult.DontWaitForTriggerResponse)
11991293
}
12001294

1295+
t.Log("Test with Sample Pull Request From Ref Updated Data")
1296+
{
1297+
request := http.Request{
1298+
Header: http.Header{
1299+
"X-Event-Key": {"pr:from_ref_updated"},
1300+
"Content-Type": {"application/json; charset=utf-8"},
1301+
},
1302+
Body: ioutil.NopCloser(strings.NewReader(samplePullRequestFromRefUpdatedData)),
1303+
}
1304+
hookTransformResult := provider.TransformRequest(&request)
1305+
require.NoError(t, hookTransformResult.Error)
1306+
require.False(t, hookTransformResult.ShouldSkip)
1307+
require.Equal(t, []bitriseapi.TriggerAPIParamsModel{
1308+
{
1309+
BuildParams: bitriseapi.BuildParamsModel{
1310+
CommitHash: "ef8755f06ee4b28c96a847a95cb8ec8ed6ddd1ca",
1311+
CommitMessage: "a new file added",
1312+
Branch: "a-branch",
1313+
BranchDest: "master",
1314+
PullRequestID: pointers.NewIntPtr(1),
1315+
},
1316+
},
1317+
}, hookTransformResult.TriggerAPIParams)
1318+
require.Equal(t, false, hookTransformResult.DontWaitForTriggerResponse)
1319+
}
1320+
12011321
t.Log("Test with Sample Pull Request merged data")
12021322
{
12031323
request := http.Request{

0 commit comments

Comments
 (0)