11using Microsoft . VisualStudio . TestTools . UnitTesting ;
2+ using ToSic . Razor . Internals ;
23using ToSic . Razor . Markup ;
34
45namespace ToSic . RazorBladeTests . InternalTests
56{
67 [ TestClass ]
78 public class UriEncoding
89 {
10+ /// <summary>
11+ /// Test Accessor
12+ /// </summary>
13+ private string EncodeTestAccessor ( string url ) => UriHelpers . UriEncode ( url ) ;
14+
15+ /// <summary>
16+ /// Test Accessor
17+ /// </summary>
18+ private string EncodeSrcSetTestAccessor ( string srcset ) => UriHelpers . UriEncodeSrcSet ( srcset ) ;
19+
920 /// <summary>
1021 /// Verify that uri-encode works and leaves slashes etc. untouched
1122 /// </summary>
1223 [ TestMethod ]
1324 public void UriEncode ( )
1425 {
15- Assert . AreEqual ( "hello" , TagBase . UriEncode ( "hello" ) ) ;
26+ Assert . AreEqual ( "hello" , EncodeTestAccessor ( "hello" ) ) ;
1627
17- Assert . AreEqual ( "hell%C3%B6" , TagBase . UriEncode ( "hellö" ) ,
28+ Assert . AreEqual ( "hell%C3%B6" , EncodeTestAccessor ( "hellö" ) ,
1829 "check umlauts" ) ;
1930
20- Assert . AreEqual ( "hello/there.aspx" , TagBase . UriEncode ( "hello/there.aspx" ) ,
31+ Assert . AreEqual ( "hello/there.aspx" , EncodeTestAccessor ( "hello/there.aspx" ) ,
2132 "check path parts" ) ;
2233
23- Assert . AreEqual ( "hello?parameter=7" , TagBase . UriEncode ( "hello?parameter=7" ) ,
34+ Assert . AreEqual ( "hello?parameter=7" , EncodeTestAccessor ( "hello?parameter=7" ) ,
2435 "check params" ) ;
2536
26- Assert . AreEqual ( "http://azing.org" , TagBase . UriEncode ( "http://azing.org" ) ,
37+ Assert . AreEqual ( "http://azing.org" , EncodeTestAccessor ( "http://azing.org" ) ,
2738 "check domains" ) ;
2839
2940 Assert . AreEqual ( "http://azing.org/homepage?name=m" , "http://azing.org/homepage?name=m" ,
3041 "check full url" ) ;
3142
32- Assert . AreEqual ( "http://azing.org/home%20page?name=m" , TagBase . UriEncode ( "http://azing.org/home page?name=m" ) ,
43+ Assert . AreEqual ( "http://azing.org/home%20page?name=m" , EncodeTestAccessor ( "http://azing.org/home page?name=m" ) ,
3344 "check spaces" ) ;
3445
35- Assert . AreEqual ( "something#hashed" , TagBase . UriEncode ( "something#hashed" ) ,
46+ Assert . AreEqual ( "something#hashed" , EncodeTestAccessor ( "something#hashed" ) ,
3647 "check hash" ) ;
3748
38- Assert . AreEqual ( "url+plus" , TagBase . UriEncode ( "url+plus" ) ,
49+ Assert . AreEqual ( "url+plus" , EncodeTestAccessor ( "url+plus" ) ,
3950 "check plus in url = it's a space, and shouldn't be re-encode" ) ;
4051
4152
@@ -44,30 +55,64 @@ public void UriEncode()
4455 [ TestMethod ]
4556 public void Nulls ( )
4657 {
47- Assert . AreEqual ( null , TagBase . UriEncode ( null ) ) ;
58+ Assert . AreEqual ( null , EncodeTestAccessor ( null ) ) ;
4859 }
4960
5061 [ TestMethod ]
5162 public void ResizeUrls ( )
5263 {
53- Assert . AreEqual ( "img.jpg?w=200" , TagBase . UriEncode ( "img.jpg?w=200" ) ) ;
64+ Assert . AreEqual ( "img.jpg?w=200" , EncodeTestAccessor ( "img.jpg?w=200" ) ) ;
5465 }
5566
5667 [ TestMethod ]
5768 public void DontDoubleEncode ( )
5869 {
59- Assert . AreEqual ( "%20" , TagBase . UriEncode ( "%20" ) ,
70+ Assert . AreEqual ( "%20" , EncodeTestAccessor ( "%20" ) ,
6071 "check don't re-encode" ) ;
6172
62- Assert . AreEqual ( "hello%20there" , TagBase . UriEncode ( TagBase . UriEncode ( "hello there" ) ) ) ;
73+ Assert . AreEqual ( "hello%20there" , EncodeTestAccessor ( EncodeTestAccessor ( "hello there" ) ) ) ;
6374 }
6475
6576 [ TestMethod ]
6677 public void EncodePercentIfNotUsedForEncoding ( )
6778 {
68- Assert . AreEqual ( "I-want-25%25-profit" , TagBase . UriEncode ( "I-want-25%-profit" ) ) ;
79+ Assert . AreEqual ( "I-want-25%25-profit" , EncodeTestAccessor ( "I-want-25%-profit" ) ) ;
6980
70- Assert . AreEqual ( "25%25is%20enough" , TagBase . UriEncode ( "25%is enough" ) ) ;
81+ Assert . AreEqual ( "25%25is%20enough" , EncodeTestAccessor ( "25%is enough" ) ) ;
82+ }
83+
84+ [ TestMethod ]
85+ public void SrcSetUnchanged ( )
86+ {
87+ var original = "something.jpg 1x" ;
88+ Assert . AreEqual ( original , EncodeSrcSetTestAccessor ( original ) ) ;
89+ }
90+
91+ [ TestMethod ]
92+ public void SrcSetUnchanged2 ( )
93+ {
94+ var original = "something.jpg?test=true 1x" ;
95+ Assert . AreEqual ( original , EncodeSrcSetTestAccessor ( original ) ) ;
96+ }
97+
98+ [ TestMethod ]
99+ public void SrcSetAmp ( )
100+ {
101+ var original = "something.jpg?x=1&y=z 1x" ;
102+ Assert . AreEqual ( original /*.Replace("&", "&")*/ , EncodeSrcSetTestAccessor ( original ) ) ;
103+ }
104+ [ TestMethod ]
105+ public void SrcSetOneLine ( )
106+ {
107+ var original = "something.jpg?x=1&y=z 1x,something.jpg?x=1&y=z 2x" ;
108+ Assert . AreEqual ( original /*.Replace("&", "&")*/ , EncodeSrcSetTestAccessor ( original ) ) ;
109+ }
110+
111+ [ TestMethod ]
112+ public void SrcSetMultiline ( )
113+ {
114+ var original = "something.jpg?x=1&y=z 1x,\n something.jpg?x=1&y=z 2x" ;
115+ Assert . AreEqual ( original /*.Replace("&", "&")*/ , EncodeSrcSetTestAccessor ( original ) ) ;
71116 }
72117 }
73118}
0 commit comments