Skip to content

Commit 86cf151

Browse files
committed
ut
Signed-off-by: zirain <zirain2009@gmail.com>
1 parent b37991f commit 86cf151

File tree

2 files changed

+143
-6
lines changed

2 files changed

+143
-6
lines changed

internal/provider/kubernetes/controller.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -812,8 +812,8 @@ func (r *gatewayAPIReconciler) processSecretRef(
812812
types.NamespacedName{Namespace: secretNS, Name: string(secretRef.Name)},
813813
secret,
814814
)
815-
if err != nil && kerrors.IsNotFound(err) {
816-
return fmt.Errorf("unable to find the Secret: %s/%s", secretNS, string(secretRef.Name))
815+
if err != nil {
816+
return fmt.Errorf("unable to find the Secret %s/%s: %w", secretNS, string(secretRef.Name), err)
817817
}
818818

819819
if secretNS != ownerNS {
@@ -863,8 +863,8 @@ func (r *gatewayAPIReconciler) processClusterTrustBundleRef(
863863
) error {
864864
trustBundle := &certificatesv1a1.ClusterTrustBundle{}
865865
err := r.client.Get(ctx, types.NamespacedName{Name: string(ref.Name)}, trustBundle)
866-
if err != nil && kerrors.IsNotFound(err) {
867-
return fmt.Errorf("unable to find the ClusterTrustBundle: %s", string(ref.Name))
866+
if err != nil {
867+
return fmt.Errorf("unable to find the ClusterTrustBundle %s: %w", string(ref.Name), err)
868868
}
869869

870870
key := trustBundle.Name
@@ -945,8 +945,8 @@ func (r *gatewayAPIReconciler) processConfigMapRef(
945945
types.NamespacedName{Namespace: configMapNS, Name: string(configMapRef.Name)},
946946
configMap,
947947
)
948-
if err != nil && kerrors.IsNotFound(err) {
949-
return fmt.Errorf("unable to find the ConfigMap: %s/%s", configMapNS, string(configMapRef.Name))
948+
if err != nil {
949+
return fmt.Errorf("unable to find the ConfigMap %s/%s: %w", configMapNS, string(configMapRef.Name), err)
950950
}
951951

952952
if configMapNS != ownerNS {

internal/provider/kubernetes/controller_test.go

Lines changed: 137 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import (
1111
"testing"
1212

1313
"github.com/stretchr/testify/require"
14+
corev1 "k8s.io/api/core/v1"
1415
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
1516
"k8s.io/apimachinery/pkg/types"
1617
"k8s.io/utils/ptr"
@@ -25,6 +26,7 @@ import (
2526
"github.com/envoyproxy/gateway/internal/gatewayapi"
2627
"github.com/envoyproxy/gateway/internal/gatewayapi/resource"
2728
"github.com/envoyproxy/gateway/internal/logging"
29+
"github.com/envoyproxy/gateway/internal/provider/kubernetes/test"
2830
)
2931

3032
func TestAddGatewayClassFinalizer(t *testing.T) {
@@ -1007,6 +1009,141 @@ func TestProcessSecurityPolicyObjectRefs(t *testing.T) {
10071009
}
10081010
}
10091011

1012+
func TestProcessBackendRefs(t *testing.T) {
1013+
ns := "default"
1014+
ctb := test.GetClusterTrustBundle("fake-ctb")
1015+
secret := test.GetSecret(types.NamespacedName{Namespace: ns, Name: "fake-secret"})
1016+
cm := &corev1.ConfigMap{
1017+
ObjectMeta: metav1.ObjectMeta{
1018+
Namespace: ns,
1019+
Name: "fake-cm",
1020+
},
1021+
Data: map[string]string{
1022+
"ca.crt": "fake-ca-cert",
1023+
},
1024+
}
1025+
1026+
testCases := []struct {
1027+
name string
1028+
backend *egv1a1.Backend
1029+
ctpShouldBeAdded bool
1030+
secretShouldBeAdded bool
1031+
configmapShouldBeAdded bool
1032+
}{
1033+
{
1034+
name: "DynamicResolver with ClusterTrustBundle",
1035+
backend: &egv1a1.Backend{
1036+
ObjectMeta: metav1.ObjectMeta{
1037+
Namespace: ns,
1038+
Name: "test-backend",
1039+
},
1040+
Spec: egv1a1.BackendSpec{
1041+
Type: ptr.To(egv1a1.BackendTypeDynamicResolver),
1042+
TLS: &egv1a1.BackendTLSSettings{
1043+
CACertificateRefs: []gwapiv1.LocalObjectReference{
1044+
{
1045+
Kind: gwapiv1.Kind("ClusterTrustBundle"),
1046+
Name: gwapiv1.ObjectName("fake-ctb"),
1047+
},
1048+
},
1049+
},
1050+
},
1051+
},
1052+
ctpShouldBeAdded: true,
1053+
},
1054+
{
1055+
name: "DynamicResolver with ConfigMap",
1056+
backend: &egv1a1.Backend{
1057+
ObjectMeta: metav1.ObjectMeta{
1058+
Namespace: ns,
1059+
Name: "test-backend",
1060+
},
1061+
Spec: egv1a1.BackendSpec{
1062+
Type: ptr.To(egv1a1.BackendTypeDynamicResolver),
1063+
TLS: &egv1a1.BackendTLSSettings{
1064+
CACertificateRefs: []gwapiv1.LocalObjectReference{
1065+
{
1066+
Kind: gwapiv1.Kind("ConfigMap"),
1067+
Name: gwapiv1.ObjectName("fake-cm"),
1068+
},
1069+
},
1070+
},
1071+
},
1072+
},
1073+
configmapShouldBeAdded: true,
1074+
},
1075+
{
1076+
name: "DynamicResolver with Secret",
1077+
backend: &egv1a1.Backend{
1078+
ObjectMeta: metav1.ObjectMeta{
1079+
Namespace: ns,
1080+
Name: "test-backend",
1081+
},
1082+
Spec: egv1a1.BackendSpec{
1083+
Type: ptr.To(egv1a1.BackendTypeDynamicResolver),
1084+
TLS: &egv1a1.BackendTLSSettings{
1085+
CACertificateRefs: []gwapiv1.LocalObjectReference{
1086+
{
1087+
Kind: gwapiv1.Kind("Secret"),
1088+
Name: gwapiv1.ObjectName("fake-secret"),
1089+
},
1090+
},
1091+
},
1092+
},
1093+
},
1094+
secretShouldBeAdded: true,
1095+
},
1096+
}
1097+
1098+
for i := range testCases {
1099+
tc := testCases[i]
1100+
// Run the test cases.
1101+
t.Run(tc.name, func(t *testing.T) {
1102+
// Add objects referenced by test cases.
1103+
objs := []client.Object{tc.backend, ctb, secret, cm}
1104+
logger := logging.DefaultLogger(os.Stdout, egv1a1.LogLevelInfo)
1105+
1106+
r := &gatewayAPIReconciler{
1107+
log: logger,
1108+
classController: "some-gateway-class",
1109+
}
1110+
1111+
r.client = fakeclient.NewClientBuilder().
1112+
WithScheme(envoygateway.GetScheme()).
1113+
WithObjects(objs...).
1114+
Build()
1115+
1116+
resourceTree := resource.NewResources()
1117+
resourceMap := newResourceMapping()
1118+
backend := tc.backend
1119+
resourceMap.allAssociatedBackendRefs.Insert(gwapiv1.BackendObjectReference{
1120+
Kind: gatewayapi.KindPtr(resource.KindBackend),
1121+
Namespace: gatewayapi.NamespacePtr(backend.Namespace),
1122+
Name: gwapiv1.ObjectName(backend.Name),
1123+
})
1124+
1125+
r.processBackendRefs(t.Context(), resourceTree, resourceMap)
1126+
if tc.ctpShouldBeAdded {
1127+
require.Contains(t, resourceTree.ClusterTrustBundles, ctb)
1128+
} else {
1129+
require.NotContains(t, resourceTree.ClusterTrustBundles, ctb)
1130+
}
1131+
1132+
if tc.secretShouldBeAdded {
1133+
require.Contains(t, resourceTree.Secrets, secret)
1134+
} else {
1135+
require.NotContains(t, resourceTree.Secrets, secret)
1136+
}
1137+
1138+
if tc.configmapShouldBeAdded {
1139+
require.Contains(t, resourceTree.ConfigMaps, cm)
1140+
} else {
1141+
require.NotContains(t, resourceTree.ConfigMaps, cm)
1142+
}
1143+
})
1144+
}
1145+
}
1146+
10101147
func setupReferenceGrantReconciler(objs []client.Object) *gatewayAPIReconciler {
10111148
logger := logging.DefaultLogger(os.Stdout, egv1a1.LogLevelInfo)
10121149

0 commit comments

Comments
 (0)