mirror of https://github.com/databricks/cli.git
129 lines
2.6 KiB
Go
129 lines
2.6 KiB
Go
|
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/pipelines"
|
||
|
"github.com/stretchr/testify/assert"
|
||
|
"github.com/stretchr/testify/require"
|
||
|
)
|
||
|
|
||
|
func TestConvertPipeline(t *testing.T) {
|
||
|
var src = resources.Pipeline{
|
||
|
PipelineSpec: &pipelines.PipelineSpec{
|
||
|
Name: "my pipeline",
|
||
|
Libraries: []pipelines.PipelineLibrary{
|
||
|
{
|
||
|
Notebook: &pipelines.NotebookLibrary{
|
||
|
Path: "notebook path",
|
||
|
},
|
||
|
},
|
||
|
{
|
||
|
File: &pipelines.FileLibrary{
|
||
|
Path: "file path",
|
||
|
},
|
||
|
},
|
||
|
},
|
||
|
Notifications: []pipelines.Notifications{
|
||
|
{
|
||
|
Alerts: []string{
|
||
|
"on-update-fatal-failure",
|
||
|
},
|
||
|
EmailRecipients: []string{
|
||
|
"jane@doe.com",
|
||
|
},
|
||
|
},
|
||
|
{
|
||
|
Alerts: []string{
|
||
|
"on-update-failure",
|
||
|
"on-flow-failure",
|
||
|
},
|
||
|
EmailRecipients: []string{
|
||
|
"jane@doe.com",
|
||
|
"john@doe.com",
|
||
|
},
|
||
|
},
|
||
|
},
|
||
|
Clusters: []pipelines.PipelineCluster{
|
||
|
{
|
||
|
Label: "default",
|
||
|
NumWorkers: 1,
|
||
|
},
|
||
|
},
|
||
|
},
|
||
|
Permissions: []resources.Permission{
|
||
|
{
|
||
|
Level: "CAN_VIEW",
|
||
|
UserName: "jane@doe.com",
|
||
|
},
|
||
|
},
|
||
|
}
|
||
|
|
||
|
vin, err := convert.FromTyped(src, dyn.NilValue)
|
||
|
require.NoError(t, err)
|
||
|
|
||
|
ctx := context.Background()
|
||
|
out := schema.NewResources()
|
||
|
err = pipelineConverter{}.Convert(ctx, "my_pipeline", vin, out)
|
||
|
require.NoError(t, err)
|
||
|
|
||
|
// Assert equality on the pipeline
|
||
|
assert.Equal(t, map[string]any{
|
||
|
"name": "my pipeline",
|
||
|
"library": []any{
|
||
|
map[string]any{
|
||
|
"notebook": map[string]any{
|
||
|
"path": "notebook path",
|
||
|
},
|
||
|
},
|
||
|
map[string]any{
|
||
|
"file": map[string]any{
|
||
|
"path": "file path",
|
||
|
},
|
||
|
},
|
||
|
},
|
||
|
"notification": []any{
|
||
|
map[string]any{
|
||
|
"alerts": []any{
|
||
|
"on-update-fatal-failure",
|
||
|
},
|
||
|
"email_recipients": []any{
|
||
|
"jane@doe.com",
|
||
|
},
|
||
|
},
|
||
|
map[string]any{
|
||
|
"alerts": []any{
|
||
|
"on-update-failure",
|
||
|
"on-flow-failure",
|
||
|
},
|
||
|
"email_recipients": []any{
|
||
|
"jane@doe.com",
|
||
|
"john@doe.com",
|
||
|
},
|
||
|
},
|
||
|
},
|
||
|
"cluster": []any{
|
||
|
map[string]any{
|
||
|
"label": "default",
|
||
|
"num_workers": int64(1),
|
||
|
},
|
||
|
},
|
||
|
}, out.Pipeline["my_pipeline"])
|
||
|
|
||
|
// Assert equality on the permissions
|
||
|
assert.Equal(t, &schema.ResourcePermissions{
|
||
|
PipelineId: "${databricks_pipeline.my_pipeline.id}",
|
||
|
AccessControl: []schema.ResourcePermissionsAccessControl{
|
||
|
{
|
||
|
PermissionLevel: "CAN_VIEW",
|
||
|
UserName: "jane@doe.com",
|
||
|
},
|
||
|
},
|
||
|
}, out.Permissions["pipeline_my_pipeline"])
|
||
|
}
|