@@ -723,6 +723,54 @@ describe('url-parse', function () {
723
723
assume ( parsed . hostname ) . equals ( 'www.example.com' ) ;
724
724
assume ( parsed . href ) . equals ( url ) ;
725
725
} ) ;
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%40@www.example.com/' ) ;
738
+
739
+ url = 'http://user%40@www.example.com/' ;
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%40@www.example.com/' ) ;
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%40@www.example.com/' ) ;
762
+
763
+ url = 'http://user%40:pas%3As%40@www.example.com/'
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%40@www.example.com/' ) ;
773
+ } ) ;
726
774
} ) ;
727
775
728
776
it ( 'accepts multiple ???' , function ( ) {
@@ -1158,6 +1206,26 @@ describe('url-parse', function () {
1158
1206
assume ( data . username ) . equals ( '' ) ;
1159
1207
assume ( data . password ) . equals ( 'quux' ) ;
1160
1208
assume ( data . href ) . equals ( 'https://:quux@example.com/' ) ;
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%40@example.com/' ) ;
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%40@example.com/' ) ;
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%3Aword@example.com/' ) ;
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%3Aword@example.com/' ) ;
1161
1229
} ) ;
1162
1230
1163
1231
it ( 'updates other values' , function ( ) {
0 commit comments