Skip to content

Commit 342ecab

Browse files
committed
init a common apiserver for Test_ValidateSecondaryAuthorization testcases
1 parent 99eaa71 commit 342ecab

File tree

1 file changed

+25
-19
lines changed

1 file changed

+25
-19
lines changed

test/integration/apiserver/cel/validatingadmissionpolicy_test.go

Lines changed: 25 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -2543,6 +2543,20 @@ func TestBindingRemoval(t *testing.T) {
25432543
// Test_ValidateSecondaryAuthorization tests a ValidatingAdmissionPolicy that performs secondary authorization checks
25442544
// for both users and service accounts.
25452545
func Test_ValidateSecondaryAuthorization(t *testing.T) {
2546+
generic.PolicyRefreshInterval = 10 * time.Millisecond
2547+
featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, genericfeatures.ValidatingAdmissionPolicy, true)
2548+
server, err := apiservertesting.StartTestServer(t, nil, []string{
2549+
"--enable-admission-plugins", "ValidatingAdmissionPolicy",
2550+
"--authorization-mode=RBAC",
2551+
"--anonymous-auth",
2552+
}, framework.SharedEtcd())
2553+
if err != nil {
2554+
t.Fatal(err)
2555+
}
2556+
defer server.TearDownFn()
2557+
2558+
// For test set up such as creating policies, bindings and RBAC rules.
2559+
adminClient := clientset.NewForConfigOrDie(server.ClientConfig)
25462560
testcases := []struct {
25472561
name string
25482562
rbac *rbacv1.PolicyRule
@@ -2595,7 +2609,7 @@ func Test_ValidateSecondaryAuthorization(t *testing.T) {
25952609
},
25962610
}
25972611

2598-
for _, testcase := range testcases {
2612+
for i, testcase := range testcases {
25992613
t.Run(testcase.name, func(t *testing.T) {
26002614
clients := map[string]func(t *testing.T, adminClient *clientset.Clientset, clientConfig *rest.Config, rules []rbacv1.PolicyRule) *clientset.Clientset{
26012615
"user": secondaryAuthorizationUserClient,
@@ -2604,20 +2618,6 @@ func Test_ValidateSecondaryAuthorization(t *testing.T) {
26042618

26052619
for clientName, clientFn := range clients {
26062620
t.Run(clientName, func(t *testing.T) {
2607-
featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, genericfeatures.ValidatingAdmissionPolicy, true)
2608-
server, err := apiservertesting.StartTestServer(t, nil, []string{
2609-
"--enable-admission-plugins", "ValidatingAdmissionPolicy",
2610-
"--authorization-mode=RBAC",
2611-
"--anonymous-auth",
2612-
}, framework.SharedEtcd())
2613-
if err != nil {
2614-
t.Fatal(err)
2615-
}
2616-
defer server.TearDownFn()
2617-
2618-
// For test set up such as creating policies, bindings and RBAC rules.
2619-
adminClient := clientset.NewForConfigOrDie(server.ClientConfig)
2620-
26212621
// Principal is always allowed to create and update namespaces so that the admission requests to test
26222622
// authorization expressions can be sent by the principal.
26232623
rules := []rbacv1.PolicyRule{{
@@ -2639,21 +2639,24 @@ func Test_ValidateSecondaryAuthorization(t *testing.T) {
26392639
testcase.extraAccountFn(t, adminClient, server.ClientConfig, extraRules)
26402640
}
26412641

2642+
policyName := fmt.Sprintf("%s-%s-%d", "validate-authz", clientName, i)
26422643
policy := withWaitReadyConstraintAndExpression(withValidations([]admissionregistrationv1.Validation{
26432644
{
26442645
Expression: testcase.expression,
26452646
},
2646-
}, withFailurePolicy(admissionregistrationv1.Fail, withNamespaceMatch(makePolicy("validate-authz")))))
2647+
}, withFailurePolicy(admissionregistrationv1.Fail, withNamespaceMatch(makePolicy(policyName)))))
26472648
if _, err := adminClient.AdmissionregistrationV1().ValidatingAdmissionPolicies().Create(context.TODO(), policy, metav1.CreateOptions{}); err != nil {
26482649
t.Fatal(err)
26492650
}
2650-
if err := createAndWaitReady(t, adminClient, makeBinding("validate-authz-binding", "validate-authz", ""), nil); err != nil {
2651+
policyBindingName := fmt.Sprintf("%s-%s", policyName, "binding")
2652+
policyBinding := makeBinding(policyBindingName, policyName, "")
2653+
if err := createAndWaitReady(t, adminClient, policyBinding, nil); err != nil {
26512654
t.Fatal(err)
26522655
}
26532656

26542657
ns := &v1.Namespace{
26552658
ObjectMeta: metav1.ObjectMeta{
2656-
Name: "test-authz",
2659+
Name: fmt.Sprintf("%s-%s-%d", "test-authz", clientName, i),
26572660
},
26582661
}
26592662
_, err = client.CoreV1().Namespaces().Create(context.TODO(), ns, metav1.CreateOptions{})
@@ -2663,6 +2666,9 @@ func Test_ValidateSecondaryAuthorization(t *testing.T) {
26632666
expected = metav1.StatusReasonInvalid
26642667
}
26652668
checkFailureReason(t, err, expected)
2669+
if err := cleanupPolicy(t, adminClient, policy, policyBinding); err != nil {
2670+
t.Fatalf("error while cleaning up policy and its bindings: %v", err)
2671+
}
26662672
})
26672673
}
26682674
})
@@ -2839,7 +2845,7 @@ func serviceAccountClient(namespace, name string) clientFn {
28392845
return func(t *testing.T, adminClient *clientset.Clientset, clientConfig *rest.Config, rules []rbacv1.PolicyRule) *clientset.Clientset {
28402846
clientConfig = rest.CopyConfig(clientConfig)
28412847
sa, err := adminClient.CoreV1().ServiceAccounts(namespace).Create(context.TODO(), &v1.ServiceAccount{ObjectMeta: metav1.ObjectMeta{Name: name}}, metav1.CreateOptions{})
2842-
if err != nil {
2848+
if err != nil && !apierrors.IsAlreadyExists(err) {
28432849
t.Fatal(err)
28442850
}
28452851
uid := sa.UID

0 commit comments

Comments
 (0)