driftctl/pkg/iac/supplier/supplier_test.go

100 lines
2.1 KiB
Go

package supplier
import (
"fmt"
"reflect"
"testing"
"github.com/cloudskiff/driftctl/pkg/iac/config"
"github.com/cloudskiff/driftctl/pkg/terraform"
)
func TestGetIACSupplier(t *testing.T) {
type args struct {
config []config.SupplierConfig
}
tests := []struct {
name string
args args
wantErr error
}{
{
name: "test unknown supplier",
args: args{
config: []config.SupplierConfig{
{
Key: "foobar",
},
},
},
wantErr: fmt.Errorf("Unsupported supplier 'foobar'"),
},
{
name: "test unknown supplier in multiples states",
args: args{
config: []config.SupplierConfig{
{
Key: "foobar",
},
{
Key: "tfstate",
Backend: "",
Path: "terraform.tfstate",
},
},
},
wantErr: fmt.Errorf("Unsupported supplier 'foobar'"),
},
{
name: "test unknown backend",
args: args{
config: []config.SupplierConfig{
{Key: "tfstate", Backend: "foobar"},
},
},
wantErr: fmt.Errorf("Unsupported backend 'foobar'"),
},
{
name: "test valid tfstate://terraform.tfstate",
args: args{
config: []config.SupplierConfig{
{Key: "tfstate", Backend: "", Path: "terraform.tfstate"},
},
},
wantErr: nil,
},
{
name: "test valid multiples states",
args: args{
config: []config.SupplierConfig{
{Key: "tfstate", Backend: "", Path: "terraform.tfstate"},
{Key: "tfstate", Backend: "s3", Path: "terraform.tfstate"},
{Key: "tfstate", Backend: "", Path: "terraform2.tfstate"},
},
},
wantErr: nil,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
_, err := GetIACSupplier(tt.args.config, terraform.NewProviderLibrary())
if tt.wantErr != nil && err.Error() != tt.wantErr.Error() {
t.Errorf("GetIACSupplier() error = %v, wantErr %v", err, tt.wantErr)
return
}
})
}
}
func TestGetSupportedSchemes(t *testing.T) {
want := []string{
"tfstate://",
"tfstate+s3://",
}
if got := GetSupportedSchemes(); !reflect.DeepEqual(got, want) {
t.Errorf("GetSupportedSchemes() = %v, want %v", got, want)
}
}