示例#1
0
        public void GetPermanentUrlWithParentPermanentUrlAndRemoveInnermostReturnUrl()
        {
            string parameterName  = "Param";
            string parameterValue = "123456789 123456789 123456789 123456789 ";

            NameValueCollection queryString = new NameValueCollection();

            queryString.Add(parameterName, parameterValue);

            NameValueCollection expectedQueryString = new NameValueCollection();

            expectedQueryString.Add(queryString);

            string parentUrl = _currentHttpContext.Request.Url.AbsolutePath;

            parentUrl += UrlUtility.FormatQueryString(_currentHttpContext.Request.QueryString);
            parentUrl  = UrlUtility.DeleteParameter(parentUrl, WxeHandler.Parameters.ReturnUrl);
            expectedQueryString.Add(WxeHandler.Parameters.ReturnUrl, parentUrl);

            string expectedUrl = UrlUtility.GetAbsoluteUrl(new HttpContextWrapper(_currentHttpContext), _resource);

            expectedUrl += UrlUtility.FormatQueryString(expectedQueryString);

            string permanentUrl = _currentWxeContext.GetPermanentUrl(_functionType, queryString, true);

            Assert.That(permanentUrl, Is.Not.Null);
            Assert.That(permanentUrl, Is.EqualTo(expectedUrl));
        }
        public void GetWxeFunctionPermanentUrlWithMappedFunctionTypeAndAdditionalUrlParameters()
        {
            string resource = "~/Test.wxe";

            UrlMappingConfiguration.Current.Mappings.Add(new UrlMappingEntry(_functionType, resource));
            string parameter1 = "Value1";

            NameValueCollection additionalUrlParameters = new NameValueCollection();

            additionalUrlParameters.Add("Parameter2", "Value2");

            string expectedUrl = resource.TrimStart('~');
            NameValueCollection expectedQueryString = new NameValueCollection();

            expectedQueryString.Add("Parameter1", parameter1);
            expectedQueryString.Add(WxeHandler.Parameters.WxeReturnToSelf, true.ToString());
            expectedQueryString.Add(additionalUrlParameters);
            expectedUrl += UrlUtility.FormatQueryString(expectedQueryString);

            NavigationCommand command = new NavigationCommand();

            command.Type = CommandType.WxeFunction;
            command.WxeFunctionCommand.TypeName   = _functionTypeName;
            command.WxeFunctionCommand.Parameters = "\"" + parameter1 + "\"";
            string url = command.GetWxeFunctionPermanentUrl(additionalUrlParameters);

            Assert.That(url, Is.Not.Null);
            Assert.That(url, Is.EqualTo(expectedUrl));
        }
        public void GetWxeFunctionPermanentUrlWithDefaultWxeHandlerAndAdditionalUrlParameters()
        {
            WebConfigurationMock.Current = WebConfigurationFactory.GetExecutionEngineWithDefaultWxeHandler();

            string wxeHandler = Remotion.Web.Configuration.WebConfiguration.Current.ExecutionEngine.DefaultWxeHandler;

            NameValueCollection additionalUrlParameters = new NameValueCollection();

            additionalUrlParameters.Add("Parameter2", "Value2");

            string expectedUrl = wxeHandler.TrimStart('~');
            NameValueCollection expectedQueryString = new NameValueCollection();

            expectedQueryString.Add("Parameter1", _wxeFunctionParameter1Value);
            expectedQueryString.Add(WxeHandler.Parameters.WxeReturnToSelf, true.ToString());
            expectedQueryString.Add(additionalUrlParameters);
            expectedQueryString.Add(WxeHandler.Parameters.WxeFunctionType, _functionTypeName);
            expectedUrl += UrlUtility.FormatQueryString(expectedQueryString);

            NavigationCommand command = new NavigationCommand();

            command.Type = CommandType.WxeFunction;
            command.WxeFunctionCommand.TypeName   = _functionTypeName;
            command.WxeFunctionCommand.Parameters = _wxeFunctionParameters;
            string url = command.GetWxeFunctionPermanentUrl(additionalUrlParameters);

            Assert.That(url, Is.Not.Null);
            Assert.That(url, Is.EqualTo(expectedUrl));
        }
        public void FormatQueryStringNoParameters()
        {
            NameValueCollection queryString = new NameValueCollection();
            string expected = string.Empty;

            string actual = UrlUtility.FormatQueryString(queryString, _currentEncoding);

            Assert.That(actual, Is.EqualTo(expected));
        }
示例#5
0
        public void GetStaticPermanentUrlWithDefaultWxeHandlerWithoutMappingForFunctionType()
        {
            WebConfigurationMock.Current = WebConfigurationFactory.GetExecutionEngineWithDefaultWxeHandler();
            Remotion.Web.ExecutionEngine.UrlMapping.UrlMappingConfiguration.SetCurrent(null);

            string wxeHandler  = Remotion.Web.Configuration.WebConfiguration.Current.ExecutionEngine.DefaultWxeHandler;
            string expectedUrl = UrlUtility.GetAbsoluteUrl(new HttpContextWrapper(_currentHttpContext), wxeHandler);
            NameValueCollection expectedQueryString = new NameValueCollection();

            expectedQueryString.Add(WxeHandler.Parameters.WxeFunctionType, _functionTypeName);
            expectedUrl += UrlUtility.FormatQueryString(expectedQueryString);

            string permanentUrl = WxeContext.GetPermanentUrl(new HttpContextWrapper(_currentHttpContext), _functionType, new NameValueCollection());

            Assert.That(permanentUrl, Is.Not.Null);
            Assert.That(permanentUrl, Is.EqualTo(expectedUrl));
        }
