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