06cd0aaa8d
This ensures that if someone does include some extension Consul does not currently make use of, that extension is actually usable. Without linking these envoy protobufs into the main binary it can't round trip the escape hatches to send them down to envoy. Whenenver the go-control-plane library is upgraded next we just have to re-run 'make envoy-library'.
54 lines
1.2 KiB
Go
54 lines
1.2 KiB
Go
package xds
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/golang/protobuf/jsonpb"
|
|
"github.com/golang/protobuf/ptypes/any"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestUnusedExtensions(t *testing.T) {
|
|
// This test asserts that some key protobuf structs are usable by escape
|
|
// hatches despite not being directly used by Consul itself.
|
|
|
|
type testcase struct {
|
|
name string
|
|
input string
|
|
}
|
|
|
|
cases := []testcase{
|
|
{
|
|
"type.googleapis.com/envoy.extensions.filters.http.ext_authz.v3.ExtAuthz",
|
|
` {
|
|
"@type": "type.googleapis.com/envoy.extensions.filters.http.ext_authz.v3.ExtAuthz",
|
|
"http_service": {
|
|
"server_uri": {
|
|
"uri": "localhost:8090",
|
|
"cluster": "ext-authz",
|
|
"timeout": "0.250s"
|
|
}
|
|
}
|
|
} `,
|
|
},
|
|
{
|
|
"type.googleapis.com/envoy.config.trace.v3.ZipkinConfig",
|
|
` {
|
|
"@type": "type.googleapis.com/envoy.config.trace.v3.ZipkinConfig",
|
|
"collector_cluster": "zipkin",
|
|
"collector_endpoint_version": "HTTP_JSON",
|
|
"collector_endpoint": "/api/v1/spans",
|
|
"shared_span_context": false
|
|
} `,
|
|
},
|
|
}
|
|
|
|
for _, tc := range cases {
|
|
t.Run(tc.name, func(t *testing.T) {
|
|
var any any.Any
|
|
require.NoError(t, jsonpb.UnmarshalString(tc.input, &any))
|
|
require.Equal(t, tc.name, any.TypeUrl)
|
|
})
|
|
}
|
|
}
|