You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
consul/command/resource/client/grpc-config_test.go

61 lines
1.9 KiB

// Copyright (c) HashiCorp, Inc.
// SPDX-License-Identifier: BUSL-1.1
package client
import (
"testing"
"github.com/stretchr/testify/assert"
)
func TestLoadGRPCConfig(t *testing.T) {
t.Run("Default Config", func(t *testing.T) {
// Test when defaultConfig is nil
config, err := LoadGRPCConfig(nil)
assert.NoError(t, err)
assert.Equal(t, GetDefaultGRPCConfig(), config)
})
// Test when environment variables are set
t.Run("Env Overwritten", func(t *testing.T) {
// Mock environment variables
t.Setenv(GRPCAddrEnvName, "localhost:8500")
t.Setenv(GRPCTLSEnvName, "true")
t.Setenv(GRPCTLSVerifyEnvName, "false")
t.Setenv(GRPCClientCertEnvName, "/path/to/client.crt")
t.Setenv(GRPCClientKeyEnvName, "/path/to/client.key")
t.Setenv(GRPCCAFileEnvName, "/path/to/ca.crt")
t.Setenv(GRPCCAPathEnvName, "/path/to/cacerts")
t.Setenv(GRPCTokenEnvName, "token")
t.Setenv(GRPCTokenFileEnvName, "/path/to/token/file")
// Load and validate the configuration
config, err := LoadGRPCConfig(nil)
assert.NoError(t, err)
expectedConfig := &GRPCConfig{
Address: "localhost:8500",
GRPCTLS: true,
GRPCTLSVerify: false,
CertFile: "/path/to/client.crt",
KeyFile: "/path/to/client.key",
CAFile: "/path/to/ca.crt",
CAPath: "/path/to/cacerts",
Token: "token",
TokenFile: "/path/to/token/file",
}
assert.Equal(t, expectedConfig, config)
})
// Test when there's an error parsing a boolean value from an environment variable
t.Run("Error Parsing Bool", func(t *testing.T) {
// Mock environment variable with an invalid boolean value
t.Setenv(GRPCTLSEnvName, "invalid_boolean_value")
// Load and expect an error
config, err := LoadGRPCConfig(nil)
assert.Error(t, err, "failed to parse CONSUL_GRPC_TLS: strconv.ParseBool: parsing \"invalid_boolean_value\": invalid syntax")
assert.Nil(t, config)
})
}