mirror of https://github.com/hashicorp/consul
116 lines
2.2 KiB
Go
116 lines
2.2 KiB
Go
|
package structs
|
||
|
|
||
|
import (
|
||
|
"reflect"
|
||
|
"testing"
|
||
|
)
|
||
|
|
||
|
func TestConnectManagedProxy_ParseConfig(t *testing.T) {
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
config map[string]interface{}
|
||
|
want *ConnectManagedProxyConfig
|
||
|
wantErr bool
|
||
|
}{
|
||
|
{
|
||
|
name: "empty",
|
||
|
config: nil,
|
||
|
want: &ConnectManagedProxyConfig{},
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "specified",
|
||
|
config: map[string]interface{}{
|
||
|
"bind_address": "127.0.0.1",
|
||
|
"bind_port": 1234,
|
||
|
},
|
||
|
want: &ConnectManagedProxyConfig{
|
||
|
BindAddress: "127.0.0.1",
|
||
|
BindPort: 1234,
|
||
|
},
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "stringy port",
|
||
|
config: map[string]interface{}{
|
||
|
"bind_address": "127.0.0.1",
|
||
|
"bind_port": "1234",
|
||
|
},
|
||
|
want: &ConnectManagedProxyConfig{
|
||
|
BindAddress: "127.0.0.1",
|
||
|
BindPort: 1234,
|
||
|
},
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "empty addr",
|
||
|
config: map[string]interface{}{
|
||
|
"bind_address": "",
|
||
|
"bind_port": "1234",
|
||
|
},
|
||
|
want: &ConnectManagedProxyConfig{
|
||
|
BindAddress: "",
|
||
|
BindPort: 1234,
|
||
|
},
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "empty port",
|
||
|
config: map[string]interface{}{
|
||
|
"bind_address": "127.0.0.1",
|
||
|
"bind_port": "",
|
||
|
},
|
||
|
want: nil,
|
||
|
wantErr: true,
|
||
|
},
|
||
|
{
|
||
|
name: "junk address",
|
||
|
config: map[string]interface{}{
|
||
|
"bind_address": 42,
|
||
|
"bind_port": "",
|
||
|
},
|
||
|
want: nil,
|
||
|
wantErr: true,
|
||
|
},
|
||
|
{
|
||
|
name: "zero port, missing addr",
|
||
|
config: map[string]interface{}{
|
||
|
"bind_port": 0,
|
||
|
},
|
||
|
want: &ConnectManagedProxyConfig{
|
||
|
BindPort: 0,
|
||
|
},
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "extra fields present",
|
||
|
config: map[string]interface{}{
|
||
|
"bind_port": 1234,
|
||
|
"flamingos": true,
|
||
|
"upstream": []map[string]interface{}{
|
||
|
{"foo": "bar"},
|
||
|
},
|
||
|
},
|
||
|
want: &ConnectManagedProxyConfig{
|
||
|
BindPort: 1234,
|
||
|
},
|
||
|
wantErr: false,
|
||
|
},
|
||
|
}
|
||
|
for _, tt := range tests {
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
p := &ConnectManagedProxy{
|
||
|
Config: tt.config,
|
||
|
}
|
||
|
got, err := p.ParseConfig()
|
||
|
if (err != nil) != tt.wantErr {
|
||
|
t.Errorf("ConnectManagedProxy.ParseConfig() error = %v, wantErr %v", err, tt.wantErr)
|
||
|
return
|
||
|
}
|
||
|
if !reflect.DeepEqual(got, tt.want) {
|
||
|
t.Errorf("ConnectManagedProxy.ParseConfig() = %v, want %v", got, tt.want)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
}
|