1
1
// Copyright © WireMock.Net
2
2
3
+ using System ;
3
4
using System . Threading . Tasks ;
5
+ using FluentAssertions ;
4
6
using HandlebarsDotNet ;
7
+ using HandlebarsDotNet . Helpers ;
5
8
using Moq ;
6
9
using Newtonsoft . Json . Linq ;
7
10
using NFluent ;
8
11
using WireMock . Handlers ;
9
12
using WireMock . Models ;
10
13
using WireMock . ResponseBuilders ;
11
14
using WireMock . Settings ;
15
+ using WireMock . Transformers . Handlebars ;
16
+ using WireMock . Types ;
12
17
using Xunit ;
13
18
14
19
namespace WireMock . Net . Tests . ResponseBuilders ;
15
20
16
21
public class ResponseWithHandlebarsFileTests
17
22
{
18
- private readonly WireMockServerSettings _settings = new ( ) ;
19
23
private const string ClientIp = "::1" ;
20
24
25
+ private readonly WireMockServerSettings _settings ;
21
26
private readonly Mock < IMapping > _mappingMock ;
22
27
private readonly Mock < IFileSystemHandler > _filesystemHandlerMock ;
23
28
@@ -28,7 +33,11 @@ public ResponseWithHandlebarsFileTests()
28
33
_filesystemHandlerMock = new Mock < IFileSystemHandler > ( MockBehavior . Strict ) ;
29
34
_filesystemHandlerMock . Setup ( fs => fs . ReadResponseBodyAsString ( It . IsAny < string > ( ) ) ) . Returns ( "abc" ) ;
30
35
31
- _settings . FileSystemHandler = _filesystemHandlerMock . Object ;
36
+ _settings = new ( )
37
+ {
38
+ AllowedCustomHandlebarHelpers = CustomHandlebarHelpers . File ,
39
+ FileSystemHandler = _filesystemHandlerMock . Object
40
+ } ;
32
41
}
33
42
34
43
[ Fact ]
@@ -48,7 +57,7 @@ public async Task Response_ProvideResponseAsync_Handlebars_File()
48
57
var response = await responseBuilder . ProvideResponseAsync ( _mappingMock . Object , request , _settings ) . ConfigureAwait ( false ) ;
49
58
50
59
// Assert
51
- JObject j = JObject . FromObject ( response . Message . BodyData . BodyAsJson ) ;
60
+ var j = JObject . FromObject ( response . Message . BodyData . BodyAsJson ) ;
52
61
Check . That ( j [ "Data" ] . Value < string > ( ) ) . Equals ( "abc" ) ;
53
62
54
63
// Verify
@@ -73,7 +82,7 @@ public async Task Response_ProvideResponseAsync_Handlebars_File_Replace()
73
82
var response = await responseBuilder . ProvideResponseAsync ( _mappingMock . Object , request , _settings ) . ConfigureAwait ( false ) ;
74
83
75
84
// Assert
76
- JObject j = JObject . FromObject ( response . Message . BodyData . BodyAsJson ) ;
85
+ var j = JObject . FromObject ( response . Message . BodyData . BodyAsJson ) ;
77
86
Check . That ( j [ "Data" ] . Value < string > ( ) ) . Equals ( "abc" ) ;
78
87
79
88
// Verify
@@ -101,4 +110,28 @@ public void Response_ProvideResponseAsync_Handlebars_File_WithMissingArgument_Th
101
110
_filesystemHandlerMock . Verify ( fs => fs . ReadResponseBodyAsString ( It . IsAny < string > ( ) ) , Times . Never ) ;
102
111
_filesystemHandlerMock . VerifyNoOtherCalls ( ) ;
103
112
}
113
+
114
+ [ Fact ]
115
+ public void Response_ProvideResponseAsync_Handlebars_File_NotAllowed_Throws_HandlebarsRuntimeException ( )
116
+ {
117
+ // Assign
118
+ var settings = new WireMockServerSettings
119
+ {
120
+ AllowedCustomHandlebarHelpers = CustomHandlebarHelpers . None ,
121
+ FileSystemHandler = _filesystemHandlerMock . Object
122
+ } ;
123
+ var request = new RequestMessage ( new UrlDetails ( "http://localhost:1234?id=x" ) , "GET" , ClientIp ) ;
124
+
125
+ var responseBuilder = Response . Create ( )
126
+ . Witdy ( "{{File \" {{request.query.id}}.json\" }}" )
127
+ . WithTransformer ( ) ;
128
+
129
+ // Act
130
+ Func < Task > action = ( ) => responseBuilder . ProvideResponseAsync ( _mappingMock . Object , request , settings ) ;
131
+
132
+ action . Should ( ) . ThrowAsync < HandlebarsRuntimeException > ( ) ;
133
+
134
+ // Verify
135
+ _filesystemHandlerMock . VerifyNoOtherCalls ( ) ;
136
+ }
104
137
}
0 commit comments