driftctl/pkg/iac/terraform/state/versions_test.go

77 lines
1.7 KiB
Go

package state
import (
"testing"
"github.com/pkg/errors"
"github.com/stretchr/testify/assert"
)
func TestUnsupportedVersions(t *testing.T) {
var tests = []struct {
name string
constraints []string
version string
supported bool
err error
}{
{
name: "should not support 0.13",
constraints: []string{"=0.13"},
version: "0.13.0",
supported: false,
err: nil,
},
{
name: "should return error on version parsing",
constraints: UnsupportedVersionConstraints,
version: "test",
supported: false,
err: errors.New("Malformed version: test"),
},
{
name: "should return error on constraint parsing",
constraints: []string{"bad_constraint"},
version: "0.14",
supported: false,
err: errors.New("Malformed constraint: bad_constraint"),
},
{
name: "should support 0.11",
constraints: UnsupportedVersionConstraints,
version: "0.11.0",
supported: true,
err: nil,
},
{
name: "should support 0.14.8",
constraints: UnsupportedVersionConstraints,
version: "0.14.8",
supported: true,
err: nil,
},
{
name: "should not support <0.11",
constraints: UnsupportedVersionConstraints,
version: "0.10.9",
supported: false,
err: nil,
},
}
for _, test := range tests {
t.Run(test.name, func(t *testing.T) {
UnsupportedVersionConstraints = test.constraints
got, err := IsVersionSupported(test.version)
assert.Equal(t, test.supported, got)
if err != nil {
assert.EqualError(t, test.err, err.Error())
} else {
assert.Equal(t, test.err, err)
}
})
}
}