2019-11-02 01:51:22 +03:00
// Copyright 2019 The Gitea Authors. All rights reserved.
2022-11-27 21:20:29 +03:00
// SPDX-License-Identifier: MIT
2019-11-02 01:51:22 +03:00
package webhook
import (
"testing"
2022-10-21 19:21:56 +03:00
"code.gitea.io/gitea/models/db"
2021-12-10 04:27:50 +03:00
repo_model "code.gitea.io/gitea/models/repo"
2021-11-12 17:36:47 +03:00
"code.gitea.io/gitea/models/unittest"
2021-11-10 08:13:16 +03:00
webhook_model "code.gitea.io/gitea/models/webhook"
2019-11-02 01:51:22 +03:00
api "code.gitea.io/gitea/modules/structs"
2023-01-01 18:23:15 +03:00
webhook_module "code.gitea.io/gitea/modules/webhook"
2021-11-17 15:34:35 +03:00
2019-11-02 01:51:22 +03:00
"github.com/stretchr/testify/assert"
)
2024-03-19 13:59:48 +03:00
func activateWebhook ( t * testing . T , hookID int64 ) {
t . Helper ( )
updated , err := db . GetEngine ( db . DefaultContext ) . ID ( hookID ) . Cols ( "is_active" ) . Update ( webhook_model . Webhook { IsActive : true } )
assert . Equal ( t , int64 ( 1 ) , updated )
assert . NoError ( t , err )
}
2019-11-02 01:51:22 +03:00
func TestPrepareWebhooks ( t * testing . T ) {
2021-11-12 17:36:47 +03:00
assert . NoError ( t , unittest . PrepareTestDatabase ( ) )
2019-11-02 01:51:22 +03:00
2022-08-16 05:22:25 +03:00
repo := unittest . AssertExistsAndLoadBean ( t , & repo_model . Repository { ID : 1 } )
2024-03-19 13:59:48 +03:00
activateWebhook ( t , 1 )
2021-11-10 08:13:16 +03:00
hookTasks := [ ] * webhook_model . HookTask {
2023-01-01 18:23:15 +03:00
{ HookID : 1 , EventType : webhook_module . HookEventPush } ,
2019-11-02 01:51:22 +03:00
}
for _ , hookTask := range hookTasks {
2021-11-16 11:53:21 +03:00
unittest . AssertNotExistsBean ( t , hookTask )
2019-11-02 01:51:22 +03:00
}
2023-01-01 18:23:15 +03:00
assert . NoError ( t , PrepareWebhooks ( db . DefaultContext , EventSource { Repository : repo } , webhook_module . HookEventPush , & api . PushPayload { Commits : [ ] * api . PayloadCommit { { } } } ) )
2019-11-02 01:51:22 +03:00
for _ , hookTask := range hookTasks {
2021-11-16 11:53:21 +03:00
unittest . AssertExistsAndLoadBean ( t , hookTask )
2019-11-02 01:51:22 +03:00
}
}
func TestPrepareWebhooksBranchFilterMatch ( t * testing . T ) {
2021-11-12 17:36:47 +03:00
assert . NoError ( t , unittest . PrepareTestDatabase ( ) )
2019-11-02 01:51:22 +03:00
2022-08-16 05:22:25 +03:00
repo := unittest . AssertExistsAndLoadBean ( t , & repo_model . Repository { ID : 2 } )
2024-03-19 13:59:48 +03:00
activateWebhook ( t , 4 )
2021-11-10 08:13:16 +03:00
hookTasks := [ ] * webhook_model . HookTask {
2023-01-01 18:23:15 +03:00
{ HookID : 4 , EventType : webhook_module . HookEventPush } ,
2019-11-02 01:51:22 +03:00
}
for _ , hookTask := range hookTasks {
2021-11-16 11:53:21 +03:00
unittest . AssertNotExistsBean ( t , hookTask )
2019-11-02 01:51:22 +03:00
}
// this test also ensures that * doesn't handle / in any special way (like shell would)
2023-01-01 18:23:15 +03:00
assert . NoError ( t , PrepareWebhooks ( db . DefaultContext , EventSource { Repository : repo } , webhook_module . HookEventPush , & api . PushPayload { Ref : "refs/heads/feature/7791" , Commits : [ ] * api . PayloadCommit { { } } } ) )
2019-11-02 01:51:22 +03:00
for _ , hookTask := range hookTasks {
2021-11-16 11:53:21 +03:00
unittest . AssertExistsAndLoadBean ( t , hookTask )
2019-11-02 01:51:22 +03:00
}
}
func TestPrepareWebhooksBranchFilterNoMatch ( t * testing . T ) {
2021-11-12 17:36:47 +03:00
assert . NoError ( t , unittest . PrepareTestDatabase ( ) )
2019-11-02 01:51:22 +03:00
2022-08-16 05:22:25 +03:00
repo := unittest . AssertExistsAndLoadBean ( t , & repo_model . Repository { ID : 2 } )
2021-11-10 08:13:16 +03:00
hookTasks := [ ] * webhook_model . HookTask {
2023-01-01 18:23:15 +03:00
{ HookID : 4 , EventType : webhook_module . HookEventPush } ,
2019-11-02 01:51:22 +03:00
}
for _ , hookTask := range hookTasks {
2021-11-16 11:53:21 +03:00
unittest . AssertNotExistsBean ( t , hookTask )
2019-11-02 01:51:22 +03:00
}
2023-01-01 18:23:15 +03:00
assert . NoError ( t , PrepareWebhooks ( db . DefaultContext , EventSource { Repository : repo } , webhook_module . HookEventPush , & api . PushPayload { Ref : "refs/heads/fix_weird_bug" } ) )
2019-11-02 01:51:22 +03:00
for _ , hookTask := range hookTasks {
2021-11-16 11:53:21 +03:00
unittest . AssertNotExistsBean ( t , hookTask )
2019-11-02 01:51:22 +03:00
}
}