diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index a1f3e34..5be0fc9 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -30,20 +30,20 @@ jobs: runs-on: ubuntu-latest timeout-minutes: 5 steps: - - uses: actions/setup-go@v4 + - uses: actions/setup-go@v5 with: go-version: ${{ env.GO_VERSION }} - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - run: go mod download - run: go build -v . generate: runs-on: ubuntu-latest steps: - - uses: actions/setup-go@v4 + - uses: actions/setup-go@v5 with: go-version: ${{ env.GO_VERSION }} - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - run: go generate ./... - name: git diff run: | @@ -65,15 +65,16 @@ jobs: # - "1.1.*" # - "1.3.*" - "1.4.*" + - "1.6.*" steps: - - uses: actions/setup-go@v4 + - uses: actions/setup-go@v5 with: go-version: ${{ env.GO_VERSION }} - - uses: hashicorp/setup-terraform@v2 + - uses: hashicorp/setup-terraform@v3 with: terraform_version: ${{ matrix.terraform }} terraform_wrapper: false - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - run: go mod download - env: diff --git a/internal/cmlschema/extconn_test.go b/internal/cmlschema/extconn_test.go new file mode 100644 index 0000000..c45b958 --- /dev/null +++ b/internal/cmlschema/extconn_test.go @@ -0,0 +1,61 @@ +package cmlschema_test + +import ( + "context" + "testing" + + "github.com/hashicorp/terraform-plugin-framework/datasource/schema" + "github.com/hashicorp/terraform-plugin-framework/diag" + "github.com/hashicorp/terraform-plugin-framework/path" + "github.com/hashicorp/terraform-plugin-framework/tfsdk" + "github.com/hashicorp/terraform-plugin-framework/types" + cmlclient "github.com/rschmied/gocmlclient" + "github.com/rschmied/terraform-provider-cml2/internal/cmlschema" + "github.com/stretchr/testify/assert" +) + +var conn1 *cmlclient.ExtConn = &cmlclient.ExtConn{ + Label: "NAT", + DeviceName: "virbr0", + Protected: false, + Snooped: true, + Tags: []string{ + "NAT", + }, + ID: "58568fbb-e1f8-4b83-a1f8-148c656eed39", +} + +var conn2 *cmlclient.ExtConn = &cmlclient.ExtConn{ + Label: "System Bridge", + DeviceName: "bridge0", + Protected: true, + Snooped: true, + Tags: []string{ + "System Bridge", + }, + ID: "92f95da2-10fd-4a25-931e-acb31a47962c", +} + +func TestConnector(t *testing.T) { + diag := &diag.Diagnostics{} + ctx := context.Background() + + for _, connector := range []*cmlclient.ExtConn{conn1, conn2} { + value := cmlschema.NewExtConn(ctx, connector, diag) + t.Logf("value: %+v", value) + t.Logf("errors: %+v", diag.Errors()) + assert.False(t, diag.HasError()) + var newExtConn cmlschema.ExtConnModel + diag.Append(tfsdk.ValueAs(ctx, value, &newExtConn)...) + } + assert.False(t, diag.HasError()) +} + +func TestExtConnSchema(t *testing.T) { + extconnSchema := schema.Schema{ + Attributes: cmlschema.Converter(cmlschema.ExtConn()), + } + got, diag := extconnSchema.TypeAtPath(context.TODO(), path.Root("id")) + assert.False(t, diag.HasError()) + assert.Equal(t, types.StringType, got) +}