88 "testing"
99
1010 toolchainv1alpha1 "github.com/codeready-toolchain/api/api/v1alpha1"
11+ "github.com/codeready-toolchain/toolchain-common/pkg/utils"
1112 "github.com/codeready-toolchain/toolchain-e2e/testsupport/wait"
1213 "github.com/davecgh/go-spew/spew"
1314 "github.com/stretchr/testify/require"
@@ -19,9 +20,9 @@ func VerifyNSTemplateSet(t *testing.T, hostAwait *wait.HostAwaitility, memberAwa
1920
2021 var err error
2122 if space .Spec .DisableInheritance {
22- nsTmplSet , err = memberAwait .WaitForNSTmplSet (t , nsTmplSet .Name , UntilNSTemplateSetHasTemplateRefs (expectedTemplateRefs ))
23+ nsTmplSet , err = memberAwait .WaitForNSTmplSet (t , nsTmplSet .Name , UntilNSTemplateSetHasTemplateRefs (expectedTemplateRefs ), UntilNSTemplateSetHasStatusTemplateRefs () )
2324 } else {
24- nsTmplSet , err = memberAwait .WaitForNSTmplSet (t , nsTmplSet .Name , UntilNSTemplateSetHasTemplateRefs (expectedTemplateRefs ), wait .UntilNSTemplateSetHasAnySpaceRoles ())
25+ nsTmplSet , err = memberAwait .WaitForNSTmplSet (t , nsTmplSet .Name , UntilNSTemplateSetHasTemplateRefs (expectedTemplateRefs ), wait .UntilNSTemplateSetHasAnySpaceRoles (), UntilNSTemplateSetHasStatusTemplateRefs () )
2526 }
2627 require .NoError (t , err )
2728
@@ -119,8 +120,8 @@ func getExpectedProvisionedNamespaces(namespaces []string) []toolchainv1alpha1.S
119120func UntilNSTemplateSetHasTemplateRefs (expectedRevisions TemplateRefs ) wait.NSTemplateSetWaitCriterion {
120121 return wait.NSTemplateSetWaitCriterion {
121122 Match : func (actual * toolchainv1alpha1.NSTemplateSet ) bool {
122- if expectedRevisions .ClusterResources == nil ||
123- actual .Spec .ClusterResources == nil ||
123+ if ( expectedRevisions .ClusterResources == nil && actual . Spec . ClusterResources != nil ) ||
124+ ( expectedRevisions . ClusterResources != nil && actual .Spec .ClusterResources == nil ) ||
124125 * expectedRevisions .ClusterResources != actual .Spec .ClusterResources .TemplateRef {
125126 return false
126127 }
@@ -142,6 +143,34 @@ func UntilNSTemplateSetHasTemplateRefs(expectedRevisions TemplateRefs) wait.NSTe
142143 }
143144}
144145
146+ // UntilNSTemplateSetHasStatusTemplateRefs checks if the NSTemplateTier has the expected template refs in the Status
147+ func UntilNSTemplateSetHasStatusTemplateRefs () wait.NSTemplateSetWaitCriterion {
148+ return wait.NSTemplateSetWaitCriterion {
149+ Match : func (actual * toolchainv1alpha1.NSTemplateSet ) bool {
150+ // check that the status was updated with the expected template ref.
151+ if (actual .Status .ClusterResources == nil && actual .Spec .ClusterResources != nil ) ||
152+ (actual .Status .ClusterResources != nil && actual .Spec .ClusterResources == nil ) ||
153+ actual .Status .ClusterResources .TemplateRef != actual .Spec .ClusterResources .TemplateRef {
154+ return false
155+ }
156+ if ! reflect .DeepEqual (actual .Status .Namespaces , actual .Spec .Namespaces ) {
157+ return false
158+ }
159+ // check expected feature toggles, if any
160+ featureAnnotation , featureAnnotationFound := actual .Annotations [toolchainv1alpha1 .FeatureToggleNameAnnotationKey ]
161+ if featureAnnotationFound {
162+ if ! reflect .DeepEqual (utils .SplitCommaSeparatedList (featureAnnotation ), actual .Status .FeatureToggles ) {
163+ return false
164+ }
165+ }
166+ return reflect .DeepEqual (actual .Status .SpaceRoles , actual .Status .SpaceRoles )
167+ },
168+ Diff : func (actual * toolchainv1alpha1.NSTemplateSet ) string {
169+ return fmt .Sprintf ("expected NSTemplateSet '%s' to match the following cluster/namespace/spacerole/feature toggles revisions: %s\n but it contained: %s" , actual .Name , spew .Sdump (actual .Spec ), spew .Sdump (actual .Status ))
170+ },
171+ }
172+ }
173+
145174func IsSpaceRoleSubset (superset map [string ]string , subset []toolchainv1alpha1.NSTemplateSetSpaceRole ) bool {
146175 checkset := make (map [string ]bool )
147176 for _ , element := range subset {
0 commit comments