@@ -42,9 +42,9 @@ private Guid ConvertMappingAndRegisterAsRespondProvider(MappingModel mappingMode
42
42
Guard . NotNull ( mappingModel . Request ) ;
43
43
Guard . NotNull ( mappingModel . Response ) ;
44
44
45
- var requestBuilder = InitRequestBuilder ( mappingModel . Request ) ;
45
+ var request = ( Request ) InitRequestBuilder ( mappingModel . Request , mappingModel ) ;
46
46
47
- var respondProvider = Given ( requestBuilder , mappingModel . SaveToFile == true ) ;
47
+ var respondProvider = Given ( request , mappingModel . SaveToFile == true ) ;
48
48
49
49
if ( guid != null )
50
50
{
@@ -116,6 +116,7 @@ private Guid ConvertMappingAndRegisterAsRespondProvider(MappingModel mappingMode
116
116
respondProvider . WithProbability ( mappingModel . Probability . Value ) ;
117
117
}
118
118
119
+ // ProtoDefinition is defined at Mapping level
119
120
if ( mappingModel . ProtoDefinition != null )
120
121
{
121
122
respondProvider . WithProtoDefinition ( mappingModel . ProtoDefinition ) ;
@@ -131,7 +132,7 @@ private Guid ConvertMappingAndRegisterAsRespondProvider(MappingModel mappingMode
131
132
return respondProvider . Guid ;
132
133
}
133
134
134
- private IRequestBuilder InitRequestBuilder ( RequestModel requestModel )
135
+ private IRequestBuilder InitRequestBuilder ( RequestModel requestModel , MappingModel ? mappingModel = null )
135
136
{
136
137
var requestBuilder = Request . Create ( ) ;
137
138
@@ -225,7 +226,7 @@ private IRequestBuilder InitRequestBuilder(RequestModel requestModel)
225
226
226
227
if ( requestModel . Params != null )
227
228
{
228
- foreach ( var paramModel in requestModel . Params . Where ( p => p is { Matchers : { } } ) )
229
+ foreach ( var paramModel in requestModel . Params . Where ( p => p is { Matchers : not null } ) )
229
230
{
230
231
var ignoreCase = paramModel . IgnoreCase == true ;
231
232
requestBuilder = requestBuilder . WithParam ( paramModel . Name , ignoreCase , paramModel . Matchers ! . Select ( _matcherMapper . Map ) . OfType < IStringMatcher > ( ) . ToArray ( ) ) ;
@@ -234,7 +235,15 @@ private IRequestBuilder InitRequestBuilder(RequestModel requestModel)
234
235
235
236
if ( requestModel . Body ? . Matcher != null )
236
237
{
237
- requestBuilder = requestBuilder . WithBody ( _matcherMapper . Map ( requestModel . Body . Matcher ) ! ) ;
238
+ var bodyMatcher = _matcherMapper . Map ( requestModel . Body . Matcher ) ! ;
239
+ #if PROTOBUF
240
+ // If the BodyMatcher is a ProtoBufMatcher, and if ProtoDefinition is defined on Mapping-level, set the ProtoDefinition from that Mapping.
241
+ if ( bodyMatcher is ProtoBufMatcher protoBufMatcher && mappingModel ? . ProtoDefinition != null )
242
+ {
243
+ protoBufMatcher . ProtoDefinition = ( ) => ProtoDefinitionHelper . GetIdOrTexts ( _settings , mappingModel . ProtoDefinition ) ;
244
+ }
245
+ #endif
246
+ requestBuilder = requestBuilder . WithBody ( bodyMatcher ) ;
238
247
}
239
248
else if ( requestModel . Body ? . Matchers != null )
240
249
{
@@ -317,7 +326,7 @@ private static IResponseBuilder InitResponseBuilder(ResponseModel responseModel)
317
326
}
318
327
else if ( responseModel . HeadersRaw != null )
319
328
{
320
- foreach ( string headerLine in responseModel . HeadersRaw . Split ( [ "\n " , "\r \n " ] , StringSplitOptions . RemoveEmptyEntries ) )
329
+ foreach ( var headerLine in responseModel . HeadersRaw . Split ( [ "\n " , "\r \n " ] , StringSplitOptions . RemoveEmptyEntries ) )
321
330
{
322
331
int indexColon = headerLine . IndexOf ( ":" , StringComparison . Ordinal ) ;
323
332
string key = headerLine . Substring ( 0 , indexColon ) . TrimStart ( ' ' , '\t ' ) ;
@@ -364,6 +373,7 @@ private static IResponseBuilder InitResponseBuilder(ResponseModel responseModel)
364
373
}
365
374
else
366
375
{
376
+ // ProtoDefinition(s) is/are defined at Mapping/Server level
367
377
responseBuilder = responseBuilder . WithBodyAsProtoBuf ( responseModel . ProtoBufMessageType , responseModel . BodyAsJson ) ;
368
378
}
369
379
}
0 commit comments