Skip to content

Commit

Permalink
Fix pattern for host names.
Browse files Browse the repository at this point in the history
  • Loading branch information
markstory committed Aug 11, 2017
1 parent edcb3dc commit fa8c5d8
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 2 deletions.
4 changes: 2 additions & 2 deletions src/Core/StaticConfigTrait.php
Expand Up @@ -250,11 +250,11 @@ public static function parseDsn($dsn)
}

$pattern = '/^(?P<scheme>[\w\\\\]+):\/\/((?P<user>.*?)(:(?P<password>.*?))?@)?' .
'((?P<host>[.\w\\\\]+)(:(?P<port>\d+))?)?' .
'((?P<host>[.\w-\\\\]+)(:(?P<port>\d+))?)?' .
'(?P<path>\/[^?]*)?(\?(?P<query>.*))?$/';
preg_match($pattern, $dsn, $parsed);

if (empty($parsed)) {
if (!$parsed) {
throw new InvalidArgumentException("The DSN string '{$dsn}' could not be parsed.");
}
foreach ($parsed as $k => $v) {
Expand Down
11 changes: 11 additions & 0 deletions tests/TestCase/Datasource/ConnectionManagerTest.php
Expand Up @@ -281,6 +281,17 @@ public function dsnProvider()
'scheme' => 'mysql',
]
],
'subdomain host' => [
'mysql://my.host-name.com:3306/database',
[
'className' => 'Cake\Database\Connection',
'driver' => 'Cake\Database\Driver\Mysql',
'host' => 'my.host-name.com',
'database' => 'database',
'port' => 3306,
'scheme' => 'mysql',
]
],
'user & pass' => [
'mysql://root:secret@localhost:3306/database?log=1',
[
Expand Down

0 comments on commit fa8c5d8

Please sign in to comment.