Skip to content

Commit a4f3715

Browse files
committed
refactor unit test
1 parent 1f5a6ce commit a4f3715

1 file changed

Lines changed: 114 additions & 28 deletions

File tree

internal/config/config_test.go

Lines changed: 114 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ package config
66

77
import (
88
"os"
9+
"strings"
910
"testing"
1011

1112
"gotest.tools/v3/assert"
@@ -201,57 +202,142 @@ func TestPostgresContainerImage(t *testing.T) {
201202
}
202203

203204
func TestVerifyImageValues(t *testing.T) {
204-
cluster := &v1beta1.PostgresCluster{}
205-
206-
verifyImageCheck := func(t *testing.T, envVar, errString string, cluster *v1beta1.PostgresCluster) {
207-
t.Setenv(envVar, "")
208-
os.Unsetenv(envVar)
209-
err := VerifyImageValues(cluster)
210-
assert.ErrorContains(t, err, errString)
211-
}
212-
213205
t.Run("crunchy-postgres", func(t *testing.T) {
206+
cluster := &v1beta1.PostgresCluster{}
214207
cluster.Spec.PostgresVersion = 14
215-
verifyImageCheck(t, "RELATED_IMAGE_POSTGRES_14", "crunchy-postgres", cluster)
208+
t.Setenv("RELATED_IMAGE_POSTGRES_14", "")
209+
os.Unsetenv("RELATED_IMAGE_POSTGRES_14")
210+
211+
err := VerifyImageValues(cluster)
212+
assert.ErrorContains(t, err, "crunchy-postgres")
216213
})
217214

218215
t.Run("crunchy-postgres-gis", func(t *testing.T) {
216+
cluster := &v1beta1.PostgresCluster{}
217+
cluster.Spec.PostgresVersion = 14
219218
cluster.Spec.PostGISVersion = "3.3"
220-
verifyImageCheck(t, "RELATED_IMAGE_POSTGRES_14_GIS_3.3", "crunchy-postgres-gis", cluster)
219+
t.Setenv("RELATED_IMAGE_POSTGRES_14_GIS_3.3", "")
220+
os.Unsetenv("RELATED_IMAGE_POSTGRES_14_GIS_3.3")
221+
222+
err := VerifyImageValues(cluster)
223+
assert.ErrorContains(t, err, "crunchy-postgres-gis")
221224
})
222225

223-
// K8SPG-710: Image check will fail without a backup section in PostgresCluster
224-
// t.Run("crunchy-pgbackrest", func(t *testing.T) {
225-
// verifyImageCheck(t, "RELATED_IMAGE_PGBACKREST", "crunchy-pgbackrest", cluster)
226-
// })
226+
t.Run("crunchy-pgbackrest-enabled", func(t *testing.T) {
227+
cluster := &v1beta1.PostgresCluster{}
228+
cluster.Spec.PostgresVersion = 14
229+
enabled := true
230+
cluster.Spec.Backups.Enabled = &enabled
231+
t.Setenv("RELATED_IMAGE_PGBACKREST", "")
232+
os.Unsetenv("RELATED_IMAGE_PGBACKREST")
233+
234+
err := VerifyImageValues(cluster)
235+
assert.ErrorContains(t, err, "crunchy-pgbackrest")
236+
})
237+
238+
t.Run("crunchy-pgbackrest-disabled", func(t *testing.T) {
239+
cluster := &v1beta1.PostgresCluster{}
240+
cluster.Spec.PostgresVersion = 14
241+
enabled := false
242+
cluster.Spec.Backups.Enabled = &enabled
243+
t.Setenv("RELATED_IMAGE_PGBACKREST", "")
244+
os.Unsetenv("RELATED_IMAGE_PGBACKREST")
245+
246+
err := VerifyImageValues(cluster)
247+
assert.Assert(t, !strings.Contains(err.Error(), "crunchy-pgbackrest"))
248+
})
227249

228250
t.Run("crunchy-pgbouncer", func(t *testing.T) {
229-
cluster.Spec.Proxy = new(v1beta1.PostgresProxySpec)
230-
cluster.Spec.Proxy.PGBouncer = new(v1beta1.PGBouncerPodSpec)
231-
verifyImageCheck(t, "RELATED_IMAGE_PGBOUNCER", "crunchy-pgbouncer", cluster)
251+
cluster := &v1beta1.PostgresCluster{}
252+
cluster.Spec.PostgresVersion = 14
253+
cluster.Spec.Proxy = &v1beta1.PostgresProxySpec{
254+
PGBouncer: &v1beta1.PGBouncerPodSpec{},
255+
}
256+
t.Setenv("RELATED_IMAGE_PGBOUNCER", "")
257+
os.Unsetenv("RELATED_IMAGE_PGBOUNCER")
258+
259+
err := VerifyImageValues(cluster)
260+
assert.ErrorContains(t, err, "crunchy-pgbouncer")
232261
})
233262

234263
t.Run("crunchy-pgadmin4", func(t *testing.T) {
235-
cluster.Spec.UserInterface = new(v1beta1.UserInterfaceSpec)
236-
cluster.Spec.UserInterface.PGAdmin = new(v1beta1.PGAdminPodSpec)
237-
verifyImageCheck(t, "RELATED_IMAGE_PGADMIN", "crunchy-pgadmin4", cluster)
264+
cluster := &v1beta1.PostgresCluster{}
265+
cluster.Spec.PostgresVersion = 14
266+
cluster.Spec.UserInterface = &v1beta1.UserInterfaceSpec{
267+
PGAdmin: &v1beta1.PGAdminPodSpec{},
268+
}
269+
t.Setenv("RELATED_IMAGE_PGADMIN", "")
270+
os.Unsetenv("RELATED_IMAGE_PGADMIN")
271+
272+
err := VerifyImageValues(cluster)
273+
assert.ErrorContains(t, err, "crunchy-pgadmin4")
238274
})
239275

240276
t.Run("crunchy-postgres-exporter", func(t *testing.T) {
241-
cluster.Spec.Monitoring = new(v1beta1.MonitoringSpec)
242-
cluster.Spec.Monitoring.PGMonitor = new(v1beta1.PGMonitorSpec)
243-
cluster.Spec.Monitoring.PGMonitor.Exporter = new(v1beta1.ExporterSpec)
244-
verifyImageCheck(t, "RELATED_IMAGE_PGEXPORTER", "crunchy-postgres-exporter", cluster)
277+
cluster := &v1beta1.PostgresCluster{}
278+
cluster.Spec.PostgresVersion = 14
279+
cluster.Spec.Monitoring = &v1beta1.MonitoringSpec{
280+
PGMonitor: &v1beta1.PGMonitorSpec{
281+
Exporter: &v1beta1.ExporterSpec{},
282+
},
283+
}
284+
t.Setenv("RELATED_IMAGE_PGEXPORTER", "")
285+
os.Unsetenv("RELATED_IMAGE_PGEXPORTER")
286+
287+
err := VerifyImageValues(cluster)
288+
assert.ErrorContains(t, err, "crunchy-postgres-exporter")
245289
})
246290

247-
t.Run("multiple images", func(t *testing.T) {
291+
t.Run("multiple missing images", func(t *testing.T) {
292+
enabled := true
293+
cluster := &v1beta1.PostgresCluster{}
294+
cluster.Spec.PostgresVersion = 14
295+
cluster.Spec.PostGISVersion = "3.3"
296+
cluster.Spec.Backups.Enabled = &enabled
297+
cluster.Spec.Proxy = &v1beta1.PostgresProxySpec{
298+
PGBouncer: &v1beta1.PGBouncerPodSpec{},
299+
}
300+
cluster.Spec.UserInterface = &v1beta1.UserInterfaceSpec{
301+
PGAdmin: &v1beta1.PGAdminPodSpec{},
302+
}
303+
cluster.Spec.Monitoring = &v1beta1.MonitoringSpec{
304+
PGMonitor: &v1beta1.PGMonitorSpec{
305+
Exporter: &v1beta1.ExporterSpec{},
306+
},
307+
}
308+
248309
err := VerifyImageValues(cluster)
249310
assert.ErrorContains(t, err, "crunchy-postgres-gis")
250-
// K8SPG-710: Image check will fail without a backup section in PostgresCluster
251-
// assert.ErrorContains(t, err, "crunchy-pgbackrest")
311+
assert.ErrorContains(t, err, "crunchy-pgbackrest")
252312
assert.ErrorContains(t, err, "crunchy-pgbouncer")
253313
assert.ErrorContains(t, err, "crunchy-pgadmin4")
254314
assert.ErrorContains(t, err, "crunchy-postgres-exporter")
255315
})
256316

317+
t.Run("all images set", func(t *testing.T) {
318+
enabled := true
319+
cluster := &v1beta1.PostgresCluster{}
320+
cluster.Spec.PostgresVersion = 14
321+
cluster.Spec.PostGISVersion = "3.3"
322+
cluster.Spec.Backups.Enabled = &enabled
323+
cluster.Spec.Proxy = &v1beta1.PostgresProxySpec{
324+
PGBouncer: &v1beta1.PGBouncerPodSpec{},
325+
}
326+
cluster.Spec.UserInterface = &v1beta1.UserInterfaceSpec{
327+
PGAdmin: &v1beta1.PGAdminPodSpec{},
328+
}
329+
cluster.Spec.Monitoring = &v1beta1.MonitoringSpec{
330+
PGMonitor: &v1beta1.PGMonitorSpec{
331+
Exporter: &v1beta1.ExporterSpec{},
332+
},
333+
}
334+
335+
t.Setenv("RELATED_IMAGE_POSTGRES_14_GIS_3.3", "img")
336+
t.Setenv("RELATED_IMAGE_PGBACKREST", "img")
337+
t.Setenv("RELATED_IMAGE_PGBOUNCER", "img")
338+
t.Setenv("RELATED_IMAGE_PGADMIN", "img")
339+
t.Setenv("RELATED_IMAGE_PGEXPORTER", "img")
340+
341+
assert.NilError(t, VerifyImageValues(cluster))
342+
})
257343
}

0 commit comments

Comments
 (0)