Skip to content

Commit af2d5df

Browse files
committed
Add base envTests to test-operator
Currently, test-operator only has one suite envTest. To keep best practices we shold add more tests for test-operator functionality to prevent regression. This PR starts by adding base envTests that can be improved in the future.
1 parent 80f7629 commit af2d5df

2 files changed

Lines changed: 125 additions & 0 deletions

File tree

test/functional/base_test.go

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
/*
2+
Copyright 2023.
3+
4+
Licensed under the Apache License, Version 2.0 (the "License");
5+
you may not use this file except in compliance with the License.
6+
You may obtain a copy of the License at
7+
8+
http://www.apache.org/licenses/LICENSE-2.0
9+
10+
Unless required by applicable law or agreed to in writing, software
11+
distributed under the License is distributed on an "AS IS" BASIS,
12+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
See the License for the specific language governing permissions and
14+
limitations under the License.
15+
*/
16+
17+
package functional_test
18+
19+
import (
20+
. "github.com/onsi/gomega" //revive:disable:dot-imports
21+
22+
testv1 "github.com/openstack-k8s-operators/test-operator/api/v1beta1"
23+
"k8s.io/apimachinery/pkg/types"
24+
)
25+
26+
func GetTempest(name types.NamespacedName) *testv1.Tempest {
27+
instance := &testv1.Tempest{}
28+
Eventually(func(g Gomega) {
29+
g.Expect(k8sClient.Get(ctx, name, instance)).Should(Succeed())
30+
}, timeout, interval).Should(Succeed())
31+
return instance
32+
}
Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
/*
2+
Copyright 2023.
3+
4+
Licensed under the Apache License, Version 2.0 (the "License");
5+
you may not use this file except in compliance with the License.
6+
You may obtain a copy of the License at
7+
8+
http://www.apache.org/licenses/LICENSE-2.0
9+
10+
Unless required by applicable law or agreed to in writing, software
11+
distributed under the License is distributed on an "AS IS" BASIS,
12+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
See the License for the specific language governing permissions and
14+
limitations under the License.
15+
*/
16+
17+
package functional_test
18+
19+
import (
20+
. "github.com/onsi/ginkgo/v2" //revive:disable:dot-imports
21+
. "github.com/onsi/gomega" //revive:disable:dot-imports
22+
23+
testv1 "github.com/openstack-k8s-operators/test-operator/api/v1beta1"
24+
corev1 "k8s.io/api/core/v1"
25+
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
26+
"k8s.io/apimachinery/pkg/types"
27+
)
28+
29+
var _ = Describe("TempestController", func() {
30+
When("Tempest CR is created", func() {
31+
var tempestName types.NamespacedName
32+
33+
BeforeEach(func() {
34+
// Create OpenStack config ConfigMap
35+
openstackConfigMap := &corev1.ConfigMap{
36+
ObjectMeta: metav1.ObjectMeta{
37+
Name: "openstack-config",
38+
Namespace: namespace,
39+
},
40+
Data: map[string]string{
41+
"clouds.yaml": "clouds:\n default:\n auth:\n auth_url: http://keystone:5000",
42+
},
43+
}
44+
Expect(k8sClient.Create(ctx, openstackConfigMap)).Should(Succeed())
45+
46+
// Create OpenStack config Secret
47+
openstackSecret := &corev1.Secret{
48+
ObjectMeta: metav1.ObjectMeta{
49+
Name: "openstack-config-secret",
50+
Namespace: namespace,
51+
},
52+
StringData: map[string]string{
53+
"secure.yaml": "clouds:\n default:\n auth:\n password: secret",
54+
},
55+
}
56+
Expect(k8sClient.Create(ctx, openstackSecret)).Should(Succeed())
57+
58+
// Create a basic Tempest CR
59+
tempestName = types.NamespacedName{
60+
Name: "tempest-tests",
61+
Namespace: namespace,
62+
}
63+
64+
tempest := &testv1.Tempest{
65+
ObjectMeta: metav1.ObjectMeta{
66+
Name: tempestName.Name,
67+
Namespace: tempestName.Namespace,
68+
},
69+
Spec: testv1.TempestSpec{
70+
CommonOptions: testv1.CommonOptions{
71+
StorageClass: "local-storage",
72+
},
73+
CommonOpenstackConfig: testv1.CommonOpenstackConfig{
74+
OpenStackConfigMap: "openstack-config",
75+
OpenStackConfigSecret: "openstack-config-secret",
76+
},
77+
TempestRun: testv1.TempestRunSpec{
78+
IncludeList: "tempest.api.identity.v3",
79+
},
80+
},
81+
}
82+
Expect(k8sClient.Create(ctx, tempest)).Should(Succeed())
83+
})
84+
85+
It("should have a finalizer", func() {
86+
// the reconciler loop adds the finalizer so we have to wait for
87+
// it to run
88+
Eventually(func() []string {
89+
return GetTempest(tempestName).Finalizers
90+
}, timeout, interval).Should(ContainElement("openstack.org/tempest"))
91+
})
92+
})
93+
})

0 commit comments

Comments
 (0)