public static ResponseBuilder OnInvokeMethodRequest(this MockService mockService, string httpMethod, string methodPath, TestReadableStringCollection uriArguments, JObject expectedBody) { uriArguments = uriArguments ?? new TestReadableStringCollection(new Dictionary <string, string[]>()); return(mockService .OnRequest(c => c.Request.Method == httpMethod && c.Request.Path.Value.StartsWith(methodPath) && c.Request.InvokesMethodWithParameters(methodPath, uriArguments) && ((c.Request.Body.Length == 0 && expectedBody == null) || (JToken.DeepEquals(expectedBody, c.Request.Body.ToJObject()))))); }
public static ResponseBuilder OnInvokeMethodRequest(this MockService mockService, string httpMethod, string methodPath, TestReadableStringCollection uriArguments, JObject expectedBody) { uriArguments = uriArguments ?? new TestReadableStringCollection(new Dictionary<string, string[]>()); return mockService .OnRequest(c => c.Request.Method == httpMethod && c.Request.Path.Value.StartsWith(methodPath) && c.Request.InvokesMethodWithParameters(methodPath, uriArguments) && ((c.Request.Body.Length == 0 && expectedBody == null) || (JToken.DeepEquals(expectedBody, c.Request.Body.ToJObject())))); }
public static bool InvokesMethodWithParameters(this IOwinRequest request, string entityMethodPath, TestReadableStringCollection uriArguments = null) { var actualPath = request.Path.Value; if (!uriArguments.Any()) { return(actualPath.Equals(entityMethodPath) || (actualPath.Length > entityMethodPath.Length && actualPath[entityMethodPath.Length] == '/')); } var methodPathStart = entityMethodPath + "("; if (!actualPath.StartsWith(methodPathStart)) { return(false); } var argumentsStartIndex = methodPathStart.Length; var argumentsEndIndex = actualPath.IndexOf(")", argumentsStartIndex, System.StringComparison.Ordinal); if (argumentsEndIndex < 0) { return(false); } var argumentsString = actualPath.Substring(argumentsStartIndex, argumentsEndIndex - argumentsStartIndex); var argumentsArray = argumentsString.Split(','); if (argumentsArray.Length == 1) { if (uriArguments.Count() == 1 && uriArguments.First().Value.Count() == 1 && uriArguments.First().Value[0] == argumentsArray[0]) { return(true); } } var argumentsCollection = new TestReadableStringCollection(argumentsArray.Select(s => { var kv = s.Split('='); return(new Tuple <string, string>(kv[0], kv[1])); }).ToDictionary(k => k.Item1, k => new[] { k.Item2.Trim('\'') })); return(argumentsCollection.Equals(uriArguments)); }
public static bool InvokesMethodWithParameters(this IOwinRequest request, string entityMethodPath, TestReadableStringCollection uriArguments = null) { var actualPath = request.Path.Value; if (!uriArguments.Any()) return actualPath.Equals(entityMethodPath) || (actualPath.Length > entityMethodPath.Length && actualPath[entityMethodPath.Length] == '/'); var methodPathStart = entityMethodPath + "("; if (!actualPath.StartsWith(methodPathStart)) return false; var argumentsStartIndex = methodPathStart.Length; var argumentsEndIndex = actualPath.IndexOf(")", argumentsStartIndex, System.StringComparison.Ordinal); if (argumentsEndIndex < 0) return false; var argumentsString = actualPath.Substring(argumentsStartIndex, argumentsEndIndex - argumentsStartIndex); var argumentsArray = argumentsString.Split(','); if (argumentsArray.Length == 1) { if (uriArguments.Count() == 1 && uriArguments.First().Value.Count() == 1 && uriArguments.First().Value[0] == argumentsArray[0]) return true; } var argumentsCollection = new TestReadableStringCollection(argumentsArray.Select(s => { var kv = s.Split('='); return new Tuple<string, string>(kv[0], kv[1]); }).ToDictionary(k => k.Item1, k => new[] {k.Item2.Trim('\'')})); return argumentsCollection.Equals(uriArguments); }