Esempio n. 1
0
        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())))));
        }
Esempio n. 2
0
        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()))));
        }
Esempio n. 3
0
        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));
        }
Esempio n. 4
0
        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);
        }