2024-09-09 12:40:10 +00:00
|
|
|
package tfdyn
|
|
|
|
|
|
|
|
import (
|
|
|
|
"context"
|
|
|
|
"testing"
|
|
|
|
|
|
|
|
"github.com/databricks/cli/bundle/config/resources"
|
|
|
|
"github.com/databricks/cli/bundle/internal/tf/schema"
|
|
|
|
"github.com/databricks/cli/libs/dyn"
|
|
|
|
"github.com/databricks/cli/libs/dyn/convert"
|
|
|
|
"github.com/databricks/databricks-sdk-go/service/catalog"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
|
|
)
|
|
|
|
|
|
|
|
func TestConvertVolume(t *testing.T) {
|
|
|
|
var src = resources.Volume{
|
|
|
|
CreateVolumeRequestContent: &catalog.CreateVolumeRequestContent{
|
|
|
|
CatalogName: "catalog",
|
|
|
|
Comment: "comment",
|
|
|
|
Name: "name",
|
|
|
|
SchemaName: "schema",
|
|
|
|
StorageLocation: "s3://bucket/path",
|
|
|
|
VolumeType: "EXTERNAL",
|
|
|
|
},
|
|
|
|
Grants: []resources.Grant{
|
|
|
|
{
|
|
|
|
Privileges: []string{"READ_VOLUME"},
|
|
|
|
Principal: "jack@gmail.com",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
Privileges: []string{"WRITE_VOLUME"},
|
|
|
|
Principal: "jane@gmail.com",
|
|
|
|
},
|
|
|
|
},
|
|
|
|
}
|
|
|
|
|
|
|
|
vin, err := convert.FromTyped(src, dyn.NilValue)
|
|
|
|
require.NoError(t, err)
|
|
|
|
|
|
|
|
ctx := context.Background()
|
|
|
|
out := schema.NewResources()
|
|
|
|
err = volumeConverter{}.Convert(ctx, "my_volume", vin, out)
|
|
|
|
require.NoError(t, err)
|
|
|
|
|
|
|
|
// Assert equality on the volume
|
|
|
|
require.Equal(t, map[string]any{
|
|
|
|
"catalog_name": "catalog",
|
|
|
|
"comment": "comment",
|
|
|
|
"name": "name",
|
|
|
|
"schema_name": "schema",
|
|
|
|
"storage_location": "s3://bucket/path",
|
|
|
|
"volume_type": "EXTERNAL",
|
2024-09-15 21:45:01 +00:00
|
|
|
}, out.Volume["my_volume"])
|
2024-09-09 12:40:10 +00:00
|
|
|
|
|
|
|
// Assert equality on the grants
|
|
|
|
assert.Equal(t, &schema.ResourceGrants{
|
|
|
|
Volume: "${databricks_volume.my_volume.id}",
|
|
|
|
Grant: []schema.ResourceGrantsGrant{
|
|
|
|
{
|
|
|
|
Privileges: []string{"READ_VOLUME"},
|
|
|
|
Principal: "jack@gmail.com",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
Privileges: []string{"WRITE_VOLUME"},
|
|
|
|
Principal: "jane@gmail.com",
|
|
|
|
},
|
|
|
|
},
|
|
|
|
}, out.Grants["volume_my_volume"])
|
|
|
|
}
|