mirror of https://github.com/databricks/cli.git
Remove assumptions tests from core PR
This commit is contained in:
parent
25a151cd60
commit
ba182c4f84
|
@ -2,14 +2,11 @@ package acc
|
|||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"os"
|
||||
"testing"
|
||||
|
||||
"github.com/databricks/databricks-sdk-go"
|
||||
"github.com/databricks/databricks-sdk-go/apierr"
|
||||
"github.com/databricks/databricks-sdk-go/service/compute"
|
||||
"github.com/databricks/databricks-sdk-go/service/workspace"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
|
@ -97,30 +94,3 @@ func (t *WorkspaceT) RunPython(code string) (string, error) {
|
|||
require.True(t, ok, "unexpected type %T", results.Data)
|
||||
return output, nil
|
||||
}
|
||||
|
||||
func (t *WorkspaceT) TemporaryWorkspaceDir(name ...string) string {
|
||||
ctx := context.Background()
|
||||
me, err := t.W.CurrentUser.Me(ctx)
|
||||
require.NoError(t, err)
|
||||
|
||||
basePath := fmt.Sprintf("/Users/%s/%s", me.UserName, RandomName(name...))
|
||||
|
||||
t.Logf("Creating %s", basePath)
|
||||
err = t.W.Workspace.MkdirsByPath(ctx, basePath)
|
||||
require.NoError(t, err)
|
||||
|
||||
// Remove test directory on test completion.
|
||||
t.Cleanup(func() {
|
||||
t.Logf("Removing %s", basePath)
|
||||
err := t.W.Workspace.Delete(ctx, workspace.Delete{
|
||||
Path: basePath,
|
||||
Recursive: true,
|
||||
})
|
||||
if err == nil || apierr.IsMissing(err) {
|
||||
return
|
||||
}
|
||||
t.Logf("Unable to remove temporary workspace directory %s: %#v", basePath, err)
|
||||
})
|
||||
|
||||
return basePath
|
||||
}
|
||||
|
|
|
@ -1,110 +0,0 @@
|
|||
package internal
|
||||
|
||||
import (
|
||||
"encoding/base64"
|
||||
"testing"
|
||||
|
||||
"github.com/databricks/cli/internal/acc"
|
||||
"github.com/databricks/cli/libs/dyn"
|
||||
"github.com/databricks/cli/libs/dyn/convert"
|
||||
"github.com/databricks/cli/libs/dyn/merge"
|
||||
"github.com/databricks/databricks-sdk-go/apierr"
|
||||
"github.com/databricks/databricks-sdk-go/service/dashboards"
|
||||
"github.com/databricks/databricks-sdk-go/service/workspace"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
// Verify that importing a dashboard through the Workspace API retains the identity of the underying resource,
|
||||
// as well as properties exclusively accessible through the dashboards API.
|
||||
func TestAccDashboardAssumptions_WorkspaceImport(t *testing.T) {
|
||||
ctx, wt := acc.WorkspaceTest(t)
|
||||
|
||||
t.Parallel()
|
||||
|
||||
dashboardName := "New Dashboard"
|
||||
dashboardPayload := []byte(`{"pages":[{"name":"2506f97a","displayName":"New Page"}]}`)
|
||||
warehouseId := acc.GetEnvOrSkipTest(t, "TEST_DEFAULT_WAREHOUSE_ID")
|
||||
|
||||
dir := wt.TemporaryWorkspaceDir("dashboard-assumptions-")
|
||||
|
||||
dashboard, err := wt.W.Lakeview.Create(ctx, dashboards.CreateDashboardRequest{
|
||||
DisplayName: dashboardName,
|
||||
ParentPath: dir,
|
||||
SerializedDashboard: string(dashboardPayload),
|
||||
WarehouseId: warehouseId,
|
||||
})
|
||||
require.NoError(t, err)
|
||||
t.Logf("Dashboard ID (per Lakeview API): %s", dashboard.DashboardId)
|
||||
|
||||
// Overwrite the dashboard via the workspace API.
|
||||
{
|
||||
err := wt.W.Workspace.Import(ctx, workspace.Import{
|
||||
Format: workspace.ImportFormatAuto,
|
||||
Path: dashboard.Path,
|
||||
Content: base64.StdEncoding.EncodeToString(dashboardPayload),
|
||||
Overwrite: true,
|
||||
})
|
||||
require.NoError(t, err)
|
||||
}
|
||||
|
||||
// Cross-check consistency with the workspace object.
|
||||
{
|
||||
obj, err := wt.W.Workspace.GetStatusByPath(ctx, dashboard.Path)
|
||||
require.NoError(t, err)
|
||||
|
||||
// Confirm that the resource ID included in the response is equal to the dashboard ID.
|
||||
require.Equal(t, dashboard.DashboardId, obj.ResourceId)
|
||||
t.Logf("Dashboard ID (per workspace object status): %s", obj.ResourceId)
|
||||
}
|
||||
|
||||
// Try to overwrite the dashboard via the Lakeview API (and expect failure).
|
||||
{
|
||||
_, err := wt.W.Lakeview.Create(ctx, dashboards.CreateDashboardRequest{
|
||||
DisplayName: dashboardName,
|
||||
ParentPath: dir,
|
||||
SerializedDashboard: string(dashboardPayload),
|
||||
})
|
||||
require.ErrorIs(t, err, apierr.ErrResourceAlreadyExists)
|
||||
}
|
||||
|
||||
// Retrieve the dashboard object and confirm that only select fields were updated by the import.
|
||||
{
|
||||
obj, err := wt.W.Lakeview.Get(ctx, dashboards.GetDashboardRequest{
|
||||
DashboardId: dashboard.DashboardId,
|
||||
})
|
||||
require.NoError(t, err)
|
||||
|
||||
// Convert the dashboard object to a [dyn.Value] to make comparison easier.
|
||||
previous, err := convert.FromTyped(dashboard, dyn.NilValue)
|
||||
require.NoError(t, err)
|
||||
current, err := convert.FromTyped(obj, dyn.NilValue)
|
||||
require.NoError(t, err)
|
||||
|
||||
// Collect updated paths.
|
||||
var updatedFieldPaths []string
|
||||
_, err = merge.Override(previous, current, merge.OverrideVisitor{
|
||||
VisitDelete: func(basePath dyn.Path, left dyn.Value) error {
|
||||
assert.Fail(t, "unexpected delete operation")
|
||||
return nil
|
||||
},
|
||||
VisitInsert: func(basePath dyn.Path, right dyn.Value) (dyn.Value, error) {
|
||||
assert.Fail(t, "unexpected insert operation")
|
||||
return right, nil
|
||||
},
|
||||
VisitUpdate: func(basePath dyn.Path, left dyn.Value, right dyn.Value) (dyn.Value, error) {
|
||||
updatedFieldPaths = append(updatedFieldPaths, basePath.String())
|
||||
return right, nil
|
||||
},
|
||||
})
|
||||
require.NoError(t, err)
|
||||
|
||||
// Confirm that only the expected fields have been updated.
|
||||
assert.ElementsMatch(t, []string{
|
||||
"etag",
|
||||
"serialized_dashboard",
|
||||
"update_time",
|
||||
}, updatedFieldPaths)
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue