mirror of
https://github.com/projectcapsule/capsule.git
synced 2026-08-20 04:56:44 +00:00
* chore * perfromance improvements Signed-off-by: Oliver Baehler <oliver@sudo-i.net> * perfromance improvements Signed-off-by: Oliver Baehler <oliver@sudo-i.net> * feat(performance): removed duplicate client calls from all admission paths Signed-off-by: Oliver Baehler <oliver@sudo-i.net> * feat(performance): removed duplicate client calls from all admission paths Signed-off-by: Oliver Baehler <oliver@sudo-i.net> * feat(performance): removed duplicate client calls from all admission paths Signed-off-by: Oliver Baehler <oliver@sudo-i.net> * feat(performance): removed duplicate client calls from all admission paths Signed-off-by: Oliver Baehler <oliver@sudo-i.net> * feat(performance): removed duplicate client calls from all admission paths Signed-off-by: Oliver Baehler <oliver@sudo-i.net> * feat(performance): removed duplicate client calls from all admission paths Signed-off-by: Oliver Baehler <oliver@sudo-i.net> * feat(performance): removed duplicate client calls from all admission paths Signed-off-by: Oliver Baehler <oliver@sudo-i.net> --------- Signed-off-by: Oliver Baehler <oliver@sudo-i.net>
77 lines
1.7 KiB
Go
77 lines
1.7 KiB
Go
// Copyright 2020-2026 Project Capsule Authors
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
package serviceaccounts
|
|
|
|
import (
|
|
"context"
|
|
"encoding/json"
|
|
"testing"
|
|
|
|
admissionv1 "k8s.io/api/admission/v1"
|
|
corev1 "k8s.io/api/core/v1"
|
|
"k8s.io/apimachinery/pkg/runtime"
|
|
"sigs.k8s.io/controller-runtime/pkg/client"
|
|
"sigs.k8s.io/controller-runtime/pkg/client/fake"
|
|
"sigs.k8s.io/controller-runtime/pkg/webhook/admission"
|
|
)
|
|
|
|
func TestHandlerSkipsUnlabeledServiceAccountsBeforeTenantLookup(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
scheme := runtime.NewScheme()
|
|
if err := corev1.AddToScheme(scheme); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
base := fake.NewClientBuilder().WithScheme(scheme).Build()
|
|
reader := &serviceAccountCountingReader{Reader: base}
|
|
handler := Handler(nil)
|
|
request := serviceAccountAdmissionRequest(t, &corev1.ServiceAccount{})
|
|
|
|
if response := handler.OnCreate(nil, reader, admission.NewDecoder(scheme), nil)(
|
|
context.Background(),
|
|
request,
|
|
); response != nil {
|
|
t.Fatalf("response = %#v, want nil", response)
|
|
}
|
|
|
|
if reader.gets != 0 {
|
|
t.Fatalf("tenant lookup gets = %d, want 0 without promotion labels", reader.gets)
|
|
}
|
|
}
|
|
|
|
type serviceAccountCountingReader struct {
|
|
client.Reader
|
|
|
|
gets int
|
|
}
|
|
|
|
func (r *serviceAccountCountingReader) Get(
|
|
ctx context.Context,
|
|
key client.ObjectKey,
|
|
obj client.Object,
|
|
opts ...client.GetOption,
|
|
) error {
|
|
r.gets++
|
|
|
|
return r.Reader.Get(ctx, key, obj, opts...)
|
|
}
|
|
|
|
func serviceAccountAdmissionRequest(t *testing.T, sa *corev1.ServiceAccount) admission.Request {
|
|
t.Helper()
|
|
|
|
raw, err := json.Marshal(sa)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
return admission.Request{AdmissionRequest: admissionv1.AdmissionRequest{
|
|
Operation: admissionv1.Create,
|
|
Namespace: "solar",
|
|
Object: runtime.RawExtension{
|
|
Raw: raw,
|
|
},
|
|
}}
|
|
}
|