// 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 )
} )
}