driftctl/pkg/iac/supplier/supplier_test.go

107 lines
2.3 KiB
Go
Raw Normal View History

package supplier
import (
"fmt"
"reflect"
"testing"
"github.com/cloudskiff/driftctl/pkg/iac/config"
2021-03-16 15:29:32 +00:00
"github.com/cloudskiff/driftctl/pkg/iac/terraform/state/backend"
"github.com/cloudskiff/driftctl/pkg/terraform"
)
func TestGetIACSupplier(t *testing.T) {
type args struct {
2021-03-16 15:29:32 +00:00
config []config.SupplierConfig
options *backend.Options
}
tests := []struct {
name string
args args
wantErr error
}{
{
name: "test unknown supplier",
args: args{
2021-01-15 11:44:13 +00:00
config: []config.SupplierConfig{
{
Key: "foobar",
},
},
2021-03-16 15:29:32 +00:00
options: &backend.Options{
Headers: map[string]string{},
},
2021-01-15 11:44:13 +00:00
},
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",
},
},
2021-03-16 15:29:32 +00:00
options: &backend.Options{
Headers: map[string]string{},
},
},
wantErr: fmt.Errorf("Unsupported supplier 'foobar'"),
},
{
name: "test valid tfstate://terraform.tfstate",
args: args{
2021-01-15 11:44:13 +00:00
config: []config.SupplierConfig{
{Key: "tfstate", Backend: "", Path: "terraform.tfstate"},
},
2021-03-16 15:29:32 +00:00
options: &backend.Options{
Headers: map[string]string{},
},
2021-01-15 11:44:13 +00:00
},
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"},
},
2021-03-16 15:29:32 +00:00
options: &backend.Options{
Headers: map[string]string{},
},
},
wantErr: nil,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
2021-03-16 15:29:32 +00:00
_, err := GetIACSupplier(tt.args.config, terraform.NewProviderLibrary(), tt.args.options)
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://",
"tfstate+http://",
"tfstate+https://",
}
if got := GetSupportedSchemes(); !reflect.DeepEqual(got, want) {
t.Errorf("GetSupportedSchemes() = %v, want %v", got, want)
}
}