harness-drone/plugin/converter/combine_test.go
2022-03-17 14:51:48 -07:00

122 lines
3 KiB
Go

// Copyright 2019 Drone.IO Inc. All rights reserved.
// Use of this source code is governed by the Drone Non-Commercial License
// that can be found in the LICENSE file.
package converter
import (
"context"
"errors"
"testing"
"github.com/drone/drone/core"
"github.com/drone/drone/mock"
"github.com/golang/mock/gomock"
)
var noContext = context.Background()
var mockFile = `
kind: pipeline
type: docker
name: testing
`
func TestCombine(t *testing.T) {
controller := gomock.NewController(t)
defer controller.Finish()
args := &core.ConvertArgs{
User: &core.User{Login: "octocat"},
Repo: &core.Repository{Slug: "octocat/hello-world", Config: ".drone.yml"},
Build: &core.Build{After: "6d144de7"},
Config: &core.Config{},
}
resp := &core.Config{Data: string(mockFile)}
service := mock.NewMockConvertService(controller)
service.EXPECT().Convert(noContext, args).Return(resp, nil)
result, err := Combine(false, service).Convert(noContext, args)
if err != nil {
t.Error(err)
return
}
if result.Data != string(resp.Data) {
t.Errorf("unexpected file contents")
}
}
func TestCombineErr(t *testing.T) {
controller := gomock.NewController(t)
defer controller.Finish()
resp := errors.New("")
service := mock.NewMockConvertService(controller)
service.EXPECT().Convert(noContext, nil).Return(nil, resp)
_, err := Combine(false, service).Convert(noContext, nil)
if err != resp {
t.Errorf("expected convert service error")
}
}
func TestCombineNoConfig(t *testing.T) {
controller := gomock.NewController(t)
defer controller.Finish()
args := &core.ConvertArgs{
User: &core.User{Login: "octocat"},
Repo: &core.Repository{Slug: "octocat/hello-world", Config: ".drone.yml"},
Build: &core.Build{After: "6d144de7"},
}
resp := &core.Config{Data: string(mockFile)}
service1 := mock.NewMockConvertService(controller)
service1.EXPECT().Convert(noContext, args).Return(nil, nil)
service2 := mock.NewMockConvertService(controller)
service2.EXPECT().Convert(noContext, args).Return(&core.Config{}, nil)
service3 := mock.NewMockConvertService(controller)
service3.EXPECT().Convert(noContext, args).Return(resp, nil)
result, err := Combine(false, service1, service2, service3).Convert(noContext, args)
if err != nil {
t.Error(err)
return
}
if result.Data != string(resp.Data) {
t.Errorf("unexpected file contents")
}
}
func TestCombineEmptyConfig(t *testing.T) {
controller := gomock.NewController(t)
defer controller.Finish()
args := &core.ConvertArgs{
User: &core.User{Login: "octocat"},
Repo: &core.Repository{Slug: "octocat/hello-world", Config: ".drone.yml"},
Build: &core.Build{After: "6d144de7"},
Config: &core.Config{Data: string(mockFile)},
}
service1 := mock.NewMockConvertService(controller)
service1.EXPECT().Convert(noContext, args).Return(nil, nil)
result, err := Combine(false, service1).Convert(noContext, args)
if err != nil {
t.Error(err)
return
}
if result != args.Config {
t.Errorf("unexpected file contents")
}
}