code.gitea.io/gitea@v1.21.7/services/webhook/webhook_test.go (about) 1 // Copyright 2019 The Gitea Authors. All rights reserved. 2 // SPDX-License-Identifier: MIT 3 4 package webhook 5 6 import ( 7 "testing" 8 9 "code.gitea.io/gitea/models/db" 10 repo_model "code.gitea.io/gitea/models/repo" 11 "code.gitea.io/gitea/models/unittest" 12 webhook_model "code.gitea.io/gitea/models/webhook" 13 api "code.gitea.io/gitea/modules/structs" 14 webhook_module "code.gitea.io/gitea/modules/webhook" 15 16 "github.com/stretchr/testify/assert" 17 ) 18 19 func TestWebhook_GetSlackHook(t *testing.T) { 20 w := &webhook_model.Webhook{ 21 Meta: `{"channel": "foo", "username": "username", "color": "blue"}`, 22 } 23 slackHook := GetSlackHook(w) 24 assert.Equal(t, *slackHook, SlackMeta{ 25 Channel: "foo", 26 Username: "username", 27 Color: "blue", 28 }) 29 } 30 31 func TestPrepareWebhooks(t *testing.T) { 32 assert.NoError(t, unittest.PrepareTestDatabase()) 33 34 repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 1}) 35 hookTasks := []*webhook_model.HookTask{ 36 {HookID: 1, EventType: webhook_module.HookEventPush}, 37 } 38 for _, hookTask := range hookTasks { 39 unittest.AssertNotExistsBean(t, hookTask) 40 } 41 assert.NoError(t, PrepareWebhooks(db.DefaultContext, EventSource{Repository: repo}, webhook_module.HookEventPush, &api.PushPayload{Commits: []*api.PayloadCommit{{}}})) 42 for _, hookTask := range hookTasks { 43 unittest.AssertExistsAndLoadBean(t, hookTask) 44 } 45 } 46 47 func TestPrepareWebhooksBranchFilterMatch(t *testing.T) { 48 assert.NoError(t, unittest.PrepareTestDatabase()) 49 50 repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 2}) 51 hookTasks := []*webhook_model.HookTask{ 52 {HookID: 4, EventType: webhook_module.HookEventPush}, 53 } 54 for _, hookTask := range hookTasks { 55 unittest.AssertNotExistsBean(t, hookTask) 56 } 57 // this test also ensures that * doesn't handle / in any special way (like shell would) 58 assert.NoError(t, PrepareWebhooks(db.DefaultContext, EventSource{Repository: repo}, webhook_module.HookEventPush, &api.PushPayload{Ref: "refs/heads/feature/7791", Commits: []*api.PayloadCommit{{}}})) 59 for _, hookTask := range hookTasks { 60 unittest.AssertExistsAndLoadBean(t, hookTask) 61 } 62 } 63 64 func TestPrepareWebhooksBranchFilterNoMatch(t *testing.T) { 65 assert.NoError(t, unittest.PrepareTestDatabase()) 66 67 repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 2}) 68 hookTasks := []*webhook_model.HookTask{ 69 {HookID: 4, EventType: webhook_module.HookEventPush}, 70 } 71 for _, hookTask := range hookTasks { 72 unittest.AssertNotExistsBean(t, hookTask) 73 } 74 assert.NoError(t, PrepareWebhooks(db.DefaultContext, EventSource{Repository: repo}, webhook_module.HookEventPush, &api.PushPayload{Ref: "refs/heads/fix_weird_bug"})) 75 76 for _, hookTask := range hookTasks { 77 unittest.AssertNotExistsBean(t, hookTask) 78 } 79 } 80 81 // TODO TestHookTask_deliver 82 83 // TODO TestDeliverHooks