From e851507d130296d40ae0d1fb557332135ddeb7a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=20Houl=C3=A9?= Date: Thu, 7 Apr 2022 17:19:16 +0200 Subject: [PATCH] fix(errors): Mention correct db in postgres DatabaseDoesNotExist closes https://github.com/prisma/prisma/issues/11673 --- libs/user-facing-errors/src/quaint.rs | 4 ++-- .../tests/migrations/db_execute.rs | 21 +++++++++++++++++++ 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/libs/user-facing-errors/src/quaint.rs b/libs/user-facing-errors/src/quaint.rs index 52683a7d0452..29d9186203aa 100644 --- a/libs/user-facing-errors/src/quaint.rs +++ b/libs/user-facing-errors/src/quaint.rs @@ -48,9 +48,9 @@ pub fn render_quaint_error(kind: &ErrorKind, connection_info: &ConnectionInfo) - })) } - (ErrorKind::DatabaseDoesNotExist { .. }, ConnectionInfo::Postgres(url)) => { + (ErrorKind::DatabaseDoesNotExist { db_name }, ConnectionInfo::Postgres(url)) => { Some(KnownError::new(common::DatabaseDoesNotExist::Postgres { - database_name: url.dbname().to_owned(), + database_name: db_name.to_string(), database_schema_name: url.schema().to_owned(), database_host: url.host().to_owned(), database_port: url.port(), diff --git a/migration-engine/migration-engine-tests/tests/migrations/db_execute.rs b/migration-engine/migration-engine-tests/tests/migrations/db_execute.rs index d452df85bf5b..bdce475bf0fa 100644 --- a/migration-engine/migration-engine-tests/tests/migrations/db_execute.rs +++ b/migration-engine/migration-engine-tests/tests/migrations/db_execute.rs @@ -126,6 +126,27 @@ fn db_execute_error_path(api: TestApi) { assert!(result.is_err()); } +#[test_connector(tags(Postgres))] +fn db_execute_drop_database_that_doesnt_exist_error(api: TestApi) { + let script = r#" + DROP DATABASE "thisisadatabaseweassumedoesntexist"; + "#; + + let generic_api = migration_core::migration_api(None, None).unwrap(); + let result = tok(generic_api.db_execute(DbExecuteParams { + datasource_type: DbExecuteDatasourceType::Url(UrlContainer { + url: api.connection_string().to_owned(), + }), + script: script.to_owned(), + })); + + let error = result.unwrap_err().to_string(); + let expectation = expect![[r#" + Database `thisisadatabaseweassumedoesntexist.prisma-tests` does not exist on the database server at `localhost:5433`. + "#]]; + expectation.assert_eq(&error); +} + #[test] fn sqlite_db_execute_with_schema_datasource_resolves_relative_paths_correctly() { let tmpdir = tempfile::tempdir().unwrap();