diff --git a/src/Symfony/Component/Cache/Adapter/AbstractAdapter.php b/src/Symfony/Component/Cache/Adapter/AbstractAdapter.php index 3d01409227fa7..df900555bb515 100644 --- a/src/Symfony/Component/Cache/Adapter/AbstractAdapter.php +++ b/src/Symfony/Component/Cache/Adapter/AbstractAdapter.php @@ -140,7 +140,7 @@ public static function createConnection(string $dsn, array $options = []) return CouchbaseCollectionAdapter::createConnection($dsn, $options); } - throw new InvalidArgumentException(sprintf('Unsupported DSN: "%s".', $dsn)); + throw new InvalidArgumentException('Unsupported DSN: it does not start with "redis[s]:", "memcached:" nor "couchbase:".'); } /** diff --git a/src/Symfony/Component/Cache/Adapter/CouchbaseBucketAdapter.php b/src/Symfony/Component/Cache/Adapter/CouchbaseBucketAdapter.php index 36d5249b4addc..fa5f85ad24558 100644 --- a/src/Symfony/Component/Cache/Adapter/CouchbaseBucketAdapter.php +++ b/src/Symfony/Component/Cache/Adapter/CouchbaseBucketAdapter.php @@ -83,7 +83,7 @@ public static function createConnection($servers, array $options = []): \Couchba foreach ($servers as $dsn) { if (0 !== strpos($dsn, 'couchbase:')) { - throw new InvalidArgumentException(sprintf('Invalid Couchbase DSN: "%s" does not start with "couchbase:".', $dsn)); + throw new InvalidArgumentException('Invalid Couchbase DSN: it does not start with "couchbase:".'); } preg_match($dsnPattern, $dsn, $matches); diff --git a/src/Symfony/Component/Cache/Adapter/CouchbaseCollectionAdapter.php b/src/Symfony/Component/Cache/Adapter/CouchbaseCollectionAdapter.php index 79f648531c230..1c4f9180b0ac6 100644 --- a/src/Symfony/Component/Cache/Adapter/CouchbaseCollectionAdapter.php +++ b/src/Symfony/Component/Cache/Adapter/CouchbaseCollectionAdapter.php @@ -79,7 +79,7 @@ public static function createConnection($dsn, array $options = []) foreach ($dsn as $server) { if (0 !== strpos($server, 'couchbase:')) { - throw new InvalidArgumentException(sprintf('Invalid Couchbase DSN: "%s" does not start with "couchbase:".', $server)); + throw new InvalidArgumentException('Invalid Couchbase DSN: it does not start with "couchbase:".'); } preg_match($dsnPattern, $server, $matches); diff --git a/src/Symfony/Component/Cache/Adapter/DoctrineDbalAdapter.php b/src/Symfony/Component/Cache/Adapter/DoctrineDbalAdapter.php index 2650869e3f8cc..eacf8eb9bcc88 100644 --- a/src/Symfony/Component/Cache/Adapter/DoctrineDbalAdapter.php +++ b/src/Symfony/Component/Cache/Adapter/DoctrineDbalAdapter.php @@ -70,7 +70,7 @@ public function __construct($connOrDsn, string $namespace = '', int $defaultLife $this->conn = $connOrDsn; } elseif (\is_string($connOrDsn)) { if (!class_exists(DriverManager::class)) { - throw new InvalidArgumentException(sprintf('Failed to parse the DSN "%s". Try running "composer require doctrine/dbal".', $connOrDsn)); + throw new InvalidArgumentException('Failed to parse DSN. Try running "composer require doctrine/dbal".'); } if (class_exists(DsnParser::class)) { $params = (new DsnParser([ diff --git a/src/Symfony/Component/Cache/Adapter/MemcachedAdapter.php b/src/Symfony/Component/Cache/Adapter/MemcachedAdapter.php index 5eb36b80c78fc..2f953aa79b62e 100644 --- a/src/Symfony/Component/Cache/Adapter/MemcachedAdapter.php +++ b/src/Symfony/Component/Cache/Adapter/MemcachedAdapter.php @@ -109,7 +109,7 @@ public static function createConnection($servers, array $options = []) continue; } if (!str_starts_with($dsn, 'memcached:')) { - throw new InvalidArgumentException(sprintf('Invalid Memcached DSN: "%s" does not start with "memcached:".', $dsn)); + throw new InvalidArgumentException('Invalid Memcached DSN: it does not start with "memcached:".'); } $params = preg_replace_callback('#^memcached:(//)?(?:([^@]*+)@)?#', function ($m) use (&$username, &$password) { if (!empty($m[2])) { @@ -119,7 +119,7 @@ public static function createConnection($servers, array $options = []) return 'file:'.($m[1] ?? ''); }, $dsn); if (false === $params = parse_url($params)) { - throw new InvalidArgumentException(sprintf('Invalid Memcached DSN: "%s".', $dsn)); + throw new InvalidArgumentException('Invalid Memcached DSN.'); } $query = $hosts = []; if (isset($params['query'])) { @@ -127,7 +127,7 @@ public static function createConnection($servers, array $options = []) if (isset($query['host'])) { if (!\is_array($hosts = $query['host'])) { - throw new InvalidArgumentException(sprintf('Invalid Memcached DSN: "%s".', $dsn)); + throw new InvalidArgumentException('Invalid Memcached DSN: query parameter "host" must be an array.'); } foreach ($hosts as $host => $weight) { if (false === $port = strrpos($host, ':')) { @@ -146,7 +146,7 @@ public static function createConnection($servers, array $options = []) } } if (!isset($params['host']) && !isset($params['path'])) { - throw new InvalidArgumentException(sprintf('Invalid Memcached DSN: "%s".', $dsn)); + throw new InvalidArgumentException('Invalid Memcached DSN: missing host or path.'); } if (isset($params['path']) && preg_match('#/(\d+)$#', $params['path'], $m)) { $params['weight'] = $m[1]; diff --git a/src/Symfony/Component/Cache/Traits/RedisTrait.php b/src/Symfony/Component/Cache/Traits/RedisTrait.php index 287c0ea962121..eb97957320f65 100644 --- a/src/Symfony/Component/Cache/Traits/RedisTrait.php +++ b/src/Symfony/Component/Cache/Traits/RedisTrait.php @@ -96,11 +96,11 @@ public static function createConnection(string $dsn, array $options = []) } elseif (str_starts_with($dsn, 'rediss:')) { $scheme = 'rediss'; } else { - throw new InvalidArgumentException(sprintf('Invalid Redis DSN: "%s" does not start with "redis:" or "rediss".', $dsn)); + throw new InvalidArgumentException('Invalid Redis DSN: it does not start with "redis[s]:".'); } if (!\extension_loaded('redis') && !class_exists(\Predis\Client::class)) { - throw new CacheException(sprintf('Cannot find the "redis" extension nor the "predis/predis" package: "%s".', $dsn)); + throw new CacheException('Cannot find the "redis" extension nor the "predis/predis" package.'); } $params = preg_replace_callback('#^'.$scheme.':(//)?(?:(?:[^:@]*+:)?([^@]*+)@)?#', function ($m) use (&$auth) { @@ -116,7 +116,7 @@ public static function createConnection(string $dsn, array $options = []) }, $dsn); if (false === $params = parse_url($params)) { - throw new InvalidArgumentException(sprintf('Invalid Redis DSN: "%s".', $dsn)); + throw new InvalidArgumentException('Invalid Redis DSN.'); } $query = $hosts = []; @@ -129,7 +129,7 @@ public static function createConnection(string $dsn, array $options = []) if (isset($query['host'])) { if (!\is_array($hosts = $query['host'])) { - throw new InvalidArgumentException(sprintf('Invalid Redis DSN: "%s".', $dsn)); + throw new InvalidArgumentException('Invalid Redis DSN: query parameter "host" must be an array.'); } foreach ($hosts as $host => $parameters) { if (\is_string($parameters)) { @@ -153,7 +153,7 @@ public static function createConnection(string $dsn, array $options = []) $params['dbindex'] = $m[1] ?? '0'; $params['path'] = substr($params['path'], 0, -\strlen($m[0])); } elseif (isset($params['host'])) { - throw new InvalidArgumentException(sprintf('Invalid Redis DSN: "%s", the "dbindex" parameter must be a number.', $dsn)); + throw new InvalidArgumentException('Invalid Redis DSN: query parameter "dbindex" must be a number.'); } } @@ -165,13 +165,13 @@ public static function createConnection(string $dsn, array $options = []) } if (!$hosts) { - throw new InvalidArgumentException(sprintf('Invalid Redis DSN: "%s".', $dsn)); + throw new InvalidArgumentException('Invalid Redis DSN: missing host.'); } $params += $query + $options + self::$defaultConnectionOptions; if (isset($params['redis_sentinel']) && !class_exists(\Predis\Client::class) && !class_exists(\RedisSentinel::class)) { - throw new CacheException(sprintf('Redis Sentinel support requires the "predis/predis" package or the "redis" extension v5.2 or higher: "%s".', $dsn)); + throw new CacheException('Redis Sentinel support requires the "predis/predis" package or the "redis" extension v5.2 or higher.'); } if (isset($params['lazy'])) { @@ -180,7 +180,7 @@ public static function createConnection(string $dsn, array $options = []) $params['redis_cluster'] = filter_var($params['redis_cluster'], \FILTER_VALIDATE_BOOLEAN); if ($params['redis_cluster'] && isset($params['redis_sentinel'])) { - throw new InvalidArgumentException(sprintf('Cannot use both "redis_cluster" and "redis_sentinel" at the same time: "%s".', $dsn)); + throw new InvalidArgumentException('Cannot use both "redis_cluster" and "redis_sentinel" at the same time.'); } if (null === $params['class'] && \extension_loaded('redis')) { @@ -189,7 +189,7 @@ public static function createConnection(string $dsn, array $options = []) $class = $params['class'] ?? \Predis\Client::class; if (isset($params['redis_sentinel']) && !is_a($class, \Predis\Client::class, true) && !class_exists(\RedisSentinel::class)) { - throw new CacheException(sprintf('Cannot use Redis Sentinel: class "%s" does not extend "Predis\Client" and ext-redis >= 5.2 not found: "%s".', $class, $dsn)); + throw new CacheException(sprintf('Cannot use Redis Sentinel: class "%s" does not extend "Predis\Client" and ext-redis >= 5.2 not found.', $class)); } } @@ -197,7 +197,7 @@ public static function createConnection(string $dsn, array $options = []) $connect = $params['persistent'] || $params['persistent_id'] ? 'pconnect' : 'connect'; $redis = new $class(); - $initializer = static function ($redis) use ($connect, $params, $dsn, $auth, $hosts, $tls) { + $initializer = static function ($redis) use ($connect, $params, $auth, $hosts, $tls) { $hostIndex = 0; do { $host = $hosts[$hostIndex]['host'] ?? $hosts[$hostIndex]['path']; @@ -243,7 +243,7 @@ public static function createConnection(string $dsn, array $options = []) } while (++$hostIndex < \count($hosts) && !$address); if (isset($params['redis_sentinel']) && !$address) { - throw new InvalidArgumentException(sprintf('Failed to retrieve master information from sentinel "%s" and dsn "%s".', $params['redis_sentinel'], $dsn)); + throw new InvalidArgumentException(sprintf('Failed to retrieve master information from sentinel "%s".', $params['redis_sentinel'])); } try { @@ -262,22 +262,22 @@ public static function createConnection(string $dsn, array $options = []) restore_error_handler(); } if (!$isConnected) { - $error = preg_match('/^Redis::p?connect\(\): (.*)/', $error ?? '', $error) ? sprintf(' (%s)', $error[1]) : ''; - throw new InvalidArgumentException(sprintf('Redis connection "%s" failed: ', $dsn).$error.'.'); + $error = preg_match('/^Redis::p?connect\(\): (.*)/', $error ?? $redis->getLastError() ?? '', $error) ? sprintf(' (%s)', $error[1]) : ''; + throw new InvalidArgumentException('Redis connection failed: '.$error.'.'); } if ((null !== $auth && !$redis->auth($auth)) || ($params['dbindex'] && !$redis->select($params['dbindex'])) ) { $e = preg_replace('/^ERR /', '', $redis->getLastError()); - throw new InvalidArgumentException(sprintf('Redis connection "%s" failed: ', $dsn).$e.'.'); + throw new InvalidArgumentException('Redis connection failed: '.$e.'.'); } if (0 < $params['tcp_keepalive'] && \defined('Redis::OPT_TCP_KEEPALIVE')) { $redis->setOption(\Redis::OPT_TCP_KEEPALIVE, $params['tcp_keepalive']); } } catch (\RedisException $e) { - throw new InvalidArgumentException(sprintf('Redis connection "%s" failed: ', $dsn).$e->getMessage()); + throw new InvalidArgumentException('Redis connection failed: '.$e->getMessage()); } return true; @@ -302,14 +302,14 @@ public static function createConnection(string $dsn, array $options = []) try { $redis = new $class($hosts, $params); } catch (\RedisClusterException $e) { - throw new InvalidArgumentException(sprintf('Redis connection "%s" failed: ', $dsn).$e->getMessage()); + throw new InvalidArgumentException('Redis connection failed: '.$e->getMessage()); } if (0 < $params['tcp_keepalive'] && \defined('Redis::OPT_TCP_KEEPALIVE')) { $redis->setOption(\Redis::OPT_TCP_KEEPALIVE, $params['tcp_keepalive']); } } elseif (is_a($class, \RedisCluster::class, true)) { - $initializer = static function () use ($class, $params, $dsn, $hosts) { + $initializer = static function () use ($class, $params, $hosts) { foreach ($hosts as $i => $host) { switch ($host['scheme']) { case 'tcp': $hosts[$i] = $host['host'].':'.$host['port']; break; @@ -321,7 +321,7 @@ public static function createConnection(string $dsn, array $options = []) try { $redis = new $class(null, $hosts, $params['timeout'], $params['read_timeout'], (bool) $params['persistent'], $params['auth'] ?? '', ...\defined('Redis::SCAN_PREFIX') ? [$params['ssl'] ?? null] : []); } catch (\RedisClusterException $e) { - throw new InvalidArgumentException(sprintf('Redis connection "%s" failed: ', $dsn).$e->getMessage()); + throw new InvalidArgumentException('Redis connection failed: '.$e->getMessage()); } if (0 < $params['tcp_keepalive'] && \defined('Redis::OPT_TCP_KEEPALIVE')) { diff --git a/src/Symfony/Component/HttpFoundation/Session/Storage/Handler/SessionHandlerFactory.php b/src/Symfony/Component/HttpFoundation/Session/Storage/Handler/SessionHandlerFactory.php index 39dc30c6f6c50..14454d0b80b47 100644 --- a/src/Symfony/Component/HttpFoundation/Session/Storage/Handler/SessionHandlerFactory.php +++ b/src/Symfony/Component/HttpFoundation/Session/Storage/Handler/SessionHandlerFactory.php @@ -63,7 +63,7 @@ public static function createHandler($connection): AbstractSessionHandler case str_starts_with($connection, 'rediss:'): case str_starts_with($connection, 'memcached:'): if (!class_exists(AbstractAdapter::class)) { - throw new \InvalidArgumentException(sprintf('Unsupported DSN "%s". Try running "composer require symfony/cache".', $connection)); + throw new \InvalidArgumentException('Unsupported Redis or Memcached DSN. Try running "composer require symfony/cache".'); } $handlerClass = str_starts_with($connection, 'memcached:') ? MemcachedSessionHandler::class : RedisSessionHandler::class; $connection = AbstractAdapter::createConnection($connection, ['lazy' => true]); @@ -72,7 +72,7 @@ public static function createHandler($connection): AbstractSessionHandler case str_starts_with($connection, 'pdo_oci://'): if (!class_exists(DriverManager::class)) { - throw new \InvalidArgumentException(sprintf('Unsupported DSN "%s". Try running "composer require doctrine/dbal".', $connection)); + throw new \InvalidArgumentException('Unsupported PDO OCI DSN. Try running "composer require doctrine/dbal".'); } $connection[3] = '-'; $params = class_exists(DsnParser::class) ? (new DsnParser())->parse($connection) : ['url' => $connection]; diff --git a/src/Symfony/Component/Lock/Store/DoctrineDbalPostgreSqlStore.php b/src/Symfony/Component/Lock/Store/DoctrineDbalPostgreSqlStore.php index 0c3660a906d3d..9419b4ef35d5b 100644 --- a/src/Symfony/Component/Lock/Store/DoctrineDbalPostgreSqlStore.php +++ b/src/Symfony/Component/Lock/Store/DoctrineDbalPostgreSqlStore.php @@ -52,7 +52,7 @@ public function __construct($connOrUrl) $this->conn = $connOrUrl; } elseif (\is_string($connOrUrl)) { if (!class_exists(DriverManager::class)) { - throw new InvalidArgumentException(sprintf('Failed to parse the DSN "%s". Try running "composer require doctrine/dbal".', $connOrUrl)); + throw new InvalidArgumentException('Failed to parse DSN. Try running "composer require doctrine/dbal".'); } if (class_exists(DsnParser::class)) { $params = (new DsnParser([ @@ -274,7 +274,7 @@ private function unlockShared(Key $key): void private function filterDsn(string $dsn): string { if (!str_contains($dsn, '://')) { - throw new InvalidArgumentException(sprintf('String "%s" is not a valid DSN for Doctrine DBAL.', $dsn)); + throw new InvalidArgumentException('DSN is invalid for Doctrine DBAL.'); } [$scheme, $rest] = explode(':', $dsn, 2); diff --git a/src/Symfony/Component/Lock/Store/DoctrineDbalStore.php b/src/Symfony/Component/Lock/Store/DoctrineDbalStore.php index 7874f465b8274..0d60b8a3f4f74 100644 --- a/src/Symfony/Component/Lock/Store/DoctrineDbalStore.php +++ b/src/Symfony/Component/Lock/Store/DoctrineDbalStore.php @@ -69,7 +69,7 @@ public function __construct($connOrUrl, array $options = [], float $gcProbabilit $this->conn = $connOrUrl; } elseif (\is_string($connOrUrl)) { if (!class_exists(DriverManager::class)) { - throw new InvalidArgumentException(sprintf('Failed to parse the DSN "%s". Try running "composer require doctrine/dbal".', $connOrUrl)); + throw new InvalidArgumentException('Failed to parse the DSN. Try running "composer require doctrine/dbal".'); } if (class_exists(DsnParser::class)) { $params = (new DsnParser([ diff --git a/src/Symfony/Component/Lock/Store/StoreFactory.php b/src/Symfony/Component/Lock/Store/StoreFactory.php index 847928ef8c113..02ed47f8d70ca 100644 --- a/src/Symfony/Component/Lock/Store/StoreFactory.php +++ b/src/Symfony/Component/Lock/Store/StoreFactory.php @@ -75,7 +75,7 @@ public static function createStore($connection) case str_starts_with($connection, 'rediss:'): case str_starts_with($connection, 'memcached:'): if (!class_exists(AbstractAdapter::class)) { - throw new InvalidArgumentException(sprintf('Unsupported DSN "%s". Try running "composer require symfony/cache".', $connection)); + throw new InvalidArgumentException('Unsupported Redis or Memcached DSN. Try running "composer require symfony/cache".'); } $storeClass = str_starts_with($connection, 'memcached:') ? MemcachedStore::class : RedisStore::class; $connection = AbstractAdapter::createConnection($connection, ['lazy' => true]); diff --git a/src/Symfony/Component/Lock/Store/ZookeeperStore.php b/src/Symfony/Component/Lock/Store/ZookeeperStore.php index d1f3de971b0f8..eef4846e7a216 100644 --- a/src/Symfony/Component/Lock/Store/ZookeeperStore.php +++ b/src/Symfony/Component/Lock/Store/ZookeeperStore.php @@ -37,11 +37,11 @@ public function __construct(\Zookeeper $zookeeper) public static function createConnection(string $dsn): \Zookeeper { if (!str_starts_with($dsn, 'zookeeper:')) { - throw new InvalidArgumentException(sprintf('Unsupported DSN: "%s".', $dsn)); + throw new InvalidArgumentException('Unsupported DSN for Zookeeper.'); } if (false === $params = parse_url($dsn)) { - throw new InvalidArgumentException(sprintf('Invalid Zookeeper DSN: "%s".', $dsn)); + throw new InvalidArgumentException('Invalid Zookeeper DSN.'); } $host = $params['host'] ?? ''; diff --git a/src/Symfony/Component/Mailer/Tests/Transport/DsnTest.php b/src/Symfony/Component/Mailer/Tests/Transport/DsnTest.php index f3c0a0bc7f804..f0c0a8ffe0fed 100644 --- a/src/Symfony/Component/Mailer/Tests/Transport/DsnTest.php +++ b/src/Symfony/Component/Mailer/Tests/Transport/DsnTest.php @@ -92,17 +92,17 @@ public static function invalidDsnProvider(): iterable { yield [ 'some://', - 'The "some://" mailer DSN is invalid.', + 'The mailer DSN is invalid.', ]; yield [ '//sendmail', - 'The "//sendmail" mailer DSN must contain a scheme.', + 'The mailer DSN must contain a scheme.', ]; yield [ 'file:///some/path', - 'The "file:///some/path" mailer DSN must contain a host (use "default" by default).', + 'The mailer DSN must contain a host (use "default" by default).', ]; } } diff --git a/src/Symfony/Component/Mailer/Tests/TransportTest.php b/src/Symfony/Component/Mailer/Tests/TransportTest.php index 3ffd706cfaea0..50e0f7440dffe 100644 --- a/src/Symfony/Component/Mailer/Tests/TransportTest.php +++ b/src/Symfony/Component/Mailer/Tests/TransportTest.php @@ -90,11 +90,11 @@ public function testFromWrongString(string $dsn, string $error) public static function fromWrongStringProvider(): iterable { - yield 'garbage at the end' => ['dummy://a some garbage here', 'The DSN has some garbage at the end: " some garbage here".']; + yield 'garbage at the end' => ['dummy://a some garbage here', 'The mailer DSN has some garbage at the end.']; - yield 'not a valid DSN' => ['something not a dsn', 'The "something" mailer DSN must contain a scheme.']; + yield 'not a valid DSN' => ['something not a dsn', 'The mailer DSN must contain a scheme.']; - yield 'failover not closed' => ['failover(dummy://a', 'The "(dummy://a" mailer DSN must contain a scheme.']; + yield 'failover not closed' => ['failover(dummy://a', 'The mailer DSN must contain a scheme.']; yield 'not a valid keyword' => ['foobar(dummy://a)', 'The "foobar" keyword is not valid (valid ones are "failover", "roundrobin")']; } diff --git a/src/Symfony/Component/Mailer/Transport.php b/src/Symfony/Component/Mailer/Transport.php index c2b813f947771..ab7b67e4669a0 100644 --- a/src/Symfony/Component/Mailer/Transport.php +++ b/src/Symfony/Component/Mailer/Transport.php @@ -112,7 +112,7 @@ public function fromString(string $dsn): TransportInterface { [$transport, $offset] = $this->parseDsn($dsn); if ($offset !== \strlen($dsn)) { - throw new InvalidArgumentException(sprintf('The DSN has some garbage at the end: "%s".', substr($dsn, $offset))); + throw new InvalidArgumentException('The mailer DSN has some garbage at the end.'); } return $transport; diff --git a/src/Symfony/Component/Mailer/Transport/Dsn.php b/src/Symfony/Component/Mailer/Transport/Dsn.php index 04d3540f7b002..cef6041ef4c20 100644 --- a/src/Symfony/Component/Mailer/Transport/Dsn.php +++ b/src/Symfony/Component/Mailer/Transport/Dsn.php @@ -38,15 +38,15 @@ public function __construct(string $scheme, string $host, string $user = null, s public static function fromString(string $dsn): self { if (false === $parsedDsn = parse_url($dsn)) { - throw new InvalidArgumentException(sprintf('The "%s" mailer DSN is invalid.', $dsn)); + throw new InvalidArgumentException('The mailer DSN is invalid.'); } if (!isset($parsedDsn['scheme'])) { - throw new InvalidArgumentException(sprintf('The "%s" mailer DSN must contain a scheme.', $dsn)); + throw new InvalidArgumentException('The mailer DSN must contain a scheme.'); } if (!isset($parsedDsn['host'])) { - throw new InvalidArgumentException(sprintf('The "%s" mailer DSN must contain a host (use "default" by default).', $dsn)); + throw new InvalidArgumentException('The mailer DSN must contain a host (use "default" by default).'); } $user = '' !== ($parsedDsn['user'] ?? '') ? urldecode($parsedDsn['user']) : null; diff --git a/src/Symfony/Component/Messenger/Bridge/AmazonSqs/Tests/Transport/ConnectionTest.php b/src/Symfony/Component/Messenger/Bridge/AmazonSqs/Tests/Transport/ConnectionTest.php index 6297435ee1ef3..2abdb5d3b3e67 100644 --- a/src/Symfony/Component/Messenger/Bridge/AmazonSqs/Tests/Transport/ConnectionTest.php +++ b/src/Symfony/Component/Messenger/Bridge/AmazonSqs/Tests/Transport/ConnectionTest.php @@ -59,7 +59,7 @@ public function testConfigureWithCredentials() public function testFromInvalidDsn() { $this->expectException(\InvalidArgumentException::class); - $this->expectExceptionMessage('The given Amazon SQS DSN "sqs://" is invalid.'); + $this->expectExceptionMessage('The given Amazon SQS DSN is invalid.'); Connection::fromDsn('sqs://'); } diff --git a/src/Symfony/Component/Messenger/Bridge/AmazonSqs/Transport/Connection.php b/src/Symfony/Component/Messenger/Bridge/AmazonSqs/Transport/Connection.php index 20aef2cc0b421..3588ab323a5db 100644 --- a/src/Symfony/Component/Messenger/Bridge/AmazonSqs/Transport/Connection.php +++ b/src/Symfony/Component/Messenger/Bridge/AmazonSqs/Transport/Connection.php @@ -104,7 +104,7 @@ public function __destruct() public static function fromDsn(string $dsn, array $options = [], HttpClientInterface $client = null, LoggerInterface $logger = null): self { if (false === $parsedUrl = parse_url($dsn)) { - throw new InvalidArgumentException(sprintf('The given Amazon SQS DSN "%s" is invalid.', $dsn)); + throw new InvalidArgumentException('The given Amazon SQS DSN is invalid.'); } $query = []; diff --git a/src/Symfony/Component/Messenger/Bridge/Amqp/Tests/Transport/ConnectionTest.php b/src/Symfony/Component/Messenger/Bridge/Amqp/Tests/Transport/ConnectionTest.php index 1b39dc7d1a445..32abfd58438be 100644 --- a/src/Symfony/Component/Messenger/Bridge/Amqp/Tests/Transport/ConnectionTest.php +++ b/src/Symfony/Component/Messenger/Bridge/Amqp/Tests/Transport/ConnectionTest.php @@ -33,7 +33,7 @@ class ConnectionTest extends TestCase public function testItCannotBeConstructedWithAWrongDsn() { $this->expectException(\InvalidArgumentException::class); - $this->expectExceptionMessage('The given AMQP DSN "amqp://:" is invalid.'); + $this->expectExceptionMessage('The given AMQP DSN is invalid.'); Connection::fromDsn('amqp://:'); } diff --git a/src/Symfony/Component/Messenger/Bridge/Amqp/Transport/Connection.php b/src/Symfony/Component/Messenger/Bridge/Amqp/Transport/Connection.php index 166031b3aea90..0357575e3edfb 100644 --- a/src/Symfony/Component/Messenger/Bridge/Amqp/Transport/Connection.php +++ b/src/Symfony/Component/Messenger/Bridge/Amqp/Transport/Connection.php @@ -180,7 +180,7 @@ public static function fromDsn(string $dsn, array $options = [], AmqpFactory $am if (false === $parsedUrl = parse_url($dsn)) { // this is a valid URI that parse_url cannot handle when you want to pass all parameters as options if (!\in_array($dsn, ['amqp://', 'amqps://'])) { - throw new InvalidArgumentException(sprintf('The given AMQP DSN "%s" is invalid.', $dsn)); + throw new InvalidArgumentException('The given AMQP DSN is invalid.'); } $parsedUrl = []; diff --git a/src/Symfony/Component/Messenger/Bridge/Beanstalkd/Tests/Transport/ConnectionTest.php b/src/Symfony/Component/Messenger/Bridge/Beanstalkd/Tests/Transport/ConnectionTest.php index 4c135cd879a4d..06ef855c83a5c 100644 --- a/src/Symfony/Component/Messenger/Bridge/Beanstalkd/Tests/Transport/ConnectionTest.php +++ b/src/Symfony/Component/Messenger/Bridge/Beanstalkd/Tests/Transport/ConnectionTest.php @@ -30,7 +30,7 @@ final class ConnectionTest extends TestCase public function testFromInvalidDsn() { $this->expectException(\InvalidArgumentException::class); - $this->expectExceptionMessage('The given Beanstalkd DSN "beanstalkd://" is invalid.'); + $this->expectExceptionMessage('The given Beanstalkd DSN is invalid.'); Connection::fromDsn('beanstalkd://'); } diff --git a/src/Symfony/Component/Messenger/Bridge/Beanstalkd/Transport/Connection.php b/src/Symfony/Component/Messenger/Bridge/Beanstalkd/Transport/Connection.php index a8aaeae34264e..7ce26eec29f87 100644 --- a/src/Symfony/Component/Messenger/Bridge/Beanstalkd/Transport/Connection.php +++ b/src/Symfony/Component/Messenger/Bridge/Beanstalkd/Transport/Connection.php @@ -59,7 +59,7 @@ public function __construct(array $configuration, PheanstalkInterface $client) public static function fromDsn(string $dsn, array $options = []): self { if (false === $components = parse_url($dsn)) { - throw new InvalidArgumentException(sprintf('The given Beanstalkd DSN "%s" is invalid.', $dsn)); + throw new InvalidArgumentException('The given Beanstalkd DSN is invalid.'); } $connectionCredentials = [ diff --git a/src/Symfony/Component/Messenger/Bridge/Doctrine/Tests/Transport/DoctrineTransportFactoryTest.php b/src/Symfony/Component/Messenger/Bridge/Doctrine/Tests/Transport/DoctrineTransportFactoryTest.php index 6e108baa449be..a4ad6d50a15df 100644 --- a/src/Symfony/Component/Messenger/Bridge/Doctrine/Tests/Transport/DoctrineTransportFactoryTest.php +++ b/src/Symfony/Component/Messenger/Bridge/Doctrine/Tests/Transport/DoctrineTransportFactoryTest.php @@ -98,7 +98,7 @@ public function testCreateTransportNotifyWithPostgreSQLPlatform() public function testCreateTransportMustThrowAnExceptionIfManagerIsNotFound() { $this->expectException(TransportException::class); - $this->expectExceptionMessage('Could not find Doctrine connection from Messenger DSN "doctrine://default".'); + $this->expectExceptionMessage('Could not find Doctrine connection from Messenger DSN.'); $registry = $this->createMock(ConnectionRegistry::class); $registry->expects($this->once()) ->method('getConnection') diff --git a/src/Symfony/Component/Messenger/Bridge/Doctrine/Transport/Connection.php b/src/Symfony/Component/Messenger/Bridge/Doctrine/Transport/Connection.php index df8dafdb2f4b5..b3981e8a63461 100644 --- a/src/Symfony/Component/Messenger/Bridge/Doctrine/Transport/Connection.php +++ b/src/Symfony/Component/Messenger/Bridge/Doctrine/Transport/Connection.php @@ -87,7 +87,7 @@ public function getConfiguration(): array public static function buildConfiguration(string $dsn, array $options = []): array { if (false === $components = parse_url($dsn)) { - throw new InvalidArgumentException(sprintf('The given Doctrine Messenger DSN "%s" is invalid.', $dsn)); + throw new InvalidArgumentException('The given Doctrine Messenger DSN is invalid.'); } $query = []; diff --git a/src/Symfony/Component/Messenger/Bridge/Doctrine/Transport/DoctrineTransportFactory.php b/src/Symfony/Component/Messenger/Bridge/Doctrine/Transport/DoctrineTransportFactory.php index f634e5548168f..4ddb85882970c 100644 --- a/src/Symfony/Component/Messenger/Bridge/Doctrine/Transport/DoctrineTransportFactory.php +++ b/src/Symfony/Component/Messenger/Bridge/Doctrine/Transport/DoctrineTransportFactory.php @@ -45,7 +45,7 @@ public function createTransport(string $dsn, array $options, SerializerInterface try { $driverConnection = $this->registry->getConnection($configuration['connection']); } catch (\InvalidArgumentException $e) { - throw new TransportException(sprintf('Could not find Doctrine connection from Messenger DSN "%s".', $dsn), 0, $e); + throw new TransportException('Could not find Doctrine connection from Messenger DSN.', 0, $e); } if ($useNotify && $driverConnection->getDatabasePlatform() instanceof PostgreSQLPlatform) { diff --git a/src/Symfony/Component/Messenger/Bridge/Redis/Tests/Transport/ConnectionTest.php b/src/Symfony/Component/Messenger/Bridge/Redis/Tests/Transport/ConnectionTest.php index fb98baf70b610..71ccea4c1752e 100644 --- a/src/Symfony/Component/Messenger/Bridge/Redis/Tests/Transport/ConnectionTest.php +++ b/src/Symfony/Component/Messenger/Bridge/Redis/Tests/Transport/ConnectionTest.php @@ -26,7 +26,7 @@ class ConnectionTest extends TestCase public function testFromInvalidDsn() { $this->expectException(\InvalidArgumentException::class); - $this->expectExceptionMessage('The given Redis DSN "redis://" is invalid.'); + $this->expectExceptionMessage('The given Redis DSN is invalid.'); Connection::fromDsn('redis://'); } diff --git a/src/Symfony/Component/Messenger/Bridge/Redis/Transport/Connection.php b/src/Symfony/Component/Messenger/Bridge/Redis/Transport/Connection.php index c8050658fc5a1..321b0001ac5f2 100644 --- a/src/Symfony/Component/Messenger/Bridge/Redis/Transport/Connection.php +++ b/src/Symfony/Component/Messenger/Bridge/Redis/Transport/Connection.php @@ -162,9 +162,9 @@ public static function fromDsn(string $dsn, array $redisOptions = [], $redis = n $parsedUrl = array_merge(...$parsedUrls); // Regroup all the hosts in an array interpretable by RedisCluster - $parsedUrl['host'] = array_map(function ($parsedUrl, $dsn) { + $parsedUrl['host'] = array_map(function ($parsedUrl) { if (!isset($parsedUrl['host'])) { - throw new InvalidArgumentException(sprintf('Missing host in DSN part "%s", it must be defined when using Redis Cluster.', $dsn)); + throw new InvalidArgumentException('Missing host in DSN, it must be defined when using Redis Cluster.'); } return $parsedUrl['host'].':'.($parsedUrl['port'] ?? 6379); @@ -276,7 +276,7 @@ private static function parseDsn(string $dsn, array &$redisOptions): array } if (false === $parsedUrl = parse_url($url)) { - throw new InvalidArgumentException(sprintf('The given Redis DSN "%s" is invalid.', $dsn)); + throw new InvalidArgumentException('The given Redis DSN is invalid.'); } if (isset($parsedUrl['query'])) { parse_str($parsedUrl['query'], $dsnOptions); diff --git a/src/Symfony/Component/Messenger/Transport/TransportFactory.php b/src/Symfony/Component/Messenger/Transport/TransportFactory.php index 474dd6fe2f006..a6fa16ecc9a8e 100644 --- a/src/Symfony/Component/Messenger/Transport/TransportFactory.php +++ b/src/Symfony/Component/Messenger/Transport/TransportFactory.php @@ -51,7 +51,7 @@ public function createTransport(string $dsn, array $options, SerializerInterface $packageSuggestion = ' Run "composer require symfony/beanstalkd-messenger" to install Beanstalkd transport.'; } - throw new InvalidArgumentException(sprintf('No transport supports the given Messenger DSN "%s".%s.', $dsn, $packageSuggestion)); + throw new InvalidArgumentException('No transport supports the given Messenger DSN.'.$packageSuggestion); } public function supports(string $dsn, array $options): bool diff --git a/src/Symfony/Component/Notifier/Bridge/MicrosoftTeams/MicrosoftTeamsTransportFactory.php b/src/Symfony/Component/Notifier/Bridge/MicrosoftTeams/MicrosoftTeamsTransportFactory.php index 1e4b411e5a23e..39f9361fc5c91 100644 --- a/src/Symfony/Component/Notifier/Bridge/MicrosoftTeams/MicrosoftTeamsTransportFactory.php +++ b/src/Symfony/Component/Notifier/Bridge/MicrosoftTeams/MicrosoftTeamsTransportFactory.php @@ -34,7 +34,7 @@ public function create(Dsn $dsn): TransportInterface $path = $dsn->getPath(); if (null === $path) { - throw new IncompleteDsnException('Path is not set.', $dsn->getOriginalDsn()); + throw new IncompleteDsnException('Path is not set.', 'microsoftteams://'.$dsn->getHost()); } $host = $dsn->getHost(); diff --git a/src/Symfony/Component/Notifier/Bridge/OvhCloud/OvhCloudTransport.php b/src/Symfony/Component/Notifier/Bridge/OvhCloud/OvhCloudTransport.php index 0c07729ed5704..27ef84e992633 100644 --- a/src/Symfony/Component/Notifier/Bridge/OvhCloud/OvhCloudTransport.php +++ b/src/Symfony/Component/Notifier/Bridge/OvhCloud/OvhCloudTransport.php @@ -47,10 +47,10 @@ public function __construct(string $applicationKey, string $applicationSecret, s public function __toString(): string { if (null !== $this->sender) { - return sprintf('ovhcloud://%s?consumer_key=%s&service_name=%s&sender=%s', $this->getEndpoint(), $this->consumerKey, $this->serviceName, $this->sender); + return sprintf('ovhcloud://%s?service_name=%s&sender=%s', $this->getEndpoint(), $this->serviceName, $this->sender); } - return sprintf('ovhcloud://%s?consumer_key=%s&service_name=%s', $this->getEndpoint(), $this->consumerKey, $this->serviceName); + return sprintf('ovhcloud://%s?service_name=%s', $this->getEndpoint(), $this->serviceName); } /** diff --git a/src/Symfony/Component/Notifier/Bridge/OvhCloud/Tests/OvhCloudTransportFactoryTest.php b/src/Symfony/Component/Notifier/Bridge/OvhCloud/Tests/OvhCloudTransportFactoryTest.php index 9ea6e40e7decb..89ad537fe2ad6 100644 --- a/src/Symfony/Component/Notifier/Bridge/OvhCloud/Tests/OvhCloudTransportFactoryTest.php +++ b/src/Symfony/Component/Notifier/Bridge/OvhCloud/Tests/OvhCloudTransportFactoryTest.php @@ -28,14 +28,29 @@ public function createFactory(): TransportFactoryInterface public static function createProvider(): iterable { yield [ - 'ovhcloud://host.test?consumer_key=consumerKey&service_name=serviceName', + 'ovhcloud://host.test?service_name=serviceName', 'ovhcloud://key:secret@host.test?consumer_key=consumerKey&service_name=serviceName', ]; yield [ - 'ovhcloud://host.test?consumer_key=consumerKey&service_name=serviceName&sender=sender', + 'ovhcloud://host.test?service_name=serviceName&sender=sender', 'ovhcloud://key:secret@host.test?consumer_key=consumerKey&service_name=serviceName&sender=sender', ]; + + yield [ + 'ovhcloud://host.test?service_name=serviceName', + 'ovhcloud://key:secret@host.test?consumer_key=consumerKey&service_name=serviceName&no_stop_clause=0', + ]; + + yield [ + 'ovhcloud://host.test?service_name=serviceName', + 'ovhcloud://key:secret@host.test?consumer_key=consumerKey&service_name=serviceName&no_stop_clause=1', + ]; + + yield [ + 'ovhcloud://host.test?service_name=serviceName', + 'ovhcloud://key:secret@host.test?consumer_key=consumerKey&service_name=serviceName&no_stop_clause=true', + ]; } public static function supportsProvider(): iterable diff --git a/src/Symfony/Component/Notifier/Bridge/OvhCloud/Tests/OvhCloudTransportTest.php b/src/Symfony/Component/Notifier/Bridge/OvhCloud/Tests/OvhCloudTransportTest.php index b36cdd0557771..d3b90b43c23d0 100644 --- a/src/Symfony/Component/Notifier/Bridge/OvhCloud/Tests/OvhCloudTransportTest.php +++ b/src/Symfony/Component/Notifier/Bridge/OvhCloud/Tests/OvhCloudTransportTest.php @@ -34,8 +34,9 @@ public static function createTransport(HttpClientInterface $client = null, strin public static function toStringProvider(): iterable { - yield ['ovhcloud://eu.api.ovh.com?consumer_key=consumerKey&service_name=serviceName', self::createTransport()]; - yield ['ovhcloud://eu.api.ovh.com?consumer_key=consumerKey&service_name=serviceName&sender=sender', self::createTransport(null, 'sender')]; + yield ['ovhcloud://eu.api.ovh.com?service_name=serviceName', self::createTransport()]; + yield ['ovhcloud://eu.api.ovh.com?service_name=serviceName', self::createTransport(null, null, true)]; + yield ['ovhcloud://eu.api.ovh.com?service_name=serviceName&sender=sender', self::createTransport(null, 'sender')]; } public static function supportedMessagesProvider(): iterable diff --git a/src/Symfony/Component/Notifier/Bridge/Telegram/TelegramTransportFactory.php b/src/Symfony/Component/Notifier/Bridge/Telegram/TelegramTransportFactory.php index 490fe1d26e9b7..d7d17a6527caf 100644 --- a/src/Symfony/Component/Notifier/Bridge/Telegram/TelegramTransportFactory.php +++ b/src/Symfony/Component/Notifier/Bridge/Telegram/TelegramTransportFactory.php @@ -49,11 +49,11 @@ protected function getSupportedSchemes(): array private function getToken(Dsn $dsn): string { if (null === $dsn->getUser() && null === $dsn->getPassword()) { - throw new IncompleteDsnException('Missing token.', $dsn->getOriginalDsn()); + throw new IncompleteDsnException('Missing token.', 'telegram://'.$dsn->getHost()); } if (null === $dsn->getPassword()) { - throw new IncompleteDsnException('Malformed token.', $dsn->getOriginalDsn()); + throw new IncompleteDsnException('Malformed token.', 'telegram://'.$dsn->getHost()); } return sprintf('%s:%s', $dsn->getUser(), $dsn->getPassword()); diff --git a/src/Symfony/Component/Notifier/Tests/Transport/DsnTest.php b/src/Symfony/Component/Notifier/Tests/Transport/DsnTest.php index 98a898cd50a36..a75f1608d8090 100644 --- a/src/Symfony/Component/Notifier/Tests/Transport/DsnTest.php +++ b/src/Symfony/Component/Notifier/Tests/Transport/DsnTest.php @@ -155,17 +155,17 @@ public static function invalidDsnProvider(): iterable { yield [ 'some://', - 'The "some://" notifier DSN is invalid.', + 'The notifier DSN is invalid.', ]; yield [ '//slack', - 'The "//slack" notifier DSN must contain a scheme.', + 'The notifier DSN must contain a scheme.', ]; yield [ 'file:///some/path', - 'The "file:///some/path" notifier DSN must contain a host (use "default" by default).', + 'The notifier DSN must contain a host (use "default" by default).', ]; } diff --git a/src/Symfony/Component/Notifier/Transport/AbstractTransportFactory.php b/src/Symfony/Component/Notifier/Transport/AbstractTransportFactory.php index d595aa623a723..f983c480e9ee8 100644 --- a/src/Symfony/Component/Notifier/Transport/AbstractTransportFactory.php +++ b/src/Symfony/Component/Notifier/Transport/AbstractTransportFactory.php @@ -46,7 +46,7 @@ protected function getUser(Dsn $dsn): string { $user = $dsn->getUser(); if (null === $user) { - throw new IncompleteDsnException('User is not set.', $dsn->getOriginalDsn()); + throw new IncompleteDsnException('User is not set.', $dsn->getScheme().'://'.$dsn->getHost()); } return $user; diff --git a/src/Symfony/Component/Notifier/Transport/Dsn.php b/src/Symfony/Component/Notifier/Transport/Dsn.php index 16f722356578b..6f4c3577a8c1a 100644 --- a/src/Symfony/Component/Notifier/Transport/Dsn.php +++ b/src/Symfony/Component/Notifier/Transport/Dsn.php @@ -34,16 +34,16 @@ public function __construct(string $dsn) $this->originalDsn = $dsn; if (false === $parsedDsn = parse_url($dsn)) { - throw new InvalidArgumentException(sprintf('The "%s" notifier DSN is invalid.', $dsn)); + throw new InvalidArgumentException('The notifier DSN is invalid.'); } if (!isset($parsedDsn['scheme'])) { - throw new InvalidArgumentException(sprintf('The "%s" notifier DSN must contain a scheme.', $dsn)); + throw new InvalidArgumentException('The notifier DSN must contain a scheme.'); } $this->scheme = $parsedDsn['scheme']; if (!isset($parsedDsn['host'])) { - throw new InvalidArgumentException(sprintf('The "%s" notifier DSN must contain a host (use "default" by default).', $dsn)); + throw new InvalidArgumentException('The notifier DSN must contain a host (use "default" by default).'); } $this->host = $parsedDsn['host']; diff --git a/src/Symfony/Component/Semaphore/Store/StoreFactory.php b/src/Symfony/Component/Semaphore/Store/StoreFactory.php index 4c6304921ff91..f3a02418da680 100644 --- a/src/Symfony/Component/Semaphore/Store/StoreFactory.php +++ b/src/Symfony/Component/Semaphore/Store/StoreFactory.php @@ -48,7 +48,7 @@ public static function createStore($connection): PersistingStoreInterface case 0 === strpos($connection, 'redis://'): case 0 === strpos($connection, 'rediss://'): if (!class_exists(AbstractAdapter::class)) { - throw new InvalidArgumentException(sprintf('Unsupported DSN "%s". Try running "composer require symfony/cache".', $connection)); + throw new InvalidArgumentException('Unsupported Redis DSN. Try running "composer require symfony/cache".'); } $connection = AbstractAdapter::createConnection($connection, ['lazy' => true]); diff --git a/src/Symfony/Component/Translation/Provider/AbstractProviderFactory.php b/src/Symfony/Component/Translation/Provider/AbstractProviderFactory.php index 17442fde873a1..fdfeb8ce38068 100644 --- a/src/Symfony/Component/Translation/Provider/AbstractProviderFactory.php +++ b/src/Symfony/Component/Translation/Provider/AbstractProviderFactory.php @@ -28,7 +28,7 @@ abstract protected function getSupportedSchemes(): array; protected function getUser(Dsn $dsn): string { if (null === $user = $dsn->getUser()) { - throw new IncompleteDsnException('User is not set.', $dsn->getOriginalDsn()); + throw new IncompleteDsnException('User is not set.', $dsn->getScheme().'://'.$dsn->getHost()); } return $user; diff --git a/src/Symfony/Component/Translation/Provider/Dsn.php b/src/Symfony/Component/Translation/Provider/Dsn.php index 820cabfb3a810..792b8dc1dcc8a 100644 --- a/src/Symfony/Component/Translation/Provider/Dsn.php +++ b/src/Symfony/Component/Translation/Provider/Dsn.php @@ -34,16 +34,16 @@ public function __construct(string $dsn) $this->originalDsn = $dsn; if (false === $parsedDsn = parse_url($dsn)) { - throw new InvalidArgumentException(sprintf('The "%s" translation provider DSN is invalid.', $dsn)); + throw new InvalidArgumentException('The translation provider DSN is invalid.'); } if (!isset($parsedDsn['scheme'])) { - throw new InvalidArgumentException(sprintf('The "%s" translation provider DSN must contain a scheme.', $dsn)); + throw new InvalidArgumentException('The translation provider DSN must contain a scheme.'); } $this->scheme = $parsedDsn['scheme']; if (!isset($parsedDsn['host'])) { - throw new InvalidArgumentException(sprintf('The "%s" translation provider DSN must contain a host (use "default" by default).', $dsn)); + throw new InvalidArgumentException('The translation provider DSN must contain a host (use "default" by default).'); } $this->host = $parsedDsn['host']; diff --git a/src/Symfony/Component/Translation/Tests/Provider/DsnTest.php b/src/Symfony/Component/Translation/Tests/Provider/DsnTest.php index 6240e7c4e6e95..54593be96710d 100644 --- a/src/Symfony/Component/Translation/Tests/Provider/DsnTest.php +++ b/src/Symfony/Component/Translation/Tests/Provider/DsnTest.php @@ -155,17 +155,17 @@ public static function invalidDsnProvider(): iterable { yield [ 'some://', - 'The "some://" translation provider DSN is invalid.', + 'The translation provider DSN is invalid.', ]; yield [ '//loco', - 'The "//loco" translation provider DSN must contain a scheme.', + 'The translation provider DSN must contain a scheme.', ]; yield [ 'file:///some/path', - 'The "file:///some/path" translation provider DSN must contain a host (use "default" by default).', + 'The translation provider DSN must contain a host (use "default" by default).', ]; }