@@ -723,6 +723,54 @@ describe('url-parse', function () {
723723 assume ( parsed . hostname ) . equals ( 'www.example.com' ) ;
724724 assume ( parsed . href ) . equals ( url ) ;
725725 } ) ;
726+
727+ it ( 'handles @ in username' , function ( ) {
728+ var url = 'http://user@@www.example.com/'
729+ , parsed = parse ( url ) ;
730+
731+ assume ( parsed . protocol ) . equals ( 'http:' ) ;
732+ assume ( parsed . auth ) . equals ( 'user%40' ) ;
733+ assume ( parsed . username ) . equals ( 'user%40' ) ;
734+ assume ( parsed . password ) . equals ( '' ) ;
735+ assume ( parsed . hostname ) . equals ( 'www.example.com' ) ;
736+ assume ( parsed . pathname ) . equals ( '/' ) ;
737+ assume ( parsed . href ) . equals ( 'http://user%[email protected] /' ) ; 738+
739+ url = 'http://user%[email protected] /' ; 740+ parsed = parse ( url ) ;
741+
742+ assume ( parsed . protocol ) . equals ( 'http:' ) ;
743+ assume ( parsed . auth ) . equals ( 'user%40' ) ;
744+ assume ( parsed . username ) . equals ( 'user%40' ) ;
745+ assume ( parsed . password ) . equals ( '' ) ;
746+ assume ( parsed . hostname ) . equals ( 'www.example.com' ) ;
747+ assume ( parsed . pathname ) . equals ( '/' ) ;
748+ assume ( parsed . href ) . equals ( 'http://user%[email protected] /' ) ; 749+ } ) ;
750+
751+ it ( 'handles @ in password' , function ( ) {
752+ var url = 'http://user@:pas:s@@www.example.com/'
753+ , parsed = parse ( url ) ;
754+
755+ assume ( parsed . protocol ) . equals ( 'http:' ) ;
756+ assume ( parsed . auth ) . equals ( 'user%40:pas%3As%40' ) ;
757+ assume ( parsed . username ) . equals ( 'user%40' ) ;
758+ assume ( parsed . password ) . equals ( 'pas%3As%40' ) ;
759+ assume ( parsed . hostname ) . equals ( 'www.example.com' ) ;
760+ assume ( parsed . pathname ) . equals ( '/' ) ;
761+ assume ( parsed . href ) . equals ( 'http://user%40:pas%3As%[email protected] /' ) ; 762+
763+ url = 'http://user%40:pas%3As%[email protected] /' 764+ parsed = parse ( url ) ;
765+
766+ assume ( parsed . protocol ) . equals ( 'http:' ) ;
767+ assume ( parsed . auth ) . equals ( 'user%40:pas%3As%40' ) ;
768+ assume ( parsed . username ) . equals ( 'user%40' ) ;
769+ assume ( parsed . password ) . equals ( 'pas%3As%40' ) ;
770+ assume ( parsed . hostname ) . equals ( 'www.example.com' ) ;
771+ assume ( parsed . pathname ) . equals ( '/' ) ;
772+ assume ( parsed . href ) . equals ( 'http://user%40:pas%3As%[email protected] /' ) ; 773+ } ) ;
726774 } ) ;
727775
728776 it ( 'accepts multiple ???' , function ( ) {
@@ -1158,6 +1206,26 @@ describe('url-parse', function () {
11581206 assume ( data . username ) . equals ( '' ) ;
11591207 assume ( data . password ) . equals ( 'quux' ) ;
11601208 assume ( data . href ) . equals ( 'https://:[email protected] /' ) ; 1209+
1210+ assume ( data . set ( 'auth' , 'user@:pass@' ) ) . equals ( data ) ;
1211+ assume ( data . username ) . equals ( 'user%40' ) ;
1212+ assume ( data . password ) . equals ( 'pass%40' ) ;
1213+ assume ( data . href ) . equals ( 'https://user%40:pass%[email protected] /' ) ; 1214+
1215+ assume ( data . set ( 'auth' , 'user%40:pass%40' ) ) . equals ( data ) ;
1216+ assume ( data . username ) . equals ( 'user%40' ) ;
1217+ assume ( data . password ) . equals ( 'pass%40' ) ;
1218+ assume ( data . href ) . equals ( 'https://user%40:pass%[email protected] /' ) ; 1219+
1220+ assume ( data . set ( 'auth' , 'user:pass:word' ) ) . equals ( data ) ;
1221+ assume ( data . username ) . equals ( 'user' ) ;
1222+ assume ( data . password ) . equals ( 'pass%3Aword' ) ;
1223+ assume ( data . href ) . equals ( 'https://user:pass%[email protected] /' ) ; 1224+
1225+ assume ( data . set ( 'auth' , 'user:pass%3Aword' ) ) . equals ( data ) ;
1226+ assume ( data . username ) . equals ( 'user' ) ;
1227+ assume ( data . password ) . equals ( 'pass%3Aword' ) ;
1228+ assume ( data . href ) . equals ( 'https://user:pass%[email protected] /' ) ; 11611229 } ) ;
11621230
11631231 it ( 'updates other values' , function ( ) {
0 commit comments