@@ -382,6 +382,36 @@ public function testShouldParseExpectedNumberOfMultipleDsns()
382382 $ this ->assertCount (3 , $ dsns );
383383 }
384384
385+ public function testShouldParseDsnWithOnlyUser ()
386+ {
387+ $ dsn = Dsn::parseFirst ('foo://user@host ' );
388+
389+ $ this ->assertSame ('user ' , $ dsn ->getUser ());
390+ $ this ->assertNull ($ dsn ->getPassword ());
391+ $ this ->assertSame ('foo ' , $ dsn ->getScheme ());
392+ $ this ->assertSame ('host ' , $ dsn ->getHost ());
393+ }
394+
395+ public function testShouldUrlEncodeUser ()
396+ {
397+ $ dsn = Dsn::parseFirst ('foo://us%3Aer@host ' );
398+
399+ $ this ->assertSame ('us:er ' , $ dsn ->getUser ());
400+ $ this ->assertNull ($ dsn ->getPassword ());
401+ $ this ->assertSame ('foo ' , $ dsn ->getScheme ());
402+ $ this ->assertSame ('host ' , $ dsn ->getHost ());
403+ }
404+
405+ public function testShouldUrlEncodePassword ()
406+ {
407+ $ dsn = Dsn::parseFirst ('foo://user:pass%3Aword@host ' );
408+
409+ $ this ->assertSame ('user ' , $ dsn ->getUser ());
410+ $ this ->assertSame ('pass:word ' , $ dsn ->getPassword ());
411+ $ this ->assertSame ('foo ' , $ dsn ->getScheme ());
412+ $ this ->assertSame ('host ' , $ dsn ->getHost ());
413+ }
414+
385415 public static function provideSchemes ()
386416 {
387417 yield [': ' , '' , '' , []];
0 commit comments