Skip to content

Commit 8c01118

Browse files
committed
K8SPG-778: Add unit tests for disable restore finalizer
1 parent 8b9604a commit 8c01118

File tree

1 file changed

+123
-0
lines changed

1 file changed

+123
-0
lines changed
Lines changed: 123 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,123 @@
1+
package pgrestore
2+
3+
import (
4+
"context"
5+
"testing"
6+
7+
"github.com/stretchr/testify/assert"
8+
"github.com/stretchr/testify/require"
9+
corev1 "k8s.io/api/core/v1"
10+
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
11+
"k8s.io/utils/ptr"
12+
"sigs.k8s.io/controller-runtime/pkg/client"
13+
14+
"github.com/percona/percona-postgresql-operator/percona/testutils"
15+
pgv2 "github.com/percona/percona-postgresql-operator/pkg/apis/pgv2.percona.com/v2"
16+
"github.com/percona/percona-postgresql-operator/pkg/apis/postgres-operator.crunchydata.com/v1beta1"
17+
)
18+
19+
func TestDisableRestore(t *testing.T) {
20+
tests := []struct {
21+
name string
22+
backupSpec pgv2.Backups
23+
}{
24+
{
25+
"spec.backups.enabled is false",
26+
pgv2.Backups{
27+
Enabled: ptr.To(false),
28+
PGBackRest: pgv2.PGBackRestArchive{},
29+
},
30+
},
31+
{
32+
"spec.backups.pgbackrest.restore is nil",
33+
pgv2.Backups{
34+
Enabled: ptr.To(true),
35+
PGBackRest: pgv2.PGBackRestArchive{},
36+
},
37+
},
38+
{
39+
"spec.backups.pgbackrest.restore is empty",
40+
pgv2.Backups{
41+
Enabled: ptr.To(true),
42+
PGBackRest: pgv2.PGBackRestArchive{
43+
Restore: &v1beta1.PGBackRestRestore{
44+
PostgresClusterDataSource: &v1beta1.PostgresClusterDataSource{},
45+
},
46+
},
47+
},
48+
},
49+
{
50+
"spec.backups.pgbackrest.restore is defined",
51+
pgv2.Backups{
52+
Enabled: ptr.To(true),
53+
PGBackRest: pgv2.PGBackRestArchive{
54+
Restore: &v1beta1.PGBackRestRestore{
55+
Enabled: ptr.To(true),
56+
PostgresClusterDataSource: &v1beta1.PostgresClusterDataSource{
57+
RepoName: "repo1",
58+
Resources: corev1.ResourceRequirements{},
59+
},
60+
},
61+
},
62+
},
63+
},
64+
{
65+
"spec.backups.pgbackrest.restore is defined, repoName is empty",
66+
pgv2.Backups{
67+
Enabled: ptr.To(true),
68+
PGBackRest: pgv2.PGBackRestArchive{
69+
Restore: &v1beta1.PGBackRestRestore{
70+
Enabled: ptr.To(true),
71+
PostgresClusterDataSource: &v1beta1.PostgresClusterDataSource{
72+
RepoName: "",
73+
Resources: corev1.ResourceRequirements{},
74+
},
75+
},
76+
},
77+
},
78+
},
79+
}
80+
81+
ctx := context.Background()
82+
for _, tt := range tests {
83+
t.Run(tt.name, func(t *testing.T) {
84+
pgc := &pgv2.PerconaPGCluster{
85+
ObjectMeta: metav1.ObjectMeta{
86+
Name: "test-cluster",
87+
Namespace: "test-ns",
88+
},
89+
Spec: pgv2.PerconaPGClusterSpec{
90+
Backups: tt.backupSpec,
91+
},
92+
}
93+
94+
pgr := &pgv2.PerconaPGRestore{
95+
ObjectMeta: metav1.ObjectMeta{
96+
Name: "test-restore",
97+
Namespace: "test-ns",
98+
},
99+
Spec: pgv2.PerconaPGRestoreSpec{
100+
PGCluster: "test-cluster",
101+
RepoName: "repo1",
102+
},
103+
Status: pgv2.PerconaPGRestoreStatus{
104+
State: pgv2.RestoreRunning,
105+
},
106+
}
107+
108+
cl := testutils.BuildFakeClient(pgc, pgr)
109+
err := disableRestore(ctx, cl, pgc, pgr)
110+
require.NoError(t, err)
111+
112+
updatedPG := &pgv2.PerconaPGCluster{}
113+
err = cl.Get(ctx, client.ObjectKeyFromObject(pgc), updatedPG)
114+
require.NoError(t, err)
115+
116+
require.NotNil(t, updatedPG.Spec.Backups.PGBackRest.Restore)
117+
assert.Equal(t, pgc.Spec.Backups.PGBackRest.Restore.RepoName, updatedPG.Spec.Backups.PGBackRest.Restore.RepoName)
118+
assert.False(t, *updatedPG.Spec.Backups.PGBackRest.Restore.Enabled, "spec.backups.pgbackrest.restore.enabled should be false")
119+
120+
})
121+
}
122+
123+
}

0 commit comments

Comments
 (0)