From 296ae964a940d06e933ba62af73c10ba53a29595 Mon Sep 17 00:00:00 2001 From: Shreyas Goenka Date: Tue, 27 Oct 2026 09:34:58 +0000 Subject: [PATCH 1/2] Fix Postgres bad role reference acceptance fixture --- .../live_errors/bad_role_ref/databricks.yml.tmpl | 2 +- .../live_errors/bad_role_ref/output.txt | 4 ++-- .../live_errors/bad_role_ref/script | 2 +- .../live_errors/bad_role_ref/test.toml | 11 ++--------- 4 files changed, 6 insertions(+), 13 deletions(-) diff --git a/acceptance/bundle/resources/postgres_databases/live_errors/bad_role_ref/databricks.yml.tmpl b/acceptance/bundle/resources/postgres_databases/live_errors/bad_role_ref/databricks.yml.tmpl index 2f096ac7d02..e1e33bdb951 100644 --- a/acceptance/bundle/resources/postgres_databases/live_errors/bad_role_ref/databricks.yml.tmpl +++ b/acceptance/bundle/resources/postgres_databases/live_errors/bad_role_ref/databricks.yml.tmpl @@ -24,5 +24,5 @@ resources: database_id: my-database postgres_database: app_db # The referenced role is never declared anywhere; the live API - # rejects database creation with "role not found". + # rejects database creation because the role does not exist. role: ${resources.postgres_branches.main.id}/roles/does-not-exist diff --git a/acceptance/bundle/resources/postgres_databases/live_errors/bad_role_ref/output.txt b/acceptance/bundle/resources/postgres_databases/live_errors/bad_role_ref/output.txt index 207518f3b3f..fa379a6411a 100644 --- a/acceptance/bundle/resources/postgres_databases/live_errors/bad_role_ref/output.txt +++ b/acceptance/bundle/resources/postgres_databases/live_errors/bad_role_ref/output.txt @@ -1,12 +1,12 @@ Uploading bundle files to /Workspace/Users/[USERNAME]/.bundle/bad-role-ref-[UNIQUE_NAME]/default/files... Created postgres_branches.main Created postgres_projects.my_project -Error: cannot create resources.postgres_databases.my_database: role not found; role_id:"does-not-exist" [TraceId: [TRACE_ID]] (404 NOT_FOUND) +Error: cannot create resources.postgres_databases.my_database: Role with name 'projects/test-pg-proj-[UNIQUE_NAME]/branches/main/roles/does-not-exist' not found (404 NOT_FOUND) Endpoint: POST [DATABRICKS_URL]/api/2.0/postgres/projects/test-pg-proj-[UNIQUE_NAME]/branches/main/databases?database_id=my-database HTTP Status: 404 Not Found API error_code: NOT_FOUND -API message: role not found; role_id:"does-not-exist" [TraceId: [TRACE_ID]] +API message: Role with name 'projects/test-pg-proj-[UNIQUE_NAME]/branches/main/roles/does-not-exist' not found Files: 0 uploaded, 0 deleted diff --git a/acceptance/bundle/resources/postgres_databases/live_errors/bad_role_ref/script b/acceptance/bundle/resources/postgres_databases/live_errors/bad_role_ref/script index 0d040869c10..093069c82ab 100644 --- a/acceptance/bundle/resources/postgres_databases/live_errors/bad_role_ref/script +++ b/acceptance/bundle/resources/postgres_databases/live_errors/bad_role_ref/script @@ -5,4 +5,4 @@ cleanup() { } trap cleanup EXIT -musterr $CLI bundle deploy 2>&1 | contains.py "role not found" +musterr $CLI bundle deploy 2>&1 | contains.py "Role with name 'projects/" "/branches/main/roles/does-not-exist' not found" diff --git a/acceptance/bundle/resources/postgres_databases/live_errors/bad_role_ref/test.toml b/acceptance/bundle/resources/postgres_databases/live_errors/bad_role_ref/test.toml index 4658193db32..83ad45947ce 100644 --- a/acceptance/bundle/resources/postgres_databases/live_errors/bad_role_ref/test.toml +++ b/acceptance/bundle/resources/postgres_databases/live_errors/bad_role_ref/test.toml @@ -1,14 +1,7 @@ # Stub the database create endpoint to reject the unknown role reference, -# matching the live API behavior observed on aws-prod-ucws 2026-05-19: -# 404 Not Found: role not found; role_id:"" [TraceId: ] +# matching the live API error with the fully-qualified role resource name. # The default testserver does not validate that the referenced role exists. [[Server]] Pattern = "POST /api/2.0/postgres/projects/{project_id}/branches/{branch_id}/databases" Response.StatusCode = 404 -Response.Body = '''{"error_code": "NOT_FOUND", "message": "role not found; role_id:\"does-not-exist\" [TraceId: [TRACE_ID]]"}''' - -[[Repls]] -# Cloud responses include a "[TraceId: ]" suffix on this error; normalize. -Old = '\[TraceId: [a-f0-9]+\]' -New = '[TraceId: [TRACE_ID]]' -Order = 5 +Response.Body = '''{"error_code": "NOT_FOUND", "message": "Role with name 'projects/test-pg-proj-[UNIQUE_NAME]/branches/main/roles/does-not-exist' not found"}''' From 11b19790c225f76f4ac81c61bfad0dffac2dbfb5 Mon Sep 17 00:00:00 2001 From: Shreyas Goenka Date: Tue, 27 Oct 2026 10:11:54 +0000 Subject: [PATCH 2/2] Assert Postgres error status and code instead of backend wording --- .../live_errors/bad_role_ref/output.txt | 4 ++-- .../postgres_databases/live_errors/bad_role_ref/script | 2 +- .../live_errors/bad_role_ref/test.toml | 9 +++++++++ 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/acceptance/bundle/resources/postgres_databases/live_errors/bad_role_ref/output.txt b/acceptance/bundle/resources/postgres_databases/live_errors/bad_role_ref/output.txt index fa379a6411a..dc91895fe19 100644 --- a/acceptance/bundle/resources/postgres_databases/live_errors/bad_role_ref/output.txt +++ b/acceptance/bundle/resources/postgres_databases/live_errors/bad_role_ref/output.txt @@ -1,12 +1,12 @@ Uploading bundle files to /Workspace/Users/[USERNAME]/.bundle/bad-role-ref-[UNIQUE_NAME]/default/files... Created postgres_branches.main Created postgres_projects.my_project -Error: cannot create resources.postgres_databases.my_database: Role with name 'projects/test-pg-proj-[UNIQUE_NAME]/branches/main/roles/does-not-exist' not found (404 NOT_FOUND) +Error: cannot create resources.postgres_databases.my_database: [API_MESSAGE] (404 NOT_FOUND) Endpoint: POST [DATABRICKS_URL]/api/2.0/postgres/projects/test-pg-proj-[UNIQUE_NAME]/branches/main/databases?database_id=my-database HTTP Status: 404 Not Found API error_code: NOT_FOUND -API message: Role with name 'projects/test-pg-proj-[UNIQUE_NAME]/branches/main/roles/does-not-exist' not found +API message: [API_MESSAGE] Files: 0 uploaded, 0 deleted diff --git a/acceptance/bundle/resources/postgres_databases/live_errors/bad_role_ref/script b/acceptance/bundle/resources/postgres_databases/live_errors/bad_role_ref/script index 093069c82ab..b360022624c 100644 --- a/acceptance/bundle/resources/postgres_databases/live_errors/bad_role_ref/script +++ b/acceptance/bundle/resources/postgres_databases/live_errors/bad_role_ref/script @@ -5,4 +5,4 @@ cleanup() { } trap cleanup EXIT -musterr $CLI bundle deploy 2>&1 | contains.py "Role with name 'projects/" "/branches/main/roles/does-not-exist' not found" +musterr $CLI bundle deploy 2>&1 | contains.py "cannot create resources.postgres_databases.my_database:" "HTTP Status: 404 Not Found" "API error_code: NOT_FOUND" diff --git a/acceptance/bundle/resources/postgres_databases/live_errors/bad_role_ref/test.toml b/acceptance/bundle/resources/postgres_databases/live_errors/bad_role_ref/test.toml index 83ad45947ce..d8557ef8e16 100644 --- a/acceptance/bundle/resources/postgres_databases/live_errors/bad_role_ref/test.toml +++ b/acceptance/bundle/resources/postgres_databases/live_errors/bad_role_ref/test.toml @@ -5,3 +5,12 @@ Pattern = "POST /api/2.0/postgres/projects/{project_id}/branches/{branch_id}/databases" Response.StatusCode = 404 Response.Body = '''{"error_code": "NOT_FOUND", "message": "Role with name 'projects/test-pg-proj-[UNIQUE_NAME]/branches/main/roles/does-not-exist' not found"}''' + +# Backend error wording is not part of the CLI contract. +[[Repls]] +Old = '(?m)^(Error: cannot create resources\.postgres_databases\.my_database: )[^\r\n]*( \(404 NOT_FOUND\))$' +New = '${1}[API_MESSAGE]${2}' + +[[Repls]] +Old = '(?m)^API message: [^\r\n]*$' +New = 'API message: [API_MESSAGE]'