示例#6
0
        public void GetPermanentUrlWithQueryString()
        {
            string parameterName  = "Param";
            string parameterValue = "Hello World!";

            NameValueCollection queryString = new NameValueCollection();

            queryString.Add(parameterName, parameterValue);

            NameValueCollection expectedQueryString = new NameValueCollection();

            expectedQueryString.Add(queryString);
            string expectedUrl = UrlUtility.GetAbsoluteUrl(new HttpContextWrapper(_currentHttpContext), _resource);

            expectedUrl += UrlUtility.FormatQueryString(expectedQueryString);

            string permanentUrl = _currentWxeContext.GetPermanentUrl(_functionType, queryString, false);

            Assert.That(permanentUrl, Is.Not.Null);
            Assert.That(permanentUrl, Is.EqualTo(expectedUrl));
        }
        public void FormatQueryString()
        {
            string parameter1 = "Parameter1";
            string parameter2 = "Parameter2";
            string value1     = "Value1ä#";
            string value2     = "Value2";

            NameValueCollection queryString = new NameValueCollection();

            queryString.Add(parameter1, value1);
            queryString.Add(parameter2, value2);

            string expected = string.Format(
                "?{0}={1}&{2}={3}",
                parameter1,
                HttpUtility.UrlEncode(value1, _currentEncoding),
                parameter2,
                HttpUtility.UrlEncode(value2, _currentEncoding));

            string actual = UrlUtility.FormatQueryString(queryString, _currentEncoding);

            Assert.That(actual, Is.EqualTo(expected));
        }
示例#8
0
        /// <summary>
        ///   Gets the permanent URL for the <see cref="WxeFunction"/> of the specified <paramref name="functionType"/>
        ///   and using the <paramref name="urlParameters"/>.
        /// </summary>
        /// <include file='..\doc\include\ExecutionEngine\WxeContext.xml' path='WxeContext/GetPermanentUrl/param[@name="httpContext" or @name="functionType" or @name="urlParameters" or @name="fallbackOnCurrentUrl"]' />
        protected static string GetPermanentUrl(HttpContextBase httpContext, Type functionType, NameValueCollection urlParameters, bool fallbackOnCurrentUrl)
        {
            ArgumentUtility.CheckNotNull("httpContext", httpContext);
            ArgumentUtility.CheckNotNull("functionType", functionType);
            if (!typeof(WxeFunction).IsAssignableFrom(functionType))
            {
                throw new ArgumentException(string.Format("The functionType '{0}' must be derived from WxeFunction.", functionType), "functionType");
            }
            ArgumentUtility.CheckNotNull("urlParameters", urlParameters);

            NameValueCollection internalUrlParameters = NameValueCollectionUtility.Clone(urlParameters);

            UrlMapping.UrlMappingEntry mappingEntry = UrlMapping.UrlMappingConfiguration.Current.Mappings[functionType];
            if (mappingEntry == null)
            {
                string functionTypeName = WebTypeUtility.GetQualifiedName(functionType);
                internalUrlParameters.Set(WxeHandler.Parameters.WxeFunctionType, functionTypeName);
            }

            string path;

            if (mappingEntry == null)
            {
                string defaultWxeHandler = Configuration.WebConfiguration.Current.ExecutionEngine.DefaultWxeHandler;
                if (string.IsNullOrEmpty(defaultWxeHandler))
                {
                    if (fallbackOnCurrentUrl)
                    {
                        path = httpContext.Request.Url.AbsolutePath;
                    }
                    else
                    {
                        throw new WxeException(
                                  string.Format(
                                      "No URL mapping has been defined for WXE Function '{0}', nor has a default WxeHandler URL been specified in the application configuration (web.config).",
                                      functionType.FullName));
                    }
                }
                else
                {
                    path = defaultWxeHandler;
                }
            }
            else
            {
                path = mappingEntry.Resource;
            }

            string permanentUrl = UrlUtility.GetAbsoluteUrl(httpContext, path)
                                  + UrlUtility.FormatQueryString(internalUrlParameters, httpContext.Response.ContentEncoding);

            int maxLength = Configuration.WebConfiguration.Current.ExecutionEngine.MaximumUrlLength;

            if (permanentUrl.Length > maxLength)
            {
                throw new WxePermanentUrlTooLongException(
                          string.Format(
                              "Error while creating the permanent URL for WXE function '{0}'. "
                              + "The URL exceeds the maximum length of {1} bytes. Generated URL: {2}",
                              functionType.Name,
                              maxLength,
                              permanentUrl));
            }

            return(permanentUrl);
        }