Skip to content

Instantly share code, notes, and snippets.

@stevekuznetsov
Created February 20, 2024 17:34
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save stevekuznetsov/4cd2fea7e3386c00fa029abed063e4d6 to your computer and use it in GitHub Desktop.
Save stevekuznetsov/4cd2fea7e3386c00fa029abed063e4d6 to your computer and use it in GitHub Desktop.
package apiserver
import (
"context"
"testing"
"github.com/google/go-cmp/cmp"
"github.com/google/go-cmp/cmp/cmpopts"
certificatesv1 "k8s.io/api/certificates/v1"
corev1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
certificatesv1applyconfigurations "k8s.io/client-go/applyconfigurations/certificates/v1"
)
func TestSSAOnCSRStatus(t *testing.T) {
client, closeFn := setup(t)
defer closeFn()
csr, err := client.CertificatesV1().CertificateSigningRequests().Create(context.TODO(), &certificatesv1.CertificateSigningRequest{
ObjectMeta: metav1.ObjectMeta{
Name: "test-csr",
},
Spec: certificatesv1.CertificateSigningRequestSpec{
SignerName: "example.com/signer",
Usages: []certificatesv1.KeyUsage{certificatesv1.UsageAny},
Request: []byte(`-----BEGIN CERTIFICATE REQUEST-----
MIIByjCCATMCAQAwgYkxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlh
MRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRMwEQYDVQQKEwpHb29nbGUgSW5jMR8w
HQYDVQQLExZJbmZvcm1hdGlvbiBUZWNobm9sb2d5MRcwFQYDVQQDEw53d3cuZ29v
Z2xlLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEApZtYJCHJ4VpVXHfV
IlstQTlO4qC03hjX+ZkPyvdYd1Q4+qbAeTwXmCUKYHThVRd5aXSqlPzyIBwieMZr
WFlRQddZ1IzXAlVRDWwAo60KecqeAXnnUK+5fXoTI/UgWshre8tJ+x/TMHaQKR/J
cIWPhqaQhsJuzZbvAdGA80BLxdMCAwEAAaAAMA0GCSqGSIb3DQEBBQUAA4GBAIhl
4PvFq+e7ipARgI5ZM+GZx6mpCz44DTo0JkwfRDf+BtrsaC0q68eTf2XhYOsq4fkH
Q0uA0aVog3f5iJxCa3Hp5gxbJQ6zV6kJ0TEsuaaOhEko9sdpCoPOnRBm2i/XRD2D
6iNh8f8z0ShGsFqjDgFHyF3o+lUyj+UC6H1QW7bn
-----END CERTIFICATE REQUEST-----`),
},
}, metav1.CreateOptions{})
if err != nil {
t.Fatalf("failed to create CSR: %v", err)
}
if _, err := client.CertificatesV1().CertificateSigningRequests().ApplyStatus(context.TODO(), certificatesv1applyconfigurations.CertificateSigningRequest(csr.Name).WithStatus(
certificatesv1applyconfigurations.CertificateSigningRequestStatus().WithConditions(
certificatesv1applyconfigurations.CertificateSigningRequestCondition().
WithType(certificatesv1.CertificateFailed).
WithStatus(corev1.ConditionTrue).
WithReason("SignerValidationFailure").
WithMessage("fake").
WithLastUpdateTime(metav1.Now()),
),
), metav1.ApplyOptions{FieldManager: "apply-test"}); err != nil {
t.Fatalf("failed to apply CSR status: %v", err)
}
csr, err = client.CertificatesV1().CertificateSigningRequests().Get(context.TODO(), csr.Name, metav1.GetOptions{})
if err != nil {
t.Fatalf("failed to get CSR status: %v", err)
}
if diff := cmp.Diff(csr.Status.Conditions, []certificatesv1.CertificateSigningRequestCondition{{
Type: certificatesv1.CertificateFailed,
Status: corev1.ConditionTrue,
Reason: "SignerValidationFailure",
Message: "fake",
}}, cmpopts.IgnoreFields(certificatesv1.CertificateSigningRequestCondition{}, "LastUpdateTime", "LastTransitionTime")); diff != "" {
t.Fatalf("got incorrect CSR status conditions: %v", diff)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment