Skip to content

Commit ca2e8cc

Browse files
committed
Tweak the event code just a little
1 parent 295fe0a commit ca2e8cc

File tree

3 files changed

+45
-45
lines changed

3 files changed

+45
-45
lines changed

event_parsing.go

+20-21
Original file line numberDiff line numberDiff line change
@@ -27,28 +27,21 @@ type EventType string
2727

2828
// List of available event types.
2929
const (
30+
EventConfidentialIssue EventType = "Confidential Issue Hook"
31+
EventConfidentialNote EventType = "Confidential Note Hook"
3032
EventTypeBuild EventType = "Build Hook"
3133
EventTypeDeployment EventType = "Deployment Hook"
3234
EventTypeIssue EventType = "Issue Hook"
33-
EventConfidentialIssue EventType = "Confidential Issue Hook"
3435
EventTypeJob EventType = "Job Hook"
3536
EventTypeMergeRequest EventType = "Merge Request Hook"
3637
EventTypeNote EventType = "Note Hook"
37-
EventConfidentialNote EventType = "Confidential Note Hook"
3838
EventTypePipeline EventType = "Pipeline Hook"
3939
EventTypePush EventType = "Push Hook"
4040
EventTypeRelease EventType = "Release Hook"
41+
EventTypeServiceHook EventType = "Service Hook"
4142
EventTypeSystemHook EventType = "System Hook"
4243
EventTypeTagPush EventType = "Tag Push Hook"
4344
EventTypeWikiPage EventType = "Wiki Page Hook"
44-
EventTypeServiceHook EventType = "Service Hook"
45-
)
46-
47-
const (
48-
noteableTypeCommit = "Commit"
49-
noteableTypeMergeRequest = "MergeRequest"
50-
noteableTypeIssue = "Issue"
51-
noteableTypeSnippet = "Snippet"
5245
)
5346

5447
const (
@@ -57,6 +50,13 @@ const (
5750
eventObjectKindMergeRequest = "merge_request"
5851
)
5952

53+
const (
54+
noteableTypeCommit = "Commit"
55+
noteableTypeIssue = "Issue"
56+
noteableTypeMergeRequest = "MergeRequest"
57+
noteableTypeSnippet = "Snippet"
58+
)
59+
6060
type noteEvent struct {
6161
ObjectKind string `json:"object_kind"`
6262
ObjectAttributes struct {
@@ -220,16 +220,6 @@ func ParseWebhook(eventType EventType, payload []byte) (event interface{}, err e
220220
event = &JobEvent{}
221221
case EventTypeMergeRequest:
222222
event = &MergeEvent{}
223-
case EventTypePipeline:
224-
event = &PipelineEvent{}
225-
case EventTypePush:
226-
event = &PushEvent{}
227-
case EventTypeRelease:
228-
event = &ReleaseEvent{}
229-
case EventTypeTagPush:
230-
event = &TagEvent{}
231-
case EventTypeWikiPage:
232-
event = &WikiPageEvent{}
233223
case EventTypeNote, EventConfidentialNote:
234224
note := &noteEvent{}
235225
err := json.Unmarshal(payload, note)
@@ -253,6 +243,12 @@ func ParseWebhook(eventType EventType, payload []byte) (event interface{}, err e
253243
default:
254244
return nil, fmt.Errorf("unexpected noteable type %s", note.ObjectAttributes.NoteableType)
255245
}
246+
case EventTypePipeline:
247+
event = &PipelineEvent{}
248+
case EventTypePush:
249+
event = &PushEvent{}
250+
case EventTypeRelease:
251+
event = &ReleaseEvent{}
256252
case EventTypeServiceHook:
257253
service := &serviceEvent{}
258254
err := json.Unmarshal(payload, service)
@@ -269,7 +265,10 @@ func ParseWebhook(eventType EventType, payload []byte) (event interface{}, err e
269265
default:
270266
return nil, fmt.Errorf("unexpected service type %s", service.ObjectKind)
271267
}
272-
268+
case EventTypeTagPush:
269+
event = &TagEvent{}
270+
case EventTypeWikiPage:
271+
event = &WikiPageEvent{}
273272
default:
274273
return nil, fmt.Errorf("unexpected event type: %s", eventType)
275274
}

event_parsing_webhook_test.go

+23-23
Original file line numberDiff line numberDiff line change
@@ -330,6 +330,29 @@ func TestParseReleaseHook(t *testing.T) {
330330
}
331331
}
332332

333+
func TestParseServiceWebHook(t *testing.T) {
334+
parsedEvent, err := ParseWebhook("Service Hook", loadFixture("testdata/webhooks/service_merge_request.json"))
335+
if err != nil {
336+
t.Errorf("Error parsing service hook merge request: %s", err)
337+
}
338+
339+
switch event := parsedEvent.(type) {
340+
case *MergeEvent:
341+
assert.EqualValues(t, &EventUser{
342+
ID: 2,
343+
Name: "the test",
344+
Username: "test",
345+
346+
AvatarURL: "https://www.gravatar.com/avatar/dd46a756faad4727fb679320751f6dea?s=80&d=identicon",
347+
}, event.User)
348+
assert.EqualValues(t, "unchecked", event.ObjectAttributes.MergeStatus)
349+
assert.EqualValues(t, "next-feature", event.ObjectAttributes.SourceBranch)
350+
assert.EqualValues(t, "master", event.ObjectAttributes.TargetBranch)
351+
default:
352+
t.Errorf("unexpected event type: %s", reflect.TypeOf(parsedEvent))
353+
}
354+
}
355+
333356
func TestParseSnippetCommentHook(t *testing.T) {
334357
raw := loadFixture("testdata/webhooks/note_snippet.json")
335358

@@ -423,26 +446,3 @@ func TestParseWikiPageHook(t *testing.T) {
423446
t.Errorf("Message is %v, want %v", event.ObjectAttributes.Message, "adding an awesome page to the wiki")
424447
}
425448
}
426-
427-
func TestParseServiceWebHook(t *testing.T) {
428-
parsedEvent, err := ParseWebhook("Service Hook", loadFixture("testdata/webhooks/service_merge_request.json"))
429-
if err != nil {
430-
t.Errorf("Error parsing service hook merge request: %s", err)
431-
}
432-
433-
switch event := parsedEvent.(type) {
434-
case *MergeEvent:
435-
assert.EqualValues(t, &EventUser{
436-
ID: 2,
437-
Name: "the test",
438-
Username: "test",
439-
440-
AvatarURL: "https://www.gravatar.com/avatar/dd46a756faad4727fb679320751f6dea?s=80&d=identicon",
441-
}, event.User)
442-
assert.EqualValues(t, "unchecked", event.ObjectAttributes.MergeStatus)
443-
assert.EqualValues(t, "next-feature", event.ObjectAttributes.SourceBranch)
444-
assert.EqualValues(t, "master", event.ObjectAttributes.TargetBranch)
445-
default:
446-
t.Errorf("unexpected event type: %s", reflect.TypeOf(parsedEvent))
447-
}
448-
}

strings_test.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
package gitlab
22

33
import (
4-
"github.com/stretchr/testify/assert"
54
"testing"
5+
6+
"github.com/stretchr/testify/assert"
67
)
78

89
type Person struct {

0 commit comments

Comments
 (0)