diff --git a/kubernetes/health_test.go b/kubernetes/health_test.go index 7b296fbb1..16a6e47a2 100644 --- a/kubernetes/health_test.go +++ b/kubernetes/health_test.go @@ -8,7 +8,7 @@ import ( // test IsHealthy with a kubernetes pod spec in running mode func TestIsHealthySvc(t *testing.T) { - r := GetHealth(TestHealthy) + r := GetHealth(TestHealthySvc) assert.Equal(t, true, r.OK) assert.Equal(t, "Healthy", r.Status) } @@ -19,6 +19,16 @@ func TestIsHealthyPod(t *testing.T) { assert.Equal(t, "Degraded", r.Status) } +func TestIsHealthyCertificate(t *testing.T) { + r := GetHealth(TestHealthyCertificate) + assert.Equal(t, true, r.OK) + assert.Equal(t, "Healthy", r.Status) + + r = GetHealth(TestDegradedCertificate) + assert.Equal(t, false, r.OK) + assert.Equal(t, "Degraded", r.Status) +} + func TestIsHealthyAppset(t *testing.T) { r := GetHealth(TestLuaStatus) assert.Equal(t, false, r.OK) diff --git a/kubernetes/testdata.go b/kubernetes/testdata.go index 0cc148cfa..37b5a3d69 100644 --- a/kubernetes/testdata.go +++ b/kubernetes/testdata.go @@ -285,7 +285,91 @@ var TestServiceNeat = `{ } ` -var TestHealthy = ` +var TestHealthyCertificate = ` +apiVersion: cert-manager.io/v1alpha2 +kind: Certificate +metadata: + creationTimestamp: "2019-02-15T18:17:06Z" + generation: 1 + name: test-cert + namespace: argocd + resourceVersion: "68337322" + selfLink: /apis/cert-manager.io/v1alpha2/namespaces/argocd/certificates/test-cert + uid: e6cfba50-314d-11e9-be3f-42010a800011 +spec: + acme: + config: + - domains: + - cd.apps.argoproj.io + http01: + ingress: http01 + commonName: cd.apps.argoproj.io + dnsNames: + - cd.apps.argoproj.io + issuerRef: + kind: Issuer + name: argo-cd-issuer + secretName: test-secret +status: + acme: + order: + url: https://acme-v02.api.letsencrypt.org/acme/order/45250083/316944902 + conditions: + - lastTransitionTime: "2019-02-15T18:21:10Z" + message: Order validated + reason: OrderValidated + status: "False" + type: ValidateFailed + - lastTransitionTime: null + message: Certificate issued successfully + reason: CertIssued + status: "True" + type: Ready +` + +var TestDegradedCertificate = ` +apiVersion: cert-manager.io/v1alpha2 +kind: Certificate +metadata: + creationTimestamp: "2019-02-15T18:17:06Z" + generation: 1 + name: test-cert + namespace: argocd + resourceVersion: "68337322" + selfLink: /apis/cert-manager.io/v1alpha2/namespaces/argocd/certificates/test-cert + uid: e6cfba50-314d-11e9-be3f-42010a800011 +spec: + acme: + config: + - domains: + - cd.apps.argoproj.io + http01: + ingress: http01 + commonName: cd.apps.argoproj.io + dnsNames: + - cd.apps.argoproj.io + issuerRef: + kind: Issuer + name: argo-cd-issuer + secretName: test-secret +status: + acme: + order: + url: https://acme-v02.api.letsencrypt.org/acme/order/45250083/316944902 + conditions: + - lastTransitionTime: "2019-02-15T18:21:10Z" + message: Order validated + reason: OrderValidated + status: "False" + type: ValidateFailed + - lastTransitionTime: null + message: Certificate issuance failed + reason: Failed + status: "False" + type: Ready +` + +var TestHealthySvc = ` apiVersion: v1 kind: Service metadata: @@ -314,7 +398,7 @@ status: - hostname: abc123.us-west-2.elb.amazonaws.com ` -var TesthealthyUnstructured = GetUnstructured(TestHealthy) +var TesthealthyUnstructured = GetUnstructured(TestHealthySvc) var TestProgressing = ` apiVersion: v1 kind: Service diff --git a/tests/cel_test.go b/tests/cel_test.go index 34ccf6b03..f5f3746ce 100644 --- a/tests/cel_test.go +++ b/tests/cel_test.go @@ -435,9 +435,9 @@ func TestCelSliceReturn(t *testing.T) { func TestCelK8sResources(t *testing.T) { runTests(t, []Test{ - {map[string]interface{}{"healthySvc": kubernetes.GetUnstructuredMap(kubernetes.TestHealthy)}, "k8s.isHealthy(healthySvc)", "true"}, + {map[string]interface{}{"healthySvc": kubernetes.GetUnstructuredMap(kubernetes.TestHealthySvc)}, "k8s.isHealthy(healthySvc)", "true"}, {map[string]interface{}{"healthySvc": kubernetes.GetUnstructuredMap(kubernetes.TestLuaStatus)}, "k8s.getStatus(healthySvc)", "Degraded: found less than two generators, Merge requires two or more"}, - {map[string]interface{}{"healthySvc": kubernetes.GetUnstructuredMap(kubernetes.TestHealthy)}, "k8s.getHealth(healthySvc).status", "Healthy"}, + {map[string]interface{}{"healthySvc": kubernetes.GetUnstructuredMap(kubernetes.TestHealthySvc)}, "k8s.getHealth(healthySvc).status", "Healthy"}, }) } @@ -469,9 +469,9 @@ func TestCelK8s(t *testing.T) { } environment := map[string]any{ - "healthy_obj": kubernetes.TestHealthy, + "healthy_obj": kubernetes.TestHealthySvc, "unhealthy_obj": kubernetes.TestUnhealthy, - "obj_list": []string{kubernetes.TestHealthy, kubernetes.TestUnhealthy}, + "obj_list": []string{kubernetes.TestHealthySvc, kubernetes.TestUnhealthy}, "unstructured_list": kubernetes.TestUnstructuredList, "service_raw": kubernetes.TestServiceRaw, "pod_raw": kubernetes.TestPodRaw, diff --git a/tests/gomplate_test.go b/tests/gomplate_test.go index 6e3bdaf4a..e4e338b36 100644 --- a/tests/gomplate_test.go +++ b/tests/gomplate_test.go @@ -45,9 +45,11 @@ func TestGomplate(t *testing.T) { {map[string]interface{}{"hello": "hello world ?"}, "{{ .hello | urlencode }}", `hello+world+%3F`}, {map[string]interface{}{"hello": "hello+world+%3F"}, "{{ .hello | urldecode }}", `hello world ?`}, {map[string]interface{}{"age": 75 * time.Second}, "{{ .age | humanDuration }}", "1m15s"}, - {map[string]interface{}{"healthySvc": kubernetes.GetUnstructured(kubernetes.TestHealthy)}, "{{ (.healthySvc | isHealthy) }}", "true"}, + {map[string]interface{}{"healthySvc": kubernetes.GetUnstructured(kubernetes.TestHealthyCertificate)}, "{{(.healthySvc | isHealthy)}}", "true"}, + {map[string]interface{}{"healthySvc": kubernetes.GetUnstructured(kubernetes.TestDegradedCertificate)}, "{{(.healthySvc | isHealthy)}}", "false"}, + {map[string]interface{}{"healthySvc": kubernetes.GetUnstructured(kubernetes.TestHealthySvc)}, "{{ (.healthySvc | isHealthy) }}", "true"}, {map[string]interface{}{"healthySvc": kubernetes.GetUnstructured(kubernetes.TestLuaStatus)}, "{{ (.healthySvc | getStatus) }}", "Degraded: found less than two generators, Merge requires two or more"}, - {map[string]interface{}{"healthySvc": kubernetes.GetUnstructured(kubernetes.TestHealthy)}, "{{ (.healthySvc | getHealth).Status }}", "Healthy"}, + {map[string]interface{}{"healthySvc": kubernetes.GetUnstructured(kubernetes.TestHealthySvc)}, "{{ (.healthySvc | getHealth).Status }}", "Healthy"}, {map[string]interface{}{"size": 123456}, "{{ .size | humanSize }}", "120.6K"}, {map[string]interface{}{"v": "1.2.3-beta.1+c0ff33"}, "{{ (.v | semver).Prerelease }}", "beta.1"}, {map[string]interface{}{"old": "1.2.3", "new": "1.2.3"}, "{{ .old | semverCompare .new }}", "true"},