databricks-cli/bundle/permissions/terraform_errors_test.go

77 lines
2.9 KiB
Go
Raw Normal View History

2024-07-06 19:47:28 +00:00
package permissions_test
import (
"context"
"errors"
"testing"
"github.com/databricks/cli/bundle/config/resources"
"github.com/databricks/cli/bundle/permissions"
"github.com/databricks/cli/libs/diag"
"github.com/databricks/databricks-sdk-go/service/jobs"
"github.com/stretchr/testify/require"
)
func TestTryExtendTerraformPermissionError1(t *testing.T) {
ctx := context.Background()
b := mockBundle([]resources.Permission{
{Level: "CAN_MANAGE", UserName: "alice@databricks.com"},
})
err := permissions.TryExtendTerraformPermissionError(ctx, b, errors.New(`Error: terraform apply: exit status 1
Error: cannot update permissions: ...
with databricks_pipeline.my_project_pipeline,
on bundle.tf.json line 39, in resource.databricks_pipeline.my_project_pipeline:
39: }`)).Error()
require.ErrorContains(t, err, string(diag.ResourcePermissionDenied))
}
func TestTryExtendTerraformPermissionError2(t *testing.T) {
ctx := context.Background()
b := mockBundle([]resources.Permission{
{Level: "CAN_MANAGE", UserName: "alice@databricks.com"},
})
err := permissions.TryExtendTerraformPermissionError(ctx, b, errors.New(`Error: terraform apply: exit status 1
Error: cannot read pipeline: User xyz does not have View permissions on pipeline 4521dbb6-42aa-418c-b94d-b5f4859a3454.
with databricks_pipeline.my_project_pipeline,
on bundle.tf.json line 39, in resource.databricks_pipeline.my_project_pipeline:
39: }`)).Error()
require.ErrorContains(t, err, string(diag.ResourcePermissionDenied))
}
func TestTryExtendTerraformPermissionError3(t *testing.T) {
ctx := context.Background()
b := mockBundle([]resources.Permission{
{Level: "CAN_MANAGE", UserName: "alice@databricks.com"},
})
err := permissions.TryExtendTerraformPermissionError(ctx, b, errors.New(`Error: terraform apply: exit status 1
Error: cannot read permissions: 1706906c-c0a2-4c25-9f57-3a7aa3cb8b90 does not have Owner permissions on Job with ID: ElasticJobId(28263044278868). Please contact the owner or an administrator for access.
with databricks_pipeline.my_project_pipeline,
on bundle.tf.json line 39, in resource.databricks_pipeline.my_project_pipeline:
39: }`)).Error()
require.ErrorContains(t, err, string(diag.ResourcePermissionDenied))
}
func TestTryExtendTerraformPermissionErrorNotOwner(t *testing.T) {
ctx := context.Background()
b := mockBundle([]resources.Permission{
{Level: "CAN_MANAGE", UserName: "alice@databricks.com"},
})
b.Config.RunAs = &jobs.JobRunAs{
UserName: "testuser@databricks.com",
}
err := permissions.TryExtendTerraformPermissionError(ctx, b, errors.New(`Error: terraform apply: exit status 1
Error: cannot read pipeline: User xyz does not have View permissions on pipeline 4521dbb6-42aa-418c-b94d-b5f4859a3454.
with databricks_pipeline.my_project_pipeline,
on bundle.tf.json line 39, in resource.databricks_pipeline.my_project_pipeline:
39: }`)).Error()
require.ErrorContains(t, err, string(diag.ResourcePermissionDenied))
}