diff --git a/NEXT_CHANGELOG.md b/NEXT_CHANGELOG.md index bdf1483d09..b682604da9 100644 --- a/NEXT_CHANGELOG.md +++ b/NEXT_CHANGELOG.md @@ -7,6 +7,7 @@ - Add `bundle.engine` config setting to select the deployment engine (`terraform` or `direct`). The `DATABRICKS_BUNDLE_ENGINE` environment variable takes precedence over this setting. When the configured engine doesn't match existing deployment state, a warning is issued and the existing engine is used ([#4749](https://github.com/databricks/cli/pull/4749)). ### CLI +* Add `--force-refresh` flag to `databricks auth token` to force a token refresh even when the cached token is still valid ([#4767](https://github.com/databricks/cli/pull/4767)). ### Bundles * engine/direct: Fix permanent drift on experiment name field ([#4627](https://github.com/databricks/cli/pull/4627)) diff --git a/acceptance/cmd/auth/token/force-refresh-invalid-refresh-token/out.test.toml b/acceptance/cmd/auth/token/force-refresh-invalid-refresh-token/out.test.toml new file mode 100644 index 0000000000..d560f1de04 --- /dev/null +++ b/acceptance/cmd/auth/token/force-refresh-invalid-refresh-token/out.test.toml @@ -0,0 +1,5 @@ +Local = true +Cloud = false + +[EnvMatrix] + DATABRICKS_BUNDLE_ENGINE = ["terraform", "direct"] diff --git a/acceptance/cmd/auth/token/force-refresh-invalid-refresh-token/output.txt b/acceptance/cmd/auth/token/force-refresh-invalid-refresh-token/output.txt new file mode 100644 index 0000000000..f1a1b8cadb --- /dev/null +++ b/acceptance/cmd/auth/token/force-refresh-invalid-refresh-token/output.txt @@ -0,0 +1,4 @@ +Error: A new access token could not be retrieved because the refresh token is invalid. To reauthenticate, run the following command: + $ databricks auth login --profile test-profile + +Exit code: 1 diff --git a/acceptance/cmd/auth/token/force-refresh-invalid-refresh-token/script b/acceptance/cmd/auth/token/force-refresh-invalid-refresh-token/script new file mode 100644 index 0000000000..b5f5c297bc --- /dev/null +++ b/acceptance/cmd/auth/token/force-refresh-invalid-refresh-token/script @@ -0,0 +1,4 @@ +setup_test_profile +setup_test_token_cache + +errcode $CLI auth token --profile test-profile --force-refresh diff --git a/acceptance/cmd/auth/token/force-refresh-invalid-refresh-token/test.toml b/acceptance/cmd/auth/token/force-refresh-invalid-refresh-token/test.toml new file mode 100644 index 0000000000..f93632544f --- /dev/null +++ b/acceptance/cmd/auth/token/force-refresh-invalid-refresh-token/test.toml @@ -0,0 +1,8 @@ +Ignore = [ + "home" +] + +[[Server]] +Pattern = "POST /oidc/v1/token" +Response.StatusCode = 401 +Response.Body = '{"error": "invalid_request", "error_description": "Refresh token is invalid"}' diff --git a/acceptance/cmd/auth/token/force-refresh-no-cache/out.test.toml b/acceptance/cmd/auth/token/force-refresh-no-cache/out.test.toml new file mode 100644 index 0000000000..d560f1de04 --- /dev/null +++ b/acceptance/cmd/auth/token/force-refresh-no-cache/out.test.toml @@ -0,0 +1,5 @@ +Local = true +Cloud = false + +[EnvMatrix] + DATABRICKS_BUNDLE_ENGINE = ["terraform", "direct"] diff --git a/acceptance/cmd/auth/token/force-refresh-no-cache/output.txt b/acceptance/cmd/auth/token/force-refresh-no-cache/output.txt new file mode 100644 index 0000000000..a5fb246734 --- /dev/null +++ b/acceptance/cmd/auth/token/force-refresh-no-cache/output.txt @@ -0,0 +1,3 @@ +Error: cache: databricks OAuth is not configured for this host. Try logging in again with `databricks auth login --profile test-profile` before retrying. If this fails, please report this issue to the Databricks CLI maintainers at https://github.com/databricks/cli/issues/new + +Exit code: 1 diff --git a/acceptance/cmd/auth/token/force-refresh-no-cache/script b/acceptance/cmd/auth/token/force-refresh-no-cache/script new file mode 100644 index 0000000000..e561647987 --- /dev/null +++ b/acceptance/cmd/auth/token/force-refresh-no-cache/script @@ -0,0 +1,3 @@ +setup_test_profile + +errcode $CLI auth token --profile test-profile --force-refresh diff --git a/acceptance/cmd/auth/token/force-refresh-success/out.test.toml b/acceptance/cmd/auth/token/force-refresh-success/out.test.toml new file mode 100644 index 0000000000..d560f1de04 --- /dev/null +++ b/acceptance/cmd/auth/token/force-refresh-success/out.test.toml @@ -0,0 +1,5 @@ +Local = true +Cloud = false + +[EnvMatrix] + DATABRICKS_BUNDLE_ENGINE = ["terraform", "direct"] diff --git a/acceptance/cmd/auth/token/force-refresh-success/output.txt b/acceptance/cmd/auth/token/force-refresh-success/output.txt new file mode 100644 index 0000000000..0b965964ac --- /dev/null +++ b/acceptance/cmd/auth/token/force-refresh-success/output.txt @@ -0,0 +1,3 @@ + +>>> [CLI] auth token --profile test-profile --force-refresh +"oauth-token" diff --git a/acceptance/cmd/auth/token/force-refresh-success/script b/acceptance/cmd/auth/token/force-refresh-success/script new file mode 100644 index 0000000000..e3e1167dd0 --- /dev/null +++ b/acceptance/cmd/auth/token/force-refresh-success/script @@ -0,0 +1,4 @@ +setup_test_profile +setup_test_token_cache + +trace $CLI auth token --profile test-profile --force-refresh | jq .access_token diff --git a/acceptance/cmd/auth/token/script.prepare b/acceptance/cmd/auth/token/script.prepare new file mode 100644 index 0000000000..afdf008034 --- /dev/null +++ b/acceptance/cmd/auth/token/script.prepare @@ -0,0 +1,31 @@ +setup_test_profile() { + export DATABRICKS_HOST_ORIG="$DATABRICKS_HOST" + + sethome "./home" + unset DATABRICKS_HOST + unset DATABRICKS_TOKEN + unset DATABRICKS_CONFIG_PROFILE + + cat > "./home/.databrickscfg" < "./home/.databricks/token-cache.json" <