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 }