Example #1
0
        public void RequestPathParts_Splits_RequestPath_Into_Chunks(string[] expected, string requestPath)
        {
            var actual = OwinPath.RequestPathParts(requestPath);

            if (expected == null)
            {
                Assert.IsNull(actual);
            }
            else
            {
                Assert.IsTrue(expected.SequenceEqual(actual));
            }
        }
Example #2
0
        public void RequestPathParts_Rebuilds_Cache_If_Path_Changes()
        {
            var environment = new MockOwinEnvironment();

            environment.RequestPath = "/a";

            var pathParts1 = OwinPath.RequestPathParts(environment.Environment, createAndUseCachedResult: true);

            environment.RequestPath = "/b";
            var pathParts2 = OwinPath.RequestPathParts(environment.Environment, createAndUseCachedResult: true);

            Assert.AreNotSame(pathParts1, pathParts2);
            Assert.AreEqual(1, pathParts2.Length);
            Assert.AreEqual("b", pathParts2[0]);
        }
Example #3
0
        private string ExtractUrlFromUncertainEnvironment(IDictionary <string, object> environment)
        {
            var result = String.Empty;

            if (environment != null)
            {
                result = OwinPath.ConstructUrlFromRoot(
                    (environment.ContainsKey(EnvironmentKey.RequestPathBase)    ? environment[EnvironmentKey.RequestPathBase] as string     : null) ?? "",
                    (environment.ContainsKey(EnvironmentKey.RequestPath)        ? environment[EnvironmentKey.RequestPath] as string         : null) ?? "",
                    (environment.ContainsKey(EnvironmentKey.RequestQueryString) ? environment[EnvironmentKey.RequestQueryString] as string  : null) ?? ""
                    );
            }

            return(result);
        }
Example #4
0
        public void RequestPathParts_Can_Cache_Result_In_Environment(bool createCacheEntry)
        {
            var environment = new MockOwinEnvironment();

            environment.RequestPath = "/a";

            var actual = OwinPath.RequestPathParts(environment.Environment, createAndUseCachedResult: createCacheEntry);

            Assert.AreEqual(1, actual.Length);
            Assert.AreEqual("a", actual[0]);

            var cacheEntry = environment.Environment[CustomEnvironmentKey.RequestPathParts] as IList <string>;

            if (createCacheEntry)
            {
                Assert.IsTrue(actual.SequenceEqual(cacheEntry));
            }
            else
            {
                Assert.IsNull(cacheEntry);
            }
        }
Example #5
0
        public void RequestPathParts_Extracts_RequestPath_From_Environment_And_Splits_Into_Chunks(string[] expected, string requestPath)
        {
            foreach (var useCache in new bool[] { true, false })
            {
                var environment = new MockOwinEnvironment();
                if (requestPath != null)
                {
                    environment.RequestPath = requestPath;
                }

                var actual = OwinPath.RequestPathParts(environment.Environment, useCache);

                if (expected == null)
                {
                    Assert.IsNull(actual);
                }
                else
                {
                    Assert.IsTrue(expected.SequenceEqual(actual));
                }
            }
        }
Example #6
0
        /// <summary>
        /// Constructs the URL to jump to.
        /// </summary>
        /// <param name="context"></param>
        /// <param name="newPath"></param>
        /// <returns></returns>
        private string BuildNewPath(OwinContext context, string newPath)
        {
            var isHttp  = String.Equals(context.RequestScheme, "http", StringComparison.OrdinalIgnoreCase);
            var isHttps = !isHttp && String.Equals(context.RequestScheme, "https", StringComparison.OrdinalIgnoreCase);

            var host = context.RequestHost ?? "";

            if (isHttp && host.EndsWith(":80"))
            {
                host = host.Substring(0, host.Length - 3);
            }
            else if (isHttps && host.EndsWith(":443"))
            {
                host = host.Substring(0, host.Length - 4);
            }

            return(OwinPath.ConstructUrl(
                       context.RequestScheme,
                       host,
                       context.RequestPathBase,
                       newPath,
                       context.RequestQueryString
                       ));
        }
Example #7
0
        public void ConstructUrlFromRoot_Returns_Correct_Values(string pathBase, string path, string queryString, string expected)
        {
            var actual = OwinPath.ConstructUrlFromRoot(pathBase, path, queryString);

            Assert.AreEqual(expected, actual);
        }
Example #8
0
        public void ConstructUrl_Returns_Correct_Values(string scheme, string host, string pathBase, string path, string queryString, string expected)
        {
            var url = OwinPath.ConstructUrl(scheme, host, pathBase, path, queryString);

            Assert.AreEqual(expected, url);
        }