1+ using  System . Globalization ; 
2+ using  Moq ; 
3+ using  WireMock . Handlers ; 
4+ using  WireMock . Proxy ; 
5+ using  WireMock . Settings ; 
6+ using  WireMock . Types ; 
7+ using  Xunit ; 
8+ 
9+ namespace  WireMock . Net . Tests . Proxy ; 
10+ 
11+ public  class  ProxyUrlTransformerTests 
12+ { 
13+     private  readonly  Mock < IFileSystemHandler >  _fileSystemHandlerMock  =  new ( ) ; 
14+ 
15+     [ Fact ] 
16+     public  void  Transform_WithUseTransformerFalse_PerformsSimpleReplace_CaseSensitive ( ) 
17+     { 
18+         // Arrange 
19+         var  settings  =  new  WireMockServerSettings 
20+         { 
21+             FileSystemHandler  =  _fileSystemHandlerMock . Object , 
22+             Culture  =  CultureInfo . InvariantCulture 
23+         } ; 
24+ 
25+         var  replaceSettings  =  new  ProxyUrlReplaceSettings 
26+         { 
27+             TransformTemplate  =  null , 
28+             OldValue  =  "/old" , 
29+             NewValue  =  "/new" , 
30+             IgnoreCase  =  false 
31+         } ; 
32+ 
33+         var  url  =  "http://example.com/old/path" ; 
34+         var  expected  =  "http://example.com/new/path" ; 
35+ 
36+         // Act 
37+         var  actual  =  ProxyUrlTransformer . Transform ( settings ,  replaceSettings ,  url ) ; 
38+ 
39+         // Assert 
40+         Assert . Equal ( expected ,  actual ) ; 
41+     } 
42+ 
43+     [ Fact ] 
44+     public  void  Transform_WithUseTransformerFalse_PerformsSimpleReplace_IgnoreCase ( ) 
45+     { 
46+         // Arrange 
47+         var  settings  =  new  WireMockServerSettings 
48+         { 
49+             FileSystemHandler  =  _fileSystemHandlerMock . Object , 
50+             Culture  =  CultureInfo . InvariantCulture 
51+         } ; 
52+ 
53+         var  replaceSettings  =  new  ProxyUrlReplaceSettings 
54+         { 
55+             TransformTemplate  =  null ,  // UseTransformer == false 
56+             OldValue  =  "/OLD" , 
57+             NewValue  =  "/new" , 
58+             IgnoreCase  =  true 
59+         } ; 
60+ 
61+         var  url  =  "http://example.com/old/path" ;  // lowercase 'old' but OldValue is uppercase 
62+         var  expected  =  "http://example.com/new/path" ; 
63+ 
64+         // Act 
65+         var  actual  =  ProxyUrlTransformer . Transform ( settings ,  replaceSettings ,  url ) ; 
66+ 
67+         // Assert 
68+         Assert . Equal ( expected ,  actual ) ; 
69+     } 
70+ 
71+     [ Fact ] 
72+     public  void  Transform_WithUseTransformerTrue_UsesTransformer_ToTransformUrl ( ) 
73+     { 
74+         // Arrange 
75+         var  settings  =  new  WireMockServerSettings 
76+         { 
77+             FileSystemHandler  =  _fileSystemHandlerMock . Object , 
78+             Culture  =  CultureInfo . InvariantCulture 
79+         } ; 
80+ 
81+         // Handlebars is the default TransformerType; the TransformTemplate uses the model directly. 
82+         var  replaceSettings  =  new  ProxyUrlReplaceSettings 
83+         { 
84+             TransformTemplate  =  "{{this}}-transformed" , 
85+             // TransformerType defaults to Handlebars but set explicitly for clarity. 
86+             TransformerType  =  TransformerType . Handlebars 
87+         } ; 
88+ 
89+         var  url  =  "http://example.com/path" ; 
90+         var  expected  =  "http://example.com/path-transformed" ; 
91+ 
92+         // Act 
93+         var  actual  =  ProxyUrlTransformer . Transform ( settings ,  replaceSettings ,  url ) ; 
94+ 
95+         // Assert 
96+         Assert . Equal ( expected ,  actual ) ; 
97+     } 
98+ } 
0 commit comments