// TestPolicyListRespectingLabels tests that a List() call for some namespace, filtered with a label to the ReadOnlyPolicyCache // will return all policies in that namespace matching that label func TestPolicyListRespectingLabels(t *testing.T) { testCache, cacheChannel, testChannel := beforeTestingSetup_readonlypolicycache() defer close(cacheChannel) var policies *authorizationapi.PolicyList var err error desiredName := "nonUniquePolicyName" namespace := "namespaceTwo" key := "labelToMatchOn" operator := labels.EqualsOperator val := util.NewStringSet("someValue") requirement, err := labels.NewRequirement(key, operator, val) if err != nil { t.Errorf("labels.Selector misconstructed: %v", err) } label := labels.LabelSelector{*requirement} field := fields.Everything() util.Until(func() { policies, err = testCache.List(label, field, namespace) if (err == nil) && (policies != nil) && (len(policies.Items) == 1) && (policies.Items[0].Name == desiredName) { close(testChannel) } }, 1*time.Millisecond, testChannel) switch { case err != nil: t.Errorf("Error getting policies using ReadOnlyPolicyCache: %v", err) case policies == nil: t.Error("PoliciesList is nil") case len(policies.Items) != 1: t.Errorf("Expected policyList to have 1 policy, had %d", len(policies.Items)) case policies.Items[0].Name != desiredName: t.Errorf("Expected policy name to be '%s', was '%s'", desiredName, policies.Items[0].Name) } }
// TestClusterPolicyListRespectingLabels tests that a List(), filtered with a label to the ReadOnlyClusterPolicyCache // will return all clusterPolicies matching that label func TestClusterPolicyListRespectingLabels(t *testing.T) { testCache, cacheChannel, testChannel := beforeTestingSetup_readonlyclusterpolicycache() defer close(cacheChannel) var clusterPolicies *authorizationapi.ClusterPolicyList var err error desiredName := "uniqueClusterPolicyName" key := "labelToMatchOn" operator := labels.EqualsOperator val := util.NewStringSet("someValue") requirement, err := labels.NewRequirement(key, operator, val) if err != nil { t.Errorf("labels.Selector misconstructed: %v", err) } label := labels.LabelSelector{*requirement} field := fields.Everything() util.Until(func() { clusterPolicies, err = testCache.List(label, field) if (err == nil) && (clusterPolicies != nil) && (len(clusterPolicies.Items) == 1) && (clusterPolicies.Items[0].Name == desiredName) { close(testChannel) } }, 1*time.Millisecond, testChannel) switch { case err != nil: t.Errorf("Error getting clusterPolicyList with labelSelector using ReadOnlyClusterPolicyCache: %v", err) case clusterPolicies == nil: t.Error("ClusterPolicyList is nil.") case len(clusterPolicies.Items) != 1: t.Errorf("Expected clusterPolicyList to contain 2 clusterPolicies, contained %d", len(clusterPolicies.Items)) case clusterPolicies.Items[0].Name != desiredName: t.Errorf("Expected label-selected clusterPolicy name to be '%s', was '%s'", desiredName, clusterPolicies.Items[0].Name) } }