Skip to content
This repository has been archived by the owner on Apr 11, 2024. It is now read-only.

Commit

Permalink
test: move all Nutanix patch handler unit tests to their own packages (
Browse files Browse the repository at this point in the history
…#32)

* test: move controlplane endpoint unit tests

* test: move PC endpoint unit tests

* test: nove machinedetails unit tests
  • Loading branch information
supershal authored Apr 5, 2024
1 parent 13fbf50 commit e413d47
Show file tree
Hide file tree
Showing 6 changed files with 175 additions and 139 deletions.
Original file line number Diff line number Diff line change
@@ -1,44 +1,48 @@
// Copyright 2023 D2iQ, Inc. All rights reserved.
// SPDX-License-Identifier: Apache-2.0

package tests
package controlplaneendpoint

import (
"testing"

. "github.com/onsi/ginkgo/v2"
"github.com/onsi/gomega"
clusterv1 "sigs.k8s.io/cluster-api/api/v1beta1"
runtimehooksv1 "sigs.k8s.io/cluster-api/exp/runtime/hooks/api/v1alpha1"

"github.com/d2iq-labs/cluster-api-runtime-extensions-nutanix/common/pkg/capi/clustertopology/handlers/mutation"
"github.com/d2iq-labs/cluster-api-runtime-extensions-nutanix/common/pkg/testutils/capitest"
"github.com/d2iq-labs/cluster-api-runtime-extensions-nutanix/common/pkg/testutils/capitest/request"
"github.com/d2iq-labs/cluster-api-runtime-extensions-nutanix/pkg/handlers/generic/clusterconfig"
nutanixclusterconfig "github.com/d2iq-labs/cluster-api-runtime-extensions-nutanix/pkg/handlers/nutanix/clusterconfig"
)

func TestGeneratePatches(
t *testing.T,
generatorFunc func() mutation.GeneratePatches,
variableName string,
variablePath ...string,
) {
t.Helper()

capitest.ValidateGeneratePatches(
t,
generatorFunc,
capitest.PatchTestDef{
func TestControlPlaneEndpointPatch(t *testing.T) {
gomega.RegisterFailHandler(Fail)
RunSpecs(t, "Nutanix ControlPlane endpoint suite")
}

var _ = Describe("Generate Nutanix ControlPlane endpoint patches", func() {
patchGenerator := func() mutation.GeneratePatches {
return mutation.NewMetaGeneratePatchesHandler("", NewPatch()).(mutation.GeneratePatches)
}

testDefs := []capitest.PatchTestDef{
{
Name: "unset variable",
},
capitest.PatchTestDef{
{
Name: "ControlPlaneEndpoint set to valid host and port",
Vars: []runtimehooksv1.Variable{
capitest.VariableWithValue(
variableName,
clusterconfig.MetaVariableName,
clusterv1.APIEndpoint{
Host: "10.20.100.10",
Port: 6443,
},
variablePath...,
nutanixclusterconfig.NutanixVariableName,
VariableName,
),
},
RequestItem: request.NewNutanixClusterTemplateRequestItem(""),
Expand All @@ -55,5 +59,17 @@ func TestGeneratePatches(
},
},
},
)
}
}

// create test node for each case
for testIdx := range testDefs {
tt := testDefs[testIdx]
It(tt.Name, func() {
capitest.AssertGeneratePatches(
GinkgoT(),
patchGenerator,
&tt,
)
})
}
})
Original file line number Diff line number Diff line change
@@ -1,13 +1,11 @@
// Copyright 2023 D2iQ, Inc. All rights reserved.
// SPDX-License-Identifier: Apache-2.0

package tests
package machinedetails

import (
"testing"

. "github.com/onsi/ginkgo/v2"
"github.com/onsi/gomega"
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
"k8s.io/apimachinery/pkg/api/resource"
"k8s.io/utils/ptr"
runtimehooksv1 "sigs.k8s.io/cluster-api/exp/runtime/hooks/api/v1alpha1"
Expand All @@ -17,6 +15,8 @@ import (
"github.com/d2iq-labs/cluster-api-runtime-extensions-nutanix/common/pkg/capi/clustertopology/handlers/mutation"
"github.com/d2iq-labs/cluster-api-runtime-extensions-nutanix/common/pkg/testutils/capitest"
"github.com/d2iq-labs/cluster-api-runtime-extensions-nutanix/common/pkg/testutils/capitest/request"
"github.com/d2iq-labs/cluster-api-runtime-extensions-nutanix/pkg/handlers/generic/clusterconfig"
nutanixclusterconfig "github.com/d2iq-labs/cluster-api-runtime-extensions-nutanix/pkg/handlers/nutanix/clusterconfig"
)

var (
Expand Down Expand Up @@ -96,66 +96,40 @@ var (
}
)

func TestControlPlaneGeneratePatches(
t *testing.T,
generatorFunc func() mutation.GeneratePatches,
variableName string,
variablePath ...string,
) {
t.Helper()
var _ = Describe("Generate Nutanix Machine Details patches for ControlPlane", func() {
patchGenerator := func() mutation.GeneratePatches {
return mutation.NewMetaGeneratePatchesHandler("", NewControlPlanePatch()).(mutation.GeneratePatches)
}

capitest.ValidateGeneratePatches(
t,
generatorFunc,
capitest.PatchTestDef{
testDefs := []capitest.PatchTestDef{
{
Name: "unset variable",
},
capitest.PatchTestDef{
{
Name: "all fields set for control-plane",
Vars: []runtimehooksv1.Variable{
capitest.VariableWithValue(
variableName,
clusterconfig.MetaVariableName,
variableWithAllFieldsSet,
variablePath...,
clusterconfig.MetaControlPlaneConfigName,
nutanixclusterconfig.NutanixVariableName,
VariableName,
),
},
RequestItem: request.NewCPNutanixMachineTemplateRequestItem(""),
ExpectedPatchMatchers: matchersForAllFieldsSet,
},
)
}

func TestWorkerGeneratePatches(
t *testing.T,
generatorFunc func() mutation.GeneratePatches,
variableName string,
variablePath ...string,
) {
t.Helper()
}

capitest.ValidateGeneratePatches(
t,
generatorFunc,
capitest.PatchTestDef{
Name: "unset variable",
},
capitest.PatchTestDef{
Name: "all fields set for workers",
Vars: []runtimehooksv1.Variable{
capitest.VariableWithValue(
variableName,
variableWithAllFieldsSet,
variablePath...,
),
capitest.VariableWithValue(
"builtin",
apiextensionsv1.JSON{
Raw: []byte(`{"machineDeployment": {"class": "a-worker"}}`),
},
),
},
RequestItem: request.NewWorkerNutanixMachineTemplateRequestItem(""),
ExpectedPatchMatchers: matchersForAllFieldsSet,
},
)
}
// create test node for each case
for testIdx := range testDefs {
tt := testDefs[testIdx]
It(tt.Name, func() {
capitest.AssertGeneratePatches(
GinkgoT(),
patchGenerator,
&tt,
)
})
}
})
16 changes: 16 additions & 0 deletions pkg/handlers/nutanix/mutation/machinedetails/inject_suite_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
// Copyright 2023 D2iQ, Inc. All rights reserved.
// SPDX-License-Identifier: Apache-2.0

package machinedetails

import (
"testing"

. "github.com/onsi/ginkgo/v2"
. "github.com/onsi/gomega"
)

func TestMachineDetailsPatch(t *testing.T) {
RegisterFailHandler(Fail)
RunSpecs(t, "Nutanix Machine Details patches for ControlPlane and Workers suite")
}
59 changes: 59 additions & 0 deletions pkg/handlers/nutanix/mutation/machinedetails/inject_worker_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
// Copyright 2023 D2iQ, Inc. All rights reserved.
// SPDX-License-Identifier: Apache-2.0

package machinedetails

import (
. "github.com/onsi/ginkgo/v2"
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
runtimehooksv1 "sigs.k8s.io/cluster-api/exp/runtime/hooks/api/v1alpha1"

"github.com/d2iq-labs/cluster-api-runtime-extensions-nutanix/common/pkg/capi/clustertopology/handlers/mutation"
"github.com/d2iq-labs/cluster-api-runtime-extensions-nutanix/common/pkg/testutils/capitest"
"github.com/d2iq-labs/cluster-api-runtime-extensions-nutanix/common/pkg/testutils/capitest/request"
"github.com/d2iq-labs/cluster-api-runtime-extensions-nutanix/pkg/handlers/generic/workerconfig"
nutanixclusterconfig "github.com/d2iq-labs/cluster-api-runtime-extensions-nutanix/pkg/handlers/nutanix/clusterconfig"
)

var _ = Describe("Generate Nutanix Machine Details patches for Worker", func() {
patchGenerator := func() mutation.GeneratePatches {
return mutation.NewMetaGeneratePatchesHandler("", NewWorkerPatch()).(mutation.GeneratePatches)
}

testDefs := []capitest.PatchTestDef{
{
Name: "unset variable",
},
{
Name: "all fields set for workers",
Vars: []runtimehooksv1.Variable{
capitest.VariableWithValue(
workerconfig.MetaVariableName,
variableWithAllFieldsSet,
nutanixclusterconfig.NutanixVariableName,
VariableName,
),
capitest.VariableWithValue(
"builtin",
apiextensionsv1.JSON{
Raw: []byte(`{"machineDeployment": {"class": "a-worker"}}`),
},
),
},
RequestItem: request.NewWorkerNutanixMachineTemplateRequestItem(""),
ExpectedPatchMatchers: matchersForAllFieldsSet,
},
}

// create test node for each case
for testIdx := range testDefs {
tt := testDefs[testIdx]
It(tt.Name, func() {
capitest.AssertGeneratePatches(
GinkgoT(),
patchGenerator,
&tt,
)
})
}
})
47 changes: 0 additions & 47 deletions pkg/handlers/nutanix/mutation/metapatch_handler_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,14 +21,6 @@ import (
kubernetesimagerepositorytests "github.com/d2iq-labs/cluster-api-runtime-extensions-nutanix/pkg/handlers/generic/mutation/kubernetesimagerepository/tests"
"github.com/d2iq-labs/cluster-api-runtime-extensions-nutanix/pkg/handlers/generic/mutation/mirrors"
globalimageregistrymirrortests "github.com/d2iq-labs/cluster-api-runtime-extensions-nutanix/pkg/handlers/generic/mutation/mirrors/tests"
"github.com/d2iq-labs/cluster-api-runtime-extensions-nutanix/pkg/handlers/generic/workerconfig"
nutanixclusterconfig "github.com/d2iq-labs/cluster-api-runtime-extensions-nutanix/pkg/handlers/nutanix/clusterconfig"
"github.com/d2iq-labs/cluster-api-runtime-extensions-nutanix/pkg/handlers/nutanix/mutation/controlplaneendpoint"
controlplaneendpointtests "github.com/d2iq-labs/cluster-api-runtime-extensions-nutanix/pkg/handlers/nutanix/mutation/controlplaneendpoint/tests"
"github.com/d2iq-labs/cluster-api-runtime-extensions-nutanix/pkg/handlers/nutanix/mutation/machinedetails"
machinedetailstests "github.com/d2iq-labs/cluster-api-runtime-extensions-nutanix/pkg/handlers/nutanix/mutation/machinedetails/tests"
"github.com/d2iq-labs/cluster-api-runtime-extensions-nutanix/pkg/handlers/nutanix/mutation/prismcentralendpoint"
prismcentralendpointtests "github.com/d2iq-labs/cluster-api-runtime-extensions-nutanix/pkg/handlers/nutanix/mutation/prismcentralendpoint/tests"
)

func metaPatchGeneratorFunc(mgr manager.Manager) func() mutation.GeneratePatches {
Expand All @@ -37,50 +29,11 @@ func metaPatchGeneratorFunc(mgr manager.Manager) func() mutation.GeneratePatches
}
}

func workerPatchGeneratorFunc() func() mutation.GeneratePatches {
return func() mutation.GeneratePatches {
return MetaWorkerPatchHandler().(mutation.GeneratePatches)
}
}

func TestGeneratePatches(t *testing.T) {
t.Parallel()

mgr := testEnv.Manager

controlplaneendpointtests.TestGeneratePatches(
t,
metaPatchGeneratorFunc(mgr),
clusterconfig.MetaVariableName,
nutanixclusterconfig.NutanixVariableName,
controlplaneendpoint.VariableName,
)

prismcentralendpointtests.TestGeneratePatches(
t,
metaPatchGeneratorFunc(mgr),
clusterconfig.MetaVariableName,
nutanixclusterconfig.NutanixVariableName,
prismcentralendpoint.VariableName,
)

machinedetailstests.TestControlPlaneGeneratePatches(
t,
metaPatchGeneratorFunc(mgr),
clusterconfig.MetaVariableName,
clusterconfig.MetaControlPlaneConfigName,
nutanixclusterconfig.NutanixVariableName,
machinedetails.VariableName,
)

machinedetailstests.TestWorkerGeneratePatches(
t,
workerPatchGeneratorFunc(),
workerconfig.MetaVariableName,
nutanixclusterconfig.NutanixVariableName,
machinedetails.VariableName,
)

auditpolicytests.TestGeneratePatches(
t,
metaPatchGeneratorFunc(mgr),
Expand Down
Loading

0 comments on commit e413d47

Please sign in to comment.