From 97160ae38f9a2d02e38f7515532715ce60b737c3 Mon Sep 17 00:00:00 2001 From: Jesse Haka Date: Mon, 6 May 2024 19:52:19 +0300 Subject: [PATCH] add test Signed-off-by: Jesse Haka --- .../xds/translator/proxy_protocol_test.go | 58 +++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 internal/xds/translator/proxy_protocol_test.go diff --git a/internal/xds/translator/proxy_protocol_test.go b/internal/xds/translator/proxy_protocol_test.go new file mode 100644 index 00000000000..b4b5ac51aff --- /dev/null +++ b/internal/xds/translator/proxy_protocol_test.go @@ -0,0 +1,58 @@ +// Copyright Envoy Gateway Authors +// SPDX-License-Identifier: Apache-2.0 +// The full text of the Apache license is available in the LICENSE file at +// the root of the repo. + +package translator + +import ( + "testing" + + listenerv3 "github.com/envoyproxy/go-control-plane/envoy/config/listener/v3" + "github.com/envoyproxy/go-control-plane/pkg/wellknown" + "github.com/stretchr/testify/require" + + "github.com/envoyproxy/gateway/internal/ir" +) + +func TestPatchProxyProtocolFilter(t *testing.T) { + type testCase struct { + name string + listener *listenerv3.Listener + } + + irListener := &ir.HTTPListener{ + EnableProxyProtocol: true, + } + + testCases := []testCase{ + { + name: "listener with proxy proto available already", + listener: &listenerv3.Listener{ + ListenerFilters: []*listenerv3.ListenerFilter{ + { + Name: wellknown.ProxyProtocol, + }, + }, + }, + }, + { + name: "listener with tls, append proxy proto", + listener: &listenerv3.Listener{ + ListenerFilters: []*listenerv3.ListenerFilter{ + { + Name: wellknown.TLSInspector, + }, + }, + }, + }, + } + + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + patchProxyProtocolFilter(tc.listener, irListener) + // proxy proto filter should be added always as first + require.Equal(t, wellknown.ProxyProtocol, tc.listener.ListenerFilters[0].Name) + }) + } +}