mirror of https://github.com/status-im/consul.git
Added testing of GRPC with TLS combinations
This ensures that https://github.com/hashicorp/consul/issues/9474 will not reproduce.
This commit is contained in:
parent
e2f2d4b0d7
commit
994fe80358
|
@ -0,0 +1,107 @@
|
|||
package agent
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
"net/http/httptest"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/require"
|
||||
|
||||
"github.com/hashicorp/consul/sdk/testutil"
|
||||
"github.com/hashicorp/consul/testrpc"
|
||||
)
|
||||
|
||||
func testGRPCStreamingWorking(t *testing.T, config string) {
|
||||
if testing.Short() {
|
||||
t.Skip("too slow for testing.Short")
|
||||
}
|
||||
|
||||
a := NewTestAgent(t, config)
|
||||
defer a.Shutdown()
|
||||
|
||||
testrpc.WaitForLeader(t, a.RPC, "dc1")
|
||||
|
||||
req, _ := http.NewRequest("GET", "/v1/health/service/consul?index=3", nil)
|
||||
resp := httptest.NewRecorder()
|
||||
_, err := a.srv.HealthServiceNodes(resp, req)
|
||||
if err != nil {
|
||||
t.Fatalf("err: %v", err)
|
||||
}
|
||||
|
||||
assertIndex(t, resp)
|
||||
require.NotEmpty(t, resp.Header().Get("X-Consul-Index"))
|
||||
}
|
||||
|
||||
func TestGRPCWithTLSConfigs(t *testing.T) {
|
||||
t.Parallel()
|
||||
testCases := []struct {
|
||||
name string
|
||||
config string
|
||||
}{
|
||||
{
|
||||
name: "no-tls",
|
||||
config: "",
|
||||
},
|
||||
{
|
||||
name: "tls-all-enabled",
|
||||
config: `
|
||||
# tls
|
||||
ca_file = "../test/hostname/CertAuth.crt"
|
||||
cert_file = "../test/hostname/Bob.crt"
|
||||
key_file = "../test/hostname/Bob.key"
|
||||
verify_incoming = true
|
||||
verify_outgoing = true
|
||||
verify_server_hostname = true
|
||||
`,
|
||||
},
|
||||
{
|
||||
name: "tls ready no verify incoming",
|
||||
config: `
|
||||
# tls
|
||||
ca_file = "../test/hostname/CertAuth.crt"
|
||||
cert_file = "../test/hostname/Bob.crt"
|
||||
key_file = "../test/hostname/Bob.key"
|
||||
verify_incoming = false
|
||||
verify_outgoing = true
|
||||
verify_server_hostname = false
|
||||
`,
|
||||
},
|
||||
{
|
||||
name: "tls ready no verify outgoing and incoming",
|
||||
config: `
|
||||
# tls
|
||||
ca_file = "../test/hostname/CertAuth.crt"
|
||||
cert_file = "../test/hostname/Bob.crt"
|
||||
key_file = "../test/hostname/Bob.key"
|
||||
verify_incoming = false
|
||||
verify_outgoing = false
|
||||
verify_server_hostname = false
|
||||
`,
|
||||
},
|
||||
{
|
||||
name: "tls ready, all defaults",
|
||||
config: `
|
||||
# tls
|
||||
ca_file = "../test/hostname/CertAuth.crt"
|
||||
cert_file = "../test/hostname/Bob.crt"
|
||||
key_file = "../test/hostname/Bob.key"
|
||||
`,
|
||||
},
|
||||
}
|
||||
for _, tt := range testCases {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
dataDir := testutil.TempDir(t, "agent") // we manage the data dir
|
||||
cfg := `data_dir = "` + dataDir + `"
|
||||
domain = "consul"
|
||||
node_name = "my-fancy-server"
|
||||
datacenter = "dc1"
|
||||
primary_datacenter = "dc1"
|
||||
rpc {
|
||||
enable_streaming = true
|
||||
}
|
||||
use_streaming_backend = true
|
||||
` + tt.config
|
||||
testGRPCStreamingWorking(t, cfg)
|
||||
})
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue