Summary

Class:WireMock.RequestBuilders.Request
Assembly:WireMock.Net
File(s):C:\Users\Stef\Documents\GitHub\WireMock.Net\src\WireMock.Net\RequestBuilders\Request.cs
Covered lines:86
Uncovered lines:54
Coverable lines:140
Total lines:407
Line coverage:61.4%

Metrics

MethodCyclomatic complexity  NPath complexity  Sequence coverage  Branch coverage  
Create()10100100
.ctor(...)10100100
GetRequestMessageMatchers()2000
GetRequestMessageMatcher()2000
WithPath(...)10100100
WithPath(...)10100100
WithPath(...)10100100
WithUrl(...)1000
WithUrl(...)10100100
WithUrl(...)1000
UsingGet()10100100
UsingPost()10100100
UsingPut()10100100
UsingDelete()10100100
UsingHead()10100100
UsingAnyVerb()3063.64100
UsingVerb(...)10100100
WithBody(...)10100100
WithBody(...)1000
WithBody(...)1000
WithBody(...)1000
WithBody(...)10100100
WithParam(...)10100100
WithParam(...)10100100
WithHeader(...)10100100
WithHeader(...)1000
WithHeader(...)1000
WithCookie(...)10100100
WithCookie(...)1000
WithCookie(...)1000

File(s)

C:\Users\Stef\Documents\GitHub\WireMock.Net\src\WireMock.Net\RequestBuilders\Request.cs

#LineLine coverage
 1using System;
 2using System.Collections.Generic;
 3using System.Collections.ObjectModel;
 4using System.Linq;
 5using WireMock.Matchers;
 6using WireMock.Matchers.Request;
 7using WireMock.Util;
 8using WireMock.Validation;
 9
 10namespace WireMock.RequestBuilders
 11{
 12    /// <summary>
 13    /// The requests.
 14    /// </summary>
 15    public class Request : RequestMessageCompositeMatcher, IRequestBuilder
 16    {
 17        private readonly IList<IRequestMatcher> _requestMatchers;
 18
 19        /// <summary>
 20        /// Creates this instance.
 21        /// </summary>
 22        /// <returns>The <see cref="IRequestBuilder"/>.</returns>
 23        public static IRequestBuilder Create()
 5324        {
 5325            return new Request(new List<IRequestMatcher>());
 5326        }
 27
 28        /// <summary>
 29        /// Initializes a new instance of the <see cref="Request"/> class.
 30        /// </summary>
 31        /// <param name="requestMatchers">The request matchers.</param>
 5332        private Request(IList<IRequestMatcher> requestMatchers) : base(requestMatchers)
 5333        {
 5334            _requestMatchers = requestMatchers;
 5335        }
 36
 37        /// <summary>
 38        /// Gets the request message matchers.
 39        /// </summary>
 40        /// <typeparam name="T">Type of IRequestMatcher</typeparam>
 41        /// <returns>A List{T}</returns>
 42        public IList<T> GetRequestMessageMatchers<T>() where T : IRequestMatcher
 043        {
 044            return new ReadOnlyCollection<T>(_requestMatchers.Where(rm => rm is T).Cast<T>().ToList());
 045        }
 46
 47        /// <summary>
 48        /// Gets the request message matcher.
 49        /// </summary>
 50        /// <typeparam name="T">Type of IRequestMatcher</typeparam>
 51        /// <returns>A RequestMatcher</returns>
 52        public T GetRequestMessageMatcher<T>() where T : IRequestMatcher
 053        {
 054            return _requestMatchers.Where(rm => rm is T).Cast<T>().FirstOrDefault();
 055        }
 56
 57        /// <summary>
 58        /// The with path.
 59        /// </summary>
 60        /// <param name="matchers">The matchers.</param>
 61        /// <returns>The <see cref="IRequestBuilder"/>.</returns>
 62        public IRequestBuilder WithPath(params IMatcher[] matchers)
 663        {
 664            Check.NotEmpty(matchers, nameof(matchers));
 65
 666            _requestMatchers.Add(new RequestMessagePathMatcher(matchers));
 667            return this;
 668        }
 69
 70        /// <summary>
 71        /// The with path.
 72        /// </summary>
 73        /// <param name="paths">The paths.</param>
 74        /// <returns>The <see cref="IRequestBuilder"/>.</returns>
 75        public IRequestBuilder WithPath(params string[] paths)
 2576        {
 2577            Check.NotEmpty(paths, nameof(paths));
 78
 2579            _requestMatchers.Add(new RequestMessagePathMatcher(paths));
 2580            return this;
 2581        }
 82
 83        /// <summary>
 84        /// The with path.
 85        /// </summary>
 86        /// <param name="funcs">The path func.</param>
 87        /// <returns>The <see cref="IRequestBuilder"/>.</returns>
 88        public IRequestBuilder WithPath(params Func<string, bool>[] funcs)
 189        {
 190            Check.NotEmpty(funcs, nameof(funcs));
 91
 192            _requestMatchers.Add(new RequestMessagePathMatcher(funcs));
 193            return this;
 194        }
 95
 96        /// <summary>
 97        /// The with url.
 98        /// </summary>
 99        /// <param name="matchers">The matchers.</param>
 100        /// <returns>The <see cref="IRequestBuilder"/>.</returns>
 101        public IRequestBuilder WithUrl(params IMatcher[] matchers)
 0102        {
 0103            Check.NotEmpty(matchers, nameof(matchers));
 104
 0105            _requestMatchers.Add(new RequestMessageUrlMatcher(matchers));
 0106            return this;
 0107        }
 108
 109        /// <summary>
 110        /// The with url.
 111        /// </summary>
 112        /// <param name="urls">The urls.</param>
 113        /// <returns>The <see cref="IRequestBuilder"/>.</returns>
 114        public IRequestBuilder WithUrl(params string[] urls)
 1115        {
 1116            Check.NotEmpty(urls, nameof(urls));
 117
 1118            _requestMatchers.Add(new RequestMessageUrlMatcher(urls));
 1119            return this;
 1120        }
 121
 122        /// <summary>
 123        /// The with url.
 124        /// </summary>
 125        /// <param name="funcs">The url func.</param>
 126        /// <returns>The <see cref="IRequestBuilder"/>.</returns>
 127        public IRequestBuilder WithUrl(params Func<string, bool>[] funcs)
 0128        {
 0129            Check.NotEmpty(funcs, nameof(funcs));
 130
 0131            _requestMatchers.Add(new RequestMessageUrlMatcher(funcs));
 0132            return this;
 0133        }
 134
 135        /// <summary>
 136        /// The using get.
 137        /// </summary>
 138        /// <returns>
 139        /// The <see cref="IRequestBuilder"/>.
 140        /// </returns>
 141        public IRequestBuilder UsingGet()
 12142        {
 12143            _requestMatchers.Add(new RequestMessageMethodMatcher("get"));
 12144            return this;
 12145        }
 146
 147        /// <summary>
 148        /// The using post.
 149        /// </summary>
 150        /// <returns>
 151        /// The <see cref="IRequestBuilder"/>.
 152        /// </returns>
 153        public IRequestBuilder UsingPost()
 1154        {
 1155            _requestMatchers.Add(new RequestMessageMethodMatcher("post"));
 1156            return this;
 1157        }
 158
 159        /// <summary>
 160        /// The using put.
 161        /// </summary>
 162        /// <returns>
 163        /// The <see cref="IRequestBuilder"/>.
 164        /// </returns>
 165        public IRequestBuilder UsingPut()
 3166        {
 3167            _requestMatchers.Add(new RequestMessageMethodMatcher("put"));
 3168            return this;
 3169        }
 170
 171        /// <summary>
 172        /// The using delete.
 173        /// </summary>
 174        /// <returns>
 175        /// The <see cref="IRequestBuilder"/>.
 176        /// </returns>
 177        public IRequestBuilder UsingDelete()
 1178        {
 1179            _requestMatchers.Add(new RequestMessageMethodMatcher("delete"));
 1180            return this;
 1181        }
 182
 183        /// <summary>
 184        /// The using head.
 185        /// </summary>
 186        /// <returns>The <see cref="IRequestBuilder"/>.</returns>
 187        public IRequestBuilder UsingHead()
 1188        {
 1189            _requestMatchers.Add(new RequestMessageMethodMatcher("head"));
 1190            return this;
 1191        }
 192
 193        /// <summary>
 194        /// The using any verb.
 195        /// </summary>
 196        /// <returns>
 197        /// The <see cref="IRequestBuilder"/>.
 198        /// </returns>
 199        public IRequestBuilder UsingAnyVerb()
 19200        {
 21201            var matchers = _requestMatchers.Where(m => m is RequestMessageMethodMatcher).ToList();
 57202            foreach (var matcher in matchers)
 0203            {
 0204                _requestMatchers.Remove(matcher);
 0205            }
 206
 19207            return this;
 19208        }
 209
 210        /// <summary>
 211        /// The using verb.
 212        /// </summary>
 213        /// <param name="verbs">The verbs.</param>
 214        /// <returns>The <see cref="IRequestBuilder"/>.</returns>
 215        public IRequestBuilder UsingVerb(params string[] verbs)
 4216        {
 4217            Check.NotEmpty(verbs, nameof(verbs));
 218
 4219            _requestMatchers.Add(new RequestMessageMethodMatcher(verbs));
 4220            return this;
 4221        }
 222
 223        /// <summary>
 224        /// The with body.
 225        /// </summary>
 226        /// <param name="body">
 227        /// The body.
 228        /// </param>
 229        /// <returns>The <see cref="IRequestBuilder"/>.</returns>
 230        public IRequestBuilder WithBody(string body)
 2231        {
 2232            _requestMatchers.Add(new RequestMessageBodyMatcher(body));
 2233            return this;
 2234        }
 235
 236        /// <summary>
 237        /// The with body byte[].
 238        /// </summary>
 239        /// <param name="body">
 240        /// The body as byte[].
 241        /// </param>
 242        /// <returns>The <see cref="IRequestBuilder"/>.</returns>
 243        public IRequestBuilder WithBody(byte[] body)
 0244        {
 0245            _requestMatchers.Add(new RequestMessageBodyMatcher(body));
 0246            return this;
 0247        }
 248
 249        /// <summary>
 250        /// The with body.
 251        /// </summary>
 252        /// <param name="func">
 253        /// The body function.
 254        /// </param>
 255        /// <returns>The <see cref="IRequestBuilder"/>.</returns>
 256        public IRequestBuilder WithBody(Func<string, bool> func)
 0257        {
 0258            Check.NotNull(func, nameof(func));
 259
 0260            _requestMatchers.Add(new RequestMessageBodyMatcher(func));
 0261            return this;
 0262        }
 263
 264        /// <summary>
 265        /// The with body.
 266        /// </summary>
 267        /// <param name="func">
 268        /// The body function.
 269        /// </param>
 270        /// <returns>The <see cref="IRequestBuilder"/>.</returns>
 271        public IRequestBuilder WithBody(Func<byte[], bool> func)
 0272        {
 0273            Check.NotNull(func, nameof(func));
 274
 0275            _requestMatchers.Add(new RequestMessageBodyMatcher(func));
 0276            return this;
 0277        }
 278
 279        /// <summary>
 280        /// The with body.
 281        /// </summary>
 282        /// <param name="matcher">The matcher.</param>
 283        /// <returns>The <see cref="IRequestBuilder" />.</returns>
 284        public IRequestBuilder WithBody(IMatcher matcher)
 13285        {
 13286            Check.NotNull(matcher, nameof(matcher));
 287
 13288            _requestMatchers.Add(new RequestMessageBodyMatcher(matcher));
 13289            return this;
 13290        }
 291
 292        /// <summary>
 293        /// The with parameters.
 294        /// </summary>
 295        /// <param name="key">
 296        /// The key.
 297        /// </param>
 298        /// <param name="values">
 299        /// The values.
 300        /// </param>
 301        /// <returns>The <see cref="IRequestBuilder"/>.</returns>
 302        public IRequestBuilder WithParam(string key, params string[] values)
 3303        {
 3304            Check.NotNull(key, nameof(key));
 305
 3306            _requestMatchers.Add(new RequestMessageParamMatcher(key, values));
 3307            return this;
 3308        }
 309
 310        /// <summary>
 311        /// The with parameters.
 312        /// </summary>
 313        /// <param name="funcs">The funcs.</param>
 314        /// <returns>The <see cref="IRequestBuilder"/>.</returns>
 315        public IRequestBuilder WithParam(params Func<IDictionary<string, WireMockList<string>>, bool>[] funcs)
 1316        {
 1317            Check.NotEmpty(funcs, nameof(funcs));
 318
 1319            _requestMatchers.Add(new RequestMessageParamMatcher(funcs));
 1320            return this;
 1321        }
 322
 323        /// <summary>
 324        /// With header.
 325        /// </summary>
 326        /// <param name="name">The name.</param>
 327        /// <param name="pattern">The pattern.</param>
 328        /// <param name="ignoreCase">if set to <c>true</c> [ignore case].</param>
 329        /// <returns>The <see cref="IRequestBuilder"/>.</returns>
 330        public IRequestBuilder WithHeader(string name, string pattern, bool ignoreCase = true)
 4331        {
 4332            Check.NotNull(name, nameof(name));
 4333            Check.NotNull(pattern, nameof(pattern));
 334
 4335            _requestMatchers.Add(new RequestMessageHeaderMatcher(name, pattern, ignoreCase));
 4336            return this;
 4337        }
 338
 339        /// <summary>
 340        /// With header.
 341        /// </summary>
 342        /// <param name="name">The name.</param>
 343        /// <param name="matchers">The matchers.</param>
 344        /// <returns>The <see cref="IRequestBuilder"/>.</returns>
 345        public IRequestBuilder WithHeader(string name, params IMatcher[] matchers)
 0346        {
 0347            Check.NotNull(name, nameof(name));
 0348            Check.NotEmpty(matchers, nameof(matchers));
 349
 0350            _requestMatchers.Add(new RequestMessageHeaderMatcher(name, matchers));
 0351            return this;
 0352        }
 353
 354        /// <summary>
 355        /// With header.
 356        /// </summary>
 357        /// <param name="funcs">The funcs.</param>
 358        /// <returns>The <see cref="IRequestBuilder"/>.</returns>
 359        public IRequestBuilder WithHeader(params Func<IDictionary<string, string>, bool>[] funcs)
 0360        {
 0361            Check.NotEmpty(funcs, nameof(funcs));
 362
 0363            _requestMatchers.Add(new RequestMessageHeaderMatcher(funcs));
 0364            return this;
 0365        }
 366
 367        /// <summary>
 368        /// With cookie.
 369        /// </summary>
 370        /// <param name="name">The name.</param>
 371        /// <param name="pattern">The pattern.</param>
 372        /// <param name="ignoreCase">if set to <c>true</c> [ignore case].</param>
 373        /// <returns>The <see cref="IRequestBuilder"/>.</returns>
 374        public IRequestBuilder WithCookie(string name, string pattern, bool ignoreCase = true)
 1375        {
 1376            _requestMatchers.Add(new RequestMessageCookieMatcher(name, pattern, ignoreCase));
 1377            return this;
 1378        }
 379
 380        /// <summary>
 381        /// With cookie.
 382        /// </summary>
 383        /// <param name="name">The name.</param>
 384        /// <param name="matchers">The matchers.</param>
 385        /// <returns>The <see cref="IRequestBuilder"/>.</returns>
 386        public IRequestBuilder WithCookie(string name, params IMatcher[] matchers)
 0387        {
 0388            Check.NotEmpty(matchers, nameof(matchers));
 389
 0390            _requestMatchers.Add(new RequestMessageCookieMatcher(name, matchers));
 0391            return this;
 0392        }
 393
 394        /// <summary>
 395        /// With header.
 396        /// </summary>
 397        /// <param name="funcs">The funcs.</param>
 398        /// <returns>The <see cref="IRequestBuilder"/>.</returns>
 399        public IRequestBuilder WithCookie(params Func<IDictionary<string, string>, bool>[] funcs)
 0400        {
 0401            Check.NotEmpty(funcs, nameof(funcs));
 402
 0403            _requestMatchers.Add(new RequestMessageCookieMatcher(funcs));
 0404            return this;
 0405        }
 406    }
 407}