From 79b1c56a664dec0d9264739ee21cb5b411d53799 Mon Sep 17 00:00:00 2001 From: fergusean Date: Tue, 13 May 2025 16:00:43 -0400 Subject: [PATCH 1/2] non-greedy regex for database name extraction --- src/Connection.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Connection.php b/src/Connection.php index 29b72ae44..3fa99e94b 100644 --- a/src/Connection.php +++ b/src/Connection.php @@ -214,7 +214,7 @@ protected function withFreshQueryLog($callback) protected function getDefaultDatabaseName(string $dsn, array $config): string { if (empty($config['database'])) { - if (! preg_match('/^mongodb(?:[+]srv)?:\\/\\/.+\\/([^?&]+)/s', $dsn, $matches)) { + if (! preg_match('/^mongodb(?:[+]srv)?:\\/\\/.+?\\/([^?&]+)/s', $dsn, $matches)) { throw new InvalidArgumentException('Database is not properly configured.'); } From bf093515871fd9ded52767b53a2eac47540a7bb4 Mon Sep 17 00:00:00 2001 From: fergusean Date: Wed, 14 May 2025 23:38:46 -0400 Subject: [PATCH 2/2] add test --- tests/ConnectionTest.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tests/ConnectionTest.php b/tests/ConnectionTest.php index 1f970d819..de77da7f7 100644 --- a/tests/ConnectionTest.php +++ b/tests/ConnectionTest.php @@ -190,6 +190,12 @@ public static function dataConnectionConfig(): Generator 'expectedDatabaseName' => 'tests', 'config' => ['dsn' => 'mongodb://some-host:12345/tests'], ]; + + yield 'Database is extracted from DSN with CA path in options' => [ + 'expectedUri' => 'mongodb://some-host:12345/tests?tls=true&tlsCAFile=/path/to/ca.pem&retryWrites=false', + 'expectedDatabaseName' => 'tests', + 'config' => ['dsn' => 'mongodb://some-host:12345/tests?tls=true&tlsCAFile=/path/to/ca.pem&retryWrites=false'], + ]; } #[DataProvider('dataConnectionConfig')]