github.com/defang-io/defang/src@v0.0.0-20240505002154-bdf411911834/pkg/cli/client/provider_test.go (about)

     1  package client
     2  
     3  import (
     4  	"strings"
     5  	"testing"
     6  
     7  	"github.com/spf13/pflag"
     8  )
     9  
    10  var _ pflag.Value = (*Provider)(nil)
    11  
    12  func TestProvider(t *testing.T) {
    13  	tests := []struct {
    14  		name     string
    15  		provider string
    16  		want     Provider
    17  		wantErr  bool
    18  	}{
    19  		{
    20  			name:     "valid provider defang",
    21  			provider: "defang",
    22  			want:     ProviderDefang,
    23  			wantErr:  false,
    24  		},
    25  		{
    26  			name:     "valid provider Defang",
    27  			provider: "Defang",
    28  			want:     ProviderDefang,
    29  			wantErr:  false,
    30  		},
    31  		{
    32  			name:     "invalid provider",
    33  			provider: "invalid",
    34  			wantErr:  true,
    35  		},
    36  		{
    37  			name:     "empty provider",
    38  			provider: "",
    39  			wantErr:  true,
    40  		},
    41  		{
    42  			name:     "valid provider aws",
    43  			provider: "aws",
    44  			want:     ProviderAWS,
    45  			wantErr:  false,
    46  		},
    47  		{
    48  			name:     "valid provider AWS",
    49  			provider: "AWS",
    50  			want:     ProviderAWS,
    51  			wantErr:  false,
    52  		},
    53  		{
    54  			name:     "valid provider auto",
    55  			provider: "auto",
    56  			want:     ProviderAuto,
    57  			wantErr:  false,
    58  		},
    59  	}
    60  	for _, tt := range tests {
    61  		t.Run(tt.name, func(t *testing.T) {
    62  			var p Provider
    63  			if err := p.Set(tt.provider); (err != nil) != tt.wantErr {
    64  				t.Errorf("Provider.Set() error = %v, wantErr %v", err, tt.wantErr)
    65  			}
    66  			if !tt.wantErr && p.String() != strings.ToLower(tt.provider) {
    67  				t.Errorf("Provider.String() = %v, want %v", p.String(), tt.provider)
    68  			}
    69  			if p != tt.want {
    70  				t.Errorf("Provider.Set() = %v, want %v", p, tt.want)
    71  			}
    72  		})
    73  	}
    74  }