workflow-pr: renamed files
This commit is contained in:
220
workflow-pr/pr_processor_test.go
Normal file
220
workflow-pr/pr_processor_test.go
Normal file
@@ -0,0 +1,220 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"fmt"
|
||||
"log"
|
||||
"testing"
|
||||
|
||||
"go.uber.org/mock/gomock"
|
||||
"src.opensuse.org/autogits/common"
|
||||
|
||||
mock_common "src.opensuse.org/autogits/common/mock"
|
||||
mock_main "src.opensuse.org/workflow-pr/mock"
|
||||
)
|
||||
|
||||
func TestPRProcessor(t *testing.T) {
|
||||
var logBuf bytes.Buffer
|
||||
oldOut := log.Writer()
|
||||
log.SetOutput(&logBuf)
|
||||
defer log.SetOutput(oldOut)
|
||||
|
||||
testConfiguration := make(map[string][]*common.AutogitConfig)
|
||||
|
||||
testConfiguration["test"] = make([]*common.AutogitConfig, 1, 1)
|
||||
testConfiguration["test"][0] = &common.AutogitConfig{
|
||||
Branch: "branch",
|
||||
}
|
||||
|
||||
req := &RequestProcessor{
|
||||
configuredRepos: testConfiguration,
|
||||
git: &common.GitHandlerImpl{},
|
||||
}
|
||||
|
||||
event := &common.PullRequestWebhookEvent{
|
||||
// Action: "opened",
|
||||
Number: 1,
|
||||
Pull_Request: &common.PullRequest{
|
||||
Id: 1,
|
||||
Base: common.Head{
|
||||
Ref: "branch",
|
||||
Repo: &common.Repository{
|
||||
Name: "testRepo",
|
||||
},
|
||||
},
|
||||
Head: common.Head{
|
||||
Ref: "branch",
|
||||
Repo: &common.Repository{
|
||||
Name: "testRepo",
|
||||
},
|
||||
},
|
||||
},
|
||||
Repository: &common.Repository{
|
||||
Owner: &common.Organization{
|
||||
Username: "test",
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
t.Run("Open routine called for PR opening", func(t *testing.T) {
|
||||
ctl := gomock.NewController(t)
|
||||
openedMock := mock_main.NewMockPullRequestProcessor(ctl)
|
||||
openedMock.EXPECT().Process(event, gomock.Any(), testConfiguration["test"][0]).Return(nil)
|
||||
|
||||
req.Opened = openedMock
|
||||
event.Action = "opened"
|
||||
|
||||
err := req.ProcessFunc(&common.Request{
|
||||
Data: event,
|
||||
})
|
||||
|
||||
if err != nil {
|
||||
t.Error("Error processing open PR:", err)
|
||||
t.Error(logBuf.String())
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("Re-Open routine called for PR reopening", func(t *testing.T) {
|
||||
ctl := gomock.NewController(t)
|
||||
openedMock := mock_main.NewMockPullRequestProcessor(ctl)
|
||||
openedMock.EXPECT().Process(event, gomock.Any(), testConfiguration["test"][0]).Return(nil)
|
||||
|
||||
req.Opened = openedMock
|
||||
event.Action = "reopened"
|
||||
|
||||
err := req.ProcessFunc(&common.Request{
|
||||
Data: event,
|
||||
})
|
||||
|
||||
if err != nil {
|
||||
t.Error("Error processing open PR:", err)
|
||||
t.Error(logBuf.String())
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("Sync routine called for PR sync requests", func(t *testing.T) {
|
||||
ctl := gomock.NewController(t)
|
||||
syncMock := mock_main.NewMockPullRequestProcessor(ctl)
|
||||
syncMock.EXPECT().Process(event, gomock.Any(), testConfiguration["test"][0]).Return(nil)
|
||||
|
||||
req.Synced = syncMock
|
||||
event.Action = "synchronized"
|
||||
|
||||
err := req.ProcessFunc(&common.Request{
|
||||
Data: event,
|
||||
})
|
||||
|
||||
if err != nil {
|
||||
t.Error("Error processing sync PR:", err)
|
||||
t.Error(logBuf.String())
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("Close routine called for PR closing", func(t *testing.T) {
|
||||
ctl := gomock.NewController(t)
|
||||
closedMock := mock_main.NewMockPullRequestProcessor(ctl)
|
||||
closedMock.EXPECT().Process(event, gomock.Any(), testConfiguration["test"][0]).Return(nil)
|
||||
|
||||
req.Closed = closedMock
|
||||
event.Action = "closed"
|
||||
|
||||
err := req.ProcessFunc(&common.Request{
|
||||
Data: event,
|
||||
})
|
||||
|
||||
if err != nil {
|
||||
t.Error("Error processing close PR:", err)
|
||||
t.Error(logBuf.String())
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("Edit PR handling", func(t *testing.T) {
|
||||
/* ctl := gomock.NewController(t)
|
||||
closedMock := mock_main.NewMockPullRequestProcessor(ctl)
|
||||
closedMock.EXPECT().Process(event, gomock.Any(), testConfiguration["test"][0]).Return(nil)
|
||||
*/
|
||||
|
||||
// req.Closed = closedMock
|
||||
event.Action = "edited"
|
||||
|
||||
err := req.ProcessFunc(&common.Request{
|
||||
Data: event,
|
||||
})
|
||||
|
||||
if err != nil {
|
||||
t.Error("Error processing edit PR:", err)
|
||||
t.Error(logBuf.String())
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("Unknown PR-type handling", func(t *testing.T) {
|
||||
event.Action = "not existing action"
|
||||
|
||||
err := req.ProcessFunc(&common.Request{
|
||||
Data: event,
|
||||
})
|
||||
|
||||
if err == nil {
|
||||
t.Error(logBuf.String())
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("Missing branch in config present in PR", func(t *testing.T) {
|
||||
baseRef := event.Pull_Request.Base.Ref
|
||||
event.Pull_Request.Base.Ref = "not present"
|
||||
err := req.ProcessFunc(&common.Request{
|
||||
Data: event,
|
||||
})
|
||||
event.Pull_Request.Base.Ref = baseRef
|
||||
|
||||
if err == nil {
|
||||
t.Error(logBuf.String())
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("Invalid data present in PR", func(t *testing.T) {
|
||||
baseConfig := req.configuredRepos
|
||||
req.configuredRepos = make(map[string][]*common.AutogitConfig)
|
||||
err := req.ProcessFunc(&common.Request{
|
||||
Data: nil,
|
||||
})
|
||||
req.configuredRepos = baseConfig
|
||||
|
||||
if err == nil {
|
||||
t.Error(logBuf.String())
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("Ignoring requests against unconfigured repos", func(t *testing.T) {
|
||||
baseConfig := req.configuredRepos
|
||||
req.configuredRepos = make(map[string][]*common.AutogitConfig)
|
||||
err := req.ProcessFunc(&common.Request{
|
||||
Data: event,
|
||||
})
|
||||
req.configuredRepos = baseConfig
|
||||
|
||||
if err != nil {
|
||||
t.Error(logBuf.String())
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("Failures of git handler creation", func(t *testing.T) {
|
||||
ctl := gomock.NewController(t)
|
||||
gitHandler := mock_common.NewMockGitHandlerGenerator(ctl)
|
||||
|
||||
gitHandler.EXPECT().CreateGitHandler(gomock.Any(), gomock.Any(), gomock.Any()).Return(nil, fmt.Errorf("some error"))
|
||||
|
||||
origHandler := req.git
|
||||
req.git = gitHandler
|
||||
|
||||
err := req.ProcessFunc(&common.Request{
|
||||
Data: event,
|
||||
})
|
||||
|
||||
req.git = origHandler
|
||||
|
||||
if err == nil {
|
||||
t.Error(logBuf.String())
|
||||
}
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user