-
Notifications
You must be signed in to change notification settings - Fork 0
/
web_hook_server_test.go
85 lines (73 loc) · 2.02 KB
/
web_hook_server_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
package main
// The Webserver code base is copied from the go gitlab library examples, will rewrite so skipped tests
import (
"github.com/xanzy/go-gitlab"
"encoding/json"
"fmt"
"io/ioutil"
"os"
"testing"
"github.com/stretchr/testify/assert"
)
func testPayload(fixture int) *gitlab.MergeEvent {
var fixturePath string
var err error
switch fixture {
case 1:
fixturePath = "./tests/fixtures/merge_request_events/success.json"
case 2:
fixturePath = "./tests/fixtures/merge_request_events/cannot-be-merged.json"
case 3:
fixturePath = "./tests/fixtures/merge_request_events/merge-action.json"
case 4:
fixturePath = "./tests/fixtures/merge_request_events/approved-action.json"
}
if err != nil {
return nil
}
jsonFile, err := os.Open(fixturePath)
if err != nil {
fmt.Println(err)
}
defer jsonFile.Close()
byteValue, _ := ioutil.ReadAll(jsonFile)
var gmre *gitlab.MergeEvent
err = json.Unmarshal(byteValue, &gmre)
if err != nil {
fmt.Println("failed to Unmarshal test data")
}
return gmre
}
func TestHandleMRRequest(t *testing.T) {
type test struct {
fixture int
GitlabBotUserID int
result string
err error
}
tests := []test{
{1, 99999, "successfully added merge request to processing queue.", nil},
{2, 99999, "ignoring as merge request cannot be merged.", nil},
{3, 99999, "ignoring approved/merge action.", nil},
{4, 99999, "ignoring approved/merge action.", nil},
{1, 1, "ignoring request initiated through this service.", nil},
}
// Do not handle the channel element of this at the moment
requests := make(chan MergeRequest, 1)
for _, tc := range tests {
event := testPayload(tc.fixture)
wh := webhook{
Secret: "test",
EventsToAccept: []gitlab.EventType{gitlab.EventTypeMergeRequest},
GitlabBotUserID: tc.GitlabBotUserID,
Requests: requests,
}
got, err := wh.handleMRRequest(event)
if err != nil {
assert.Equal(t, err.Error(), tc.err.Error())
} else {
assert.NoError(t, err)
}
assert.Equal(t, tc.result, got)
}
}