11package main
22
33import (
4+ "context"
45 "fmt"
56 "slices"
67 "sort"
78 "strings"
89 "testing"
910
11+ "github.com/stretchr/testify/assert"
1012 "github.com/stretchr/testify/require"
1113 rgv1 "github.com/szuecs/routegroup-client/apis/zalando.org/v1"
1214 "github.com/zalando-incubator/stackset-controller/controller"
@@ -16,6 +18,7 @@ import (
1618 autoscalingv2 "k8s.io/api/autoscaling/v2"
1719 corev1 "k8s.io/api/core/v1"
1820 v1 "k8s.io/api/networking/v1"
21+ metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
1922 "k8s.io/apimachinery/pkg/util/intstr"
2023)
2124
@@ -35,6 +38,7 @@ type TestStacksetSpecFactory struct {
3538 ingress bool
3639 routegroup bool
3740 externalIngress bool
41+ configMap bool
3842 limit int32
3943 scaleDownTTL int64
4044 replicas int32
@@ -51,6 +55,7 @@ type TestStacksetSpecFactory struct {
5155func NewTestStacksetSpecFactory (stacksetName string ) * TestStacksetSpecFactory {
5256 return & TestStacksetSpecFactory {
5357 stacksetName : stacksetName ,
58+ configMap : false ,
5459 ingress : false ,
5560 externalIngress : false ,
5661 limit : 4 ,
@@ -62,6 +67,11 @@ func NewTestStacksetSpecFactory(stacksetName string) *TestStacksetSpecFactory {
6267 }
6368}
6469
70+ func (f * TestStacksetSpecFactory ) ConfigMap () * TestStacksetSpecFactory {
71+ f .configMap = true
72+ return f
73+ }
74+
6575func (f * TestStacksetSpecFactory ) Behavior (stabilizationWindowSeconds int32 ) * TestStacksetSpecFactory {
6676 f .hpaBehavior = true
6777 f .hpaStabilizationWindowSeconds = stabilizationWindowSeconds
@@ -103,7 +113,7 @@ func (f *TestStacksetSpecFactory) SubResourceAnnotations(annotations map[string]
103113 return f
104114}
105115
106- func (f * TestStacksetSpecFactory ) Create (stackVersion string ) zv1.StackSetSpec {
116+ func (f * TestStacksetSpecFactory ) Create (t * testing. T , stackVersion string ) zv1.StackSetSpec {
107117 var result = zv1.StackSetSpec {
108118 StackLifecycle : zv1.StackLifecycle {
109119 Limit : pint32 (f .limit ),
@@ -134,6 +144,42 @@ func (f *TestStacksetSpecFactory) Create(stackVersion string) zv1.StackSetSpec {
134144 },
135145 }
136146
147+ if f .configMap {
148+ configMapName := fmt .Sprintf ("%s-%s-configmap" , f .stacksetName , stackVersion )
149+ configMap := & corev1.ConfigMap {
150+ ObjectMeta : metav1.ObjectMeta {
151+ Name : configMapName ,
152+ },
153+ Data : map [string ]string {
154+ "key" : "value" ,
155+ },
156+ }
157+
158+ _ , err := configMapInterface ().Create (context .Background (), configMap , metav1.CreateOptions {})
159+ require .NoError (t , err )
160+
161+ result .StackTemplate .Spec .ConfigurationResources = []zv1.ConfigurationResourcesSpec {
162+ {
163+ ConfigMapRef : corev1.LocalObjectReference {
164+ Name : configMapName ,
165+ },
166+ },
167+ }
168+
169+ result .StackTemplate .Spec .StackSpec .PodTemplate .Spec .Volumes = []corev1.Volume {
170+ {
171+ Name : "config-volume" ,
172+ VolumeSource : corev1.VolumeSource {
173+ ConfigMap : & corev1.ConfigMapVolumeSource {
174+ LocalObjectReference : corev1.LocalObjectReference {
175+ Name : configMapName ,
176+ },
177+ },
178+ },
179+ },
180+ }
181+ }
182+
137183 if f .autoscaler {
138184 result .StackTemplate .Spec .Autoscaler = & zv1.Autoscaler {
139185 MaxReplicas : f .hpaMaxReplicas ,
@@ -287,6 +333,23 @@ func verifyStack(t *testing.T, stacksetName, currentVersion string, stacksetSpec
287333 require .EqualValues (t , expectedRef , hpa .Spec .ScaleTargetRef )
288334 }
289335
336+ // Verify ConfigMaps
337+ for _ , rsc := range stacksetSpec .StackTemplate .Spec .ConfigurationResources {
338+ configMap , err := waitForConfigMap (t , rsc .ConfigMapRef .Name )
339+ require .NoError (t , err )
340+ assert .EqualValues (t , stackResourceLabels , configMap .Labels )
341+ assert .Contains (t , configMap .Name , stack .Name )
342+ assert .Equal (t , map [string ]string {"key" : "value" }, configMap .Data )
343+ assert .Equal (t , []metav1.OwnerReference {
344+ {
345+ APIVersion : "zalando.org/v1" ,
346+ Kind : "Stack" ,
347+ Name : stack .Name ,
348+ UID : stack .UID ,
349+ },
350+ }, configMap .OwnerReferences )
351+ }
352+
290353 verifyStackIngressSources (
291354 t ,
292355 stack ,
@@ -576,6 +639,7 @@ func verifyStacksetRouteGroup(t *testing.T, stacksetName string, stacksetSpec zv
576639func testStacksetCreate (
577640 t * testing.T ,
578641 testName string ,
642+ configmap bool ,
579643 hpa ,
580644 ingress ,
581645 routegroup ,
@@ -589,6 +653,9 @@ func testStacksetCreate(
589653 stacksetName := fmt .Sprintf ("stackset-create-%s-%s" , ingType , testName )
590654 stackVersion := "v1"
591655 stacksetSpecFactory := NewTestStacksetSpecFactory (stacksetName )
656+ if configmap {
657+ stacksetSpecFactory .ConfigMap ()
658+ }
592659 if hpa {
593660 stacksetSpecFactory .Autoscaler (
594661 1 ,
@@ -611,7 +678,7 @@ func testStacksetCreate(
611678 if len (subResourceAnnotations ) > 0 {
612679 stacksetSpecFactory .SubResourceAnnotations (subResourceAnnotations )
613680 }
614- stacksetSpec := stacksetSpecFactory .Create (stackVersion )
681+ stacksetSpec := stacksetSpecFactory .Create (t , stackVersion )
615682
616683 var err error
617684 switch ingType {
@@ -730,7 +797,7 @@ func testStacksetUpdate(
730797 oldSubResourceAnnotations ,
731798 )
732799 }
733- stacksetSpec := stacksetSpecFactory .Create (initialVersion )
800+ stacksetSpec := stacksetSpecFactory .Create (t , initialVersion )
734801
735802 var err error
736803 switch ingType {
@@ -840,7 +907,7 @@ func testStacksetUpdate(
840907 )
841908 }
842909
843- updatedSpec := stacksetSpecFactory .Create (updatedVersion )
910+ updatedSpec := stacksetSpecFactory .Create (t , updatedVersion )
844911 err = updateStackset (stacksetName , updatedSpec )
845912 require .NoError (t , err )
846913
@@ -941,27 +1008,31 @@ func testStacksetUpdate(
9411008}
9421009
9431010func TestStacksetCreateBasic (t * testing.T ) {
944- testStacksetCreate (t , "basic" , false , false , false , false , false , testAnnotationsCreate )
1011+ testStacksetCreate (t , "basic" , false , false , false , false , false , false , testAnnotationsCreate )
1012+ }
1013+
1014+ func TestStacksetCreateConfigMap (t * testing.T ) {
1015+ testStacksetCreate (t , "configmap" , true , false , false , false , false , false , testAnnotationsCreate )
9451016}
9461017
9471018func TestStacksetCreateHPA (t * testing.T ) {
948- testStacksetCreate (t , "hpa" , true , false , false , false , false , testAnnotationsCreate )
1019+ testStacksetCreate (t , "hpa" , false , true , false , false , false , false , testAnnotationsCreate )
9491020}
9501021
9511022func TestStacksetCreateIngress (t * testing.T ) {
952- testStacksetCreate (t , "ingress" , false , true , false , false , false , testAnnotationsCreate )
1023+ testStacksetCreate (t , "ingress" , false , false , true , false , false , false , testAnnotationsCreate )
9531024}
9541025
9551026func TestStacksetCreateRouteGroup (t * testing.T ) {
956- testStacksetCreate (t , "routegroup" , false , false , true , false , false , testAnnotationsCreate )
1027+ testStacksetCreate (t , "routegroup" , false , false , false , true , false , false , testAnnotationsCreate )
9571028}
9581029
9591030func TestStacksetCreateExternalIngress (t * testing.T ) {
960- testStacksetCreate (t , "externalingress" , false , false , false , true , false , testAnnotationsCreate )
1031+ testStacksetCreate (t , "externalingress" , false , false , false , false , true , false , testAnnotationsCreate )
9611032}
9621033
9631034func TestStacksetCreateUpdateStrategy (t * testing.T ) {
964- testStacksetCreate (t , "updatestrategy" , false , false , false , false , true , testAnnotationsCreate )
1035+ testStacksetCreate (t , "updatestrategy" , false , false , false , false , false , true , testAnnotationsCreate )
9651036}
9661037
9671038func TestStacksetUpdateBasic (t * testing.T ) {
0 commit comments