Skip to content

Commit 9927c1a

Browse files
committed
add certificate_test.go
1 parent df206b3 commit 9927c1a

File tree

2 files changed

+116
-2
lines changed

2 files changed

+116
-2
lines changed

pkg/psmdb/tls/certificate_test.go

Lines changed: 114 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,114 @@
1+
package tls
2+
3+
import (
4+
"testing"
5+
6+
cm "github.com/cert-manager/cert-manager/pkg/apis/certmanager/v1"
7+
"github.com/stretchr/testify/assert"
8+
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
9+
10+
api "github.com/percona/percona-server-mongodb-operator/pkg/apis/psmdb/v1"
11+
"github.com/percona/percona-server-mongodb-operator/pkg/version"
12+
)
13+
14+
func TestCertificate(t *testing.T) {
15+
cr := &api.PerconaServerMongoDB{
16+
ObjectMeta: metav1.ObjectMeta{Name: "psmdb-mock", Namespace: "psmdb"},
17+
Spec: api.PerconaServerMongoDBSpec{
18+
CRVersion: version.Version(),
19+
TLS: &api.TLSSpec{},
20+
Secrets: &api.SecretsSpec{},
21+
},
22+
}
23+
24+
t.Run("CA certificate", func(t *testing.T) {
25+
t.Run("IssuerKind", func(t *testing.T) {
26+
cr := cr.DeepCopy()
27+
ca := CertificateCA(cr)
28+
assert.Equal(t, "psmdb", ca.Namespace())
29+
})
30+
t.Run("ClusterIssuerKind", func(t *testing.T) {
31+
cr := cr.DeepCopy()
32+
cr.Spec.TLS.IssuerConf.Kind = cm.ClusterIssuerKind
33+
34+
t.Run("default cert-manager namespace when ClusterIssuerKind is used", func(t *testing.T) {
35+
ca := CertificateCA(cr)
36+
assert.Equal(t, "cert-manager", ca.Namespace())
37+
})
38+
39+
t.Run("namespace when env var is set and ClusterIssuerKind is used", func(t *testing.T) {
40+
t.Setenv("CERTMANAGER_NAMESPACE", "my-cm")
41+
ca := CertificateCA(cr)
42+
assert.Equal(t, "my-cm", ca.Namespace())
43+
})
44+
45+
t.Run("issuerRef", func(t *testing.T) {
46+
t.Run("latest version", func(t *testing.T) {
47+
ca := CertificateCA(cr)
48+
obj := ca.Object()
49+
assert.Equal(t, "psmdb-mock-psmdb-psmdb-ca-issuer", obj.Spec.IssuerRef.Name)
50+
assert.Equal(t, cm.ClusterIssuerKind, obj.Spec.IssuerRef.Kind)
51+
})
52+
t.Run("old version", func(t *testing.T) {
53+
cr := cr.DeepCopy()
54+
cr.Spec.CRVersion = "1.21.0"
55+
ca := CertificateCA(cr)
56+
obj := ca.Object()
57+
assert.Equal(t, "psmdb-mock-psmdb-ca-issuer", obj.Spec.IssuerRef.Name)
58+
assert.Equal(t, cm.IssuerKind, obj.Spec.IssuerRef.Kind)
59+
})
60+
})
61+
})
62+
})
63+
64+
t.Run("TLS certificates", func(t *testing.T) {
65+
t.Run("IssuerKind", func(t *testing.T) {
66+
cr := cr.DeepCopy()
67+
t.Run("internal", func(t *testing.T) {
68+
cert := CertificateTLS(cr, false)
69+
assert.Equal(t, "psmdb", cert.Namespace())
70+
})
71+
t.Run("non-internal", func(t *testing.T) {
72+
cert := CertificateTLS(cr, true)
73+
assert.Equal(t, "psmdb", cert.Namespace())
74+
})
75+
})
76+
t.Run("ClusterIssuerKind", func(t *testing.T) {
77+
cr := cr.DeepCopy()
78+
cr.Spec.TLS.IssuerConf.Kind = cm.ClusterIssuerKind
79+
80+
t.Run("issuerRef", func(t *testing.T) {
81+
t.Run("latest version", func(t *testing.T) {
82+
t.Run("internal", func(t *testing.T) {
83+
cert := CertificateTLS(cr, true)
84+
obj := cert.Object()
85+
assert.Equal(t, "psmdb-mock-psmdb-psmdb-issuer", obj.Spec.IssuerRef.Name)
86+
assert.Equal(t, cm.ClusterIssuerKind, obj.Spec.IssuerRef.Kind)
87+
})
88+
t.Run("non-internal", func(t *testing.T) {
89+
cert := CertificateTLS(cr, false)
90+
obj := cert.Object()
91+
assert.Equal(t, "psmdb-mock-psmdb-psmdb-issuer", obj.Spec.IssuerRef.Name)
92+
assert.Equal(t, cm.ClusterIssuerKind, obj.Spec.IssuerRef.Kind)
93+
})
94+
})
95+
t.Run("old version", func(t *testing.T) {
96+
cr := cr.DeepCopy()
97+
cr.Spec.CRVersion = "1.21.0"
98+
t.Run("internal", func(t *testing.T) {
99+
cert := CertificateTLS(cr, true)
100+
obj := cert.Object()
101+
assert.Equal(t, "psmdb-mock-psmdb-issuer", obj.Spec.IssuerRef.Name)
102+
assert.Equal(t, cm.ClusterIssuerKind, obj.Spec.IssuerRef.Kind)
103+
})
104+
t.Run("non-internal", func(t *testing.T) {
105+
cert := CertificateTLS(cr, false)
106+
obj := cert.Object()
107+
assert.Equal(t, "psmdb-mock-psmdb-issuer", obj.Spec.IssuerRef.Name)
108+
assert.Equal(t, cm.ClusterIssuerKind, obj.Spec.IssuerRef.Kind)
109+
})
110+
})
111+
})
112+
})
113+
})
114+
}

pkg/psmdb/tls/certmanager.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,15 +66,15 @@ func issuerName(cr *api.PerconaServerMongoDB) string {
6666
switch {
6767
case tls != nil && tls.IssuerConf.Name != "":
6868
return tls.IssuerConf.Name
69-
case tls != nil && tls.IssuerConf.Kind == cm.ClusterIssuerKind:
69+
case tls != nil && cr.CompareVersion("1.22.0") >= 0 && tls.IssuerConf.Kind == cm.ClusterIssuerKind:
7070
return cr.Name + "-" + cr.Namespace + suffix
7171
}
7272
return cr.Name + suffix
7373
}
7474

7575
func caIssuerName(cr *api.PerconaServerMongoDB) string {
7676
const suffix = "-psmdb-ca-issuer"
77-
if tls := cr.Spec.TLS; tls != nil && tls.IssuerConf.Kind == cm.ClusterIssuerKind {
77+
if tls := cr.Spec.TLS; cr.CompareVersion("1.22.0") >= 0 && tls != nil && tls.IssuerConf.Kind == cm.ClusterIssuerKind {
7878
return cr.Name + "-" + cr.Namespace + suffix
7979
}
8080
return cr.Name + suffix

0 commit comments

Comments
 (0)