github.com/outbrain/consul@v1.4.5/agent/structs/connect_test.go (about)

     1  package structs
     2  
     3  import (
     4  	"reflect"
     5  	"testing"
     6  )
     7  
     8  func TestConnectManagedProxy_ParseConfig(t *testing.T) {
     9  	tests := []struct {
    10  		name    string
    11  		config  map[string]interface{}
    12  		want    *ConnectManagedProxyConfig
    13  		wantErr bool
    14  	}{
    15  		{
    16  			name:    "empty",
    17  			config:  nil,
    18  			want:    &ConnectManagedProxyConfig{},
    19  			wantErr: false,
    20  		},
    21  		{
    22  			name: "specified",
    23  			config: map[string]interface{}{
    24  				"bind_address": "127.0.0.1",
    25  				"bind_port":    1234,
    26  			},
    27  			want: &ConnectManagedProxyConfig{
    28  				BindAddress: "127.0.0.1",
    29  				BindPort:    1234,
    30  			},
    31  			wantErr: false,
    32  		},
    33  		{
    34  			name: "stringy port",
    35  			config: map[string]interface{}{
    36  				"bind_address": "127.0.0.1",
    37  				"bind_port":    "1234",
    38  			},
    39  			want: &ConnectManagedProxyConfig{
    40  				BindAddress: "127.0.0.1",
    41  				BindPort:    1234,
    42  			},
    43  			wantErr: false,
    44  		},
    45  		{
    46  			name: "empty addr",
    47  			config: map[string]interface{}{
    48  				"bind_address": "",
    49  				"bind_port":    "1234",
    50  			},
    51  			want: &ConnectManagedProxyConfig{
    52  				BindAddress: "",
    53  				BindPort:    1234,
    54  			},
    55  			wantErr: false,
    56  		},
    57  		{
    58  			name: "empty port",
    59  			config: map[string]interface{}{
    60  				"bind_address": "127.0.0.1",
    61  				"bind_port":    "",
    62  			},
    63  			want:    nil,
    64  			wantErr: true,
    65  		},
    66  		{
    67  			name: "junk address",
    68  			config: map[string]interface{}{
    69  				"bind_address": 42,
    70  				"bind_port":    "",
    71  			},
    72  			want:    nil,
    73  			wantErr: true,
    74  		},
    75  		{
    76  			name: "zero port, missing addr",
    77  			config: map[string]interface{}{
    78  				"bind_port": 0,
    79  			},
    80  			want: &ConnectManagedProxyConfig{
    81  				BindPort: 0,
    82  			},
    83  			wantErr: false,
    84  		},
    85  		{
    86  			name: "extra fields present",
    87  			config: map[string]interface{}{
    88  				"bind_port": 1234,
    89  				"flamingos": true,
    90  				"upstream": []map[string]interface{}{
    91  					{"foo": "bar"},
    92  				},
    93  			},
    94  			want: &ConnectManagedProxyConfig{
    95  				BindPort: 1234,
    96  			},
    97  			wantErr: false,
    98  		},
    99  	}
   100  	for _, tt := range tests {
   101  		t.Run(tt.name, func(t *testing.T) {
   102  			p := &ConnectManagedProxy{
   103  				Config: tt.config,
   104  			}
   105  			got, err := p.ParseConfig()
   106  			if (err != nil) != tt.wantErr {
   107  				t.Errorf("ConnectManagedProxy.ParseConfig() error = %v, wantErr %v", err, tt.wantErr)
   108  				return
   109  			}
   110  			if !reflect.DeepEqual(got, tt.want) {
   111  				t.Errorf("ConnectManagedProxy.ParseConfig() = %v, want %v", got, tt.want)
   112  			}
   113  		})
   114  	}
   115  }