/
test_utils.go
101 lines (87 loc) · 2.6 KB
/
test_utils.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
package test
import (
"fmt"
"github.com/armory/spinnaker-operator/pkg/apis/spinnaker/interfaces"
"github.com/armory/spinnaker-operator/pkg/apis/spinnaker/v1alpha2"
"github.com/armory/spinnaker-operator/pkg/generated"
"io/ioutil"
"k8s.io/api/apps/v1"
corev1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/client-go/kubernetes/scheme"
"sigs.k8s.io/controller-runtime/pkg/client"
"sigs.k8s.io/controller-runtime/pkg/client/fake"
"sigs.k8s.io/yaml"
"testing"
)
func init() {
v1alpha2.RegisterTypes()
}
var TypesFactory = interfaces.DefaultTypesFactory
type DummyK8sSecretEngine struct {
Secret string
File bool
}
func (s *DummyK8sSecretEngine) Decrypt() (string, error) {
return s.Secret, nil
}
func (s *DummyK8sSecretEngine) IsFile() bool {
return s.File
}
func ManifestToSpinService(s string, t *testing.T) interfaces.SpinnakerService {
svc := TypesFactory.NewService()
ReadYamlString([]byte(s), svc, t)
return svc
}
func ManifestFileToSpinService(manifestYaml string, t *testing.T) interfaces.SpinnakerService {
svc := TypesFactory.NewService()
ReadYamlFile(manifestYaml, svc, t)
return svc
}
func ReadYamlString(s []byte, target interface{}, t *testing.T) {
err := yaml.Unmarshal(s, target)
if err != nil {
t.Fatal(err)
}
}
func ReadYamlFile(path string, target interface{}, t *testing.T) {
bytes, err := ioutil.ReadFile(path)
if err != nil {
t.Fatal(err)
}
ReadYamlString(bytes, target, t)
}
func FakeClient(t *testing.T, objs ...runtime.Object) client.Client {
return fake.NewFakeClientWithScheme(scheme.Scheme, objs...)
}
func BuildSvc(name string, svcType string, publicPort int32, t *testing.T) *corev1.Service {
svc := &corev1.Service{}
ReadYamlFile("testdata/service.yml", svc, t)
svc.Name = name
svc.Spec.Selector["cluster"] = name
svc.Spec.Type = corev1.ServiceType(svcType)
svc.Spec.Ports[0].Port = publicPort
portName := fmt.Sprintf("%s-tcp", name[len("spin-"):])
svc.Spec.Ports[0].Name = portName
return svc
}
func AddDeploymentToGenConfig(gen *generated.SpinnakerGeneratedConfig, depName string, fileName string, t *testing.T) {
if gen.Config == nil {
gen.Config = make(map[string]generated.ServiceConfig)
}
dep := &v1.Deployment{}
ReadYamlFile(fileName, dep, t)
gen.Config[depName] = generated.ServiceConfig{
Deployment: dep,
}
}
func AddServiceToGenConfig(gen *generated.SpinnakerGeneratedConfig, svcName string, fileName string, t *testing.T) {
if gen.Config == nil {
gen.Config = make(map[string]generated.ServiceConfig)
}
svc := &corev1.Service{}
ReadYamlFile(fileName, svc, t)
gen.Config[svcName] = generated.ServiceConfig{
Service: svc,
}
}