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)); }
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)); }
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)); }
/// <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); }