@@ -689,6 +689,54 @@ describe('url-parse', function () {
689
689
assume ( parsed . hostname ) . equals ( 'www.example.com' ) ;
690
690
assume ( parsed . href ) . equals ( url ) ;
691
691
} ) ;
692
+
693
+ it ( 'handles @ in username' , function ( ) {
694
+ var url = 'http://user@@www.example.com/'
695
+ , parsed = parse ( url ) ;
696
+
697
+ assume ( parsed . protocol ) . equals ( 'http:' ) ;
698
+ assume ( parsed . auth ) . equals ( 'user%40' ) ;
699
+ assume ( parsed . username ) . equals ( 'user%40' ) ;
700
+ assume ( parsed . password ) . equals ( '' ) ;
701
+ assume ( parsed . hostname ) . equals ( 'www.example.com' ) ;
702
+ assume ( parsed . pathname ) . equals ( '/' ) ;
703
+ assume ( parsed . href ) . equals ( 'http://user%40@www.example.com/' ) ;
704
+
705
+ url = 'http://user%40@www.example.com/' ;
706
+ parsed = parse ( url ) ;
707
+
708
+ assume ( parsed . protocol ) . equals ( 'http:' ) ;
709
+ assume ( parsed . auth ) . equals ( 'user%40' ) ;
710
+ assume ( parsed . username ) . equals ( 'user%40' ) ;
711
+ assume ( parsed . password ) . equals ( '' ) ;
712
+ assume ( parsed . hostname ) . equals ( 'www.example.com' ) ;
713
+ assume ( parsed . pathname ) . equals ( '/' ) ;
714
+ assume ( parsed . href ) . equals ( 'http://user%40@www.example.com/' ) ;
715
+ } ) ;
716
+
717
+ it ( 'handles @ in password' , function ( ) {
718
+ var url = 'http://user@:pas:s@@www.example.com/'
719
+ , parsed = parse ( url ) ;
720
+
721
+ assume ( parsed . protocol ) . equals ( 'http:' ) ;
722
+ assume ( parsed . auth ) . equals ( 'user%40:pas%3As%40' ) ;
723
+ assume ( parsed . username ) . equals ( 'user%40' ) ;
724
+ assume ( parsed . password ) . equals ( 'pas%3As%40' ) ;
725
+ assume ( parsed . hostname ) . equals ( 'www.example.com' ) ;
726
+ assume ( parsed . pathname ) . equals ( '/' ) ;
727
+ assume ( parsed . href ) . equals ( 'http://user%40:pas%3As%40@www.example.com/' ) ;
728
+
729
+ url = 'http://user%40:pas%3As%40@www.example.com/'
730
+ parsed = parse ( url ) ;
731
+
732
+ assume ( parsed . protocol ) . equals ( 'http:' ) ;
733
+ assume ( parsed . auth ) . equals ( 'user%40:pas%3As%40' ) ;
734
+ assume ( parsed . username ) . equals ( 'user%40' ) ;
735
+ assume ( parsed . password ) . equals ( 'pas%3As%40' ) ;
736
+ assume ( parsed . hostname ) . equals ( 'www.example.com' ) ;
737
+ assume ( parsed . pathname ) . equals ( '/' ) ;
738
+ assume ( parsed . href ) . equals ( 'http://user%40:pas%3As%40@www.example.com/' ) ;
739
+ } ) ;
692
740
} ) ;
693
741
694
742
it ( 'accepts multiple ???' , function ( ) {
@@ -1124,6 +1172,26 @@ describe('url-parse', function () {
1124
1172
assume ( data . username ) . equals ( '' ) ;
1125
1173
assume ( data . password ) . equals ( 'quux' ) ;
1126
1174
assume ( data . href ) . equals ( 'https://:quux@example.com/' ) ;
1175
+
1176
+ assume ( data . set ( 'auth' , 'user@:pass@' ) ) . equals ( data ) ;
1177
+ assume ( data . username ) . equals ( 'user%40' ) ;
1178
+ assume ( data . password ) . equals ( 'pass%40' ) ;
1179
+ assume ( data . href ) . equals ( 'https://user%40:pass%40@example.com/' ) ;
1180
+
1181
+ assume ( data . set ( 'auth' , 'user%40:pass%40' ) ) . equals ( data ) ;
1182
+ assume ( data . username ) . equals ( 'user%40' ) ;
1183
+ assume ( data . password ) . equals ( 'pass%40' ) ;
1184
+ assume ( data . href ) . equals ( 'https://user%40:pass%40@example.com/' ) ;
1185
+
1186
+ assume ( data . set ( 'auth' , 'user:pass:word' ) ) . equals ( data ) ;
1187
+ assume ( data . username ) . equals ( 'user' ) ;
1188
+ assume ( data . password ) . equals ( 'pass%3Aword' ) ;
1189
+ assume ( data . href ) . equals ( 'https://user:pass%3Aword@example.com/' ) ;
1190
+
1191
+ assume ( data . set ( 'auth' , 'user:pass%3Aword' ) ) . equals ( data ) ;
1192
+ assume ( data . username ) . equals ( 'user' ) ;
1193
+ assume ( data . password ) . equals ( 'pass%3Aword' ) ;
1194
+ assume ( data . href ) . equals ( 'https://user:pass%3Aword@example.com/' ) ;
1127
1195
} ) ;
1128
1196
1129
1197
it ( 'updates other values' , function ( ) {
0 commit comments