Files
kubevela/pkg/webhook/podspecworkload/podspecworkload_test.go
2020-10-06 00:25:16 -07:00

77 lines
1.9 KiB
Go

package podspecworkload
import (
"testing"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
v1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/utils/pointer"
"github.com/oam-dev/kubevela/api/v1alpha1"
)
func TestPodSpecWorkload(t *testing.T) {
RegisterFailHandler(Fail)
RunSpecs(t, "PodSpecWorkload Suite")
}
var _ = Describe("Test PodSpecWorkload", func() {
var baseCase v1alpha1.PodSpecWorkload
BeforeEach(func() {
baseCase = v1alpha1.PodSpecWorkload{
ObjectMeta: metav1.ObjectMeta{
Name: "mutate-hook",
},
Spec: v1alpha1.PodSpecWorkloadSpec{},
}
})
It("Test with fill in all default", func() {
cw := baseCase
want := baseCase
want.Spec.Replicas = pointer.Int32Ptr(1)
DefaultPodSpecWorkload(&cw)
Expect(cw).Should(BeEquivalentTo(want))
})
It("Test only fill in empty fields", func() {
cw := baseCase
cw.Spec.Replicas = pointer.Int32Ptr(10)
want := cw
DefaultPodSpecWorkload(&cw)
Expect(cw).Should(BeEquivalentTo(want))
})
It("Test validate valid trait", func() {
cw := baseCase
cw.ObjectMeta.Namespace = "default"
cw.Spec.Replicas = pointer.Int32Ptr(5)
cw.Spec.PodSpec.Containers = []v1.Container{
{
Name: "test",
Image: "test",
},
}
Expect(ValidateCreate(&cw).ToAggregate()).NotTo(HaveOccurred())
Expect(ValidateUpdate(&cw, nil).ToAggregate()).NotTo(HaveOccurred())
Expect(ValidateDelete(&cw).ToAggregate()).NotTo(HaveOccurred())
})
It("Test validate invalid trait", func() {
cw := baseCase
cw.Spec.Replicas = pointer.Int32Ptr(-5)
Expect(ValidateCreate(&cw).ToAggregate()).To(HaveOccurred())
Expect(ValidateUpdate(&cw, nil).ToAggregate()).To(HaveOccurred())
Expect(len(ValidateCreate(&cw))).Should(Equal(3))
// add namespace
cw.ObjectMeta.Namespace = "default"
Expect(len(ValidateCreate(&cw))).Should(Equal(2))
// get valid replica
cw.Spec.Replicas = pointer.Int32Ptr(5)
Expect(len(ValidateCreate(&cw))).Should(Equal(1))
})
})