github.com/vmware/go-vcloud-director/v2@v2.24.0/govcd/openapi_generic_unit_test.go (about)

     1  //go:build unit || ALL
     2  
     3  package govcd
     4  
     5  import (
     6  	"testing"
     7  )
     8  
     9  func Test_urlFromEndpoint(t *testing.T) {
    10  	type args struct {
    11  		endpoint       string
    12  		endpointParams []string
    13  	}
    14  	tests := []struct {
    15  		name    string
    16  		args    args
    17  		want    string
    18  		wantErr bool
    19  	}{
    20  		{
    21  			name:    "PlaceholderAndSuffix",
    22  			args:    args{endpoint: "1.0.0/edgeGateways/%s/ipsec/tunnels/", endpointParams: []string{"edgeGatewayId", "suffix"}},
    23  			want:    "1.0.0/edgeGateways/edgeGatewayId/ipsec/tunnels/suffix",
    24  			wantErr: false,
    25  		},
    26  		{
    27  			name:    "PlaceholderUnsatisfiedEmptySlice",
    28  			args:    args{endpoint: "1.0.0/edgeGateways/%s/ipsec/tunnels/", endpointParams: []string{}},
    29  			want:    "",
    30  			wantErr: true,
    31  		},
    32  		{
    33  			name:    "PlaceholderUnsatisfiedNilSlice",
    34  			args:    args{endpoint: "1.0.0/edgeGateways/%s/ipsec/tunnels/", endpointParams: nil},
    35  			want:    "",
    36  			wantErr: true,
    37  		},
    38  		{
    39  			name:    "NoPlaceholderNilSlice",
    40  			args:    args{endpoint: "1.0.0/edgeGateways/ipsec/tunnels/", endpointParams: nil},
    41  			want:    "1.0.0/edgeGateways/ipsec/tunnels/",
    42  			wantErr: false,
    43  		},
    44  		{
    45  			name:    "NoPlaceholderEmptySlice",
    46  			args:    args{endpoint: "1.0.0/edgeGateways/ipsec/tunnels/", endpointParams: []string{}},
    47  			want:    "1.0.0/edgeGateways/ipsec/tunnels/",
    48  			wantErr: false,
    49  		},
    50  		{
    51  			name:    "InsufficientPlaceholderReplacements",
    52  			args:    args{endpoint: "1.0.0/edgeGateways/%s/ipsec/%s/tunnels/", endpointParams: []string{"replacement-one"}},
    53  			want:    "",
    54  			wantErr: true,
    55  		},
    56  		{
    57  			name:    "MultipleSuffixes",
    58  			args:    args{endpoint: "1.0.0/edgeGateways/%s/ipsec/%s/tunnels/", endpointParams: []string{"replacement-one", "replacement-two", "suffix-one", "/", "suffix-two"}},
    59  			want:    "1.0.0/edgeGateways/replacement-one/ipsec/replacement-two/tunnels/suffix-one/suffix-two",
    60  			wantErr: false,
    61  		},
    62  	}
    63  	for _, tt := range tests {
    64  		t.Run(tt.name, func(t *testing.T) {
    65  			got, err := urlFromEndpoint(tt.args.endpoint, tt.args.endpointParams)
    66  			if (err != nil) != tt.wantErr {
    67  				t.Errorf("urlFromEndpoint() error = %v, wantErr %v", err, tt.wantErr)
    68  				return
    69  			}
    70  			if got != tt.want {
    71  				t.Errorf("urlFromEndpoint() = %v, want %v", got, tt.want)
    72  			}
    73  		})
    74  	}
    75  }