public void GetStaticPermanentUrlWithEmptyQueryString() { string expectedUrl = UrlUtility.GetAbsoluteUrl(new HttpContextWrapper(_currentHttpContext), _resource); string permanentUrl = WxeContext.GetPermanentUrl(new HttpContextWrapper(_currentHttpContext), _functionType, new NameValueCollection()); Assert.That(permanentUrl, Is.Not.Null); Assert.That(permanentUrl, Is.EqualTo(expectedUrl)); }
public void GetStaticPermanentUrlWithDefaultWxeHandlerForMappedFunctionType() { WebConfigurationMock.Current = WebConfigurationFactory.GetExecutionEngineWithDefaultWxeHandler(); string expectedUrl = UrlUtility.GetAbsoluteUrl(new HttpContextWrapper(_currentHttpContext), _resource); string permanentUrl = WxeContext.GetPermanentUrl(new HttpContextWrapper(_currentHttpContext), _functionType, new NameValueCollection()); Assert.That(permanentUrl, Is.Not.Null); Assert.That(permanentUrl, Is.EqualTo(expectedUrl)); }
public void GetStaticPermanentUrlWithQueryStringExceedingMaxLength() { string parameterName = "Param"; string parameterValue = "123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 "; NameValueCollection queryString = new NameValueCollection(); queryString.Add(parameterName, parameterValue); WxeContext.GetPermanentUrl(new HttpContextWrapper(_currentHttpContext), _functionType, queryString); }
private string GetDestinationPermanentUrl(WxeContext context) { NameValueCollection urlParameters; if (Parameters.PermaUrlOptions.UrlParameters == null) { urlParameters = Parameters.SubFunction.VariablesContainer.SerializeParametersForQueryString(); } else { urlParameters = Parameters.PermaUrlOptions.UrlParameters.Clone(); } urlParameters.Set(WxeHandler.Parameters.WxeFunctionToken, context.FunctionToken); return(context.GetPermanentUrl(Parameters.SubFunction.GetType(), urlParameters, Parameters.PermaUrlOptions.UseParentPermaUrl)); }
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 override void ExecuteSubFunction(WxeContext context) { ArgumentUtility.CheckNotNull("context", context); string functionToken = context.GetFunctionTokenForExternalFunction(Parameters.SubFunction, _returnOptions.IsReturning); string destinationUrl = context.GetDestinationUrlForExternalFunction(Parameters.SubFunction, functionToken, Parameters.PermaUrlOptions); if (_returnOptions.IsReturning) { NameValueCollection callerUrlParameters = _returnOptions.CallerUrlParameters.Clone(); callerUrlParameters.Set(WxeHandler.Parameters.WxeFunctionToken, context.FunctionToken); Parameters.SubFunction.ReturnUrl = context.GetPermanentUrl(ExecutionStateContext.CurrentFunction.GetType(), callerUrlParameters); } ExecutionStateContext.SetExecutionState( new RedirectingToSubFunctionState( ExecutionStateContext, new RedirectingToSubFunctionStateParameters(Parameters.SubFunction, Parameters.PostBackCollection, destinationUrl))); }
public void GetStaticPermanentUrlWithQueryString() { 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 = WxeContext.GetPermanentUrl(new HttpContextWrapper(_currentHttpContext), _functionType, queryString); Assert.That(permanentUrl, Is.Not.Null); Assert.That(permanentUrl, Is.EqualTo(expectedUrl)); }
/// <summary> /// Gets the permanent URL for the <see cref="WxeFunction"/> defined by the /// <see cref="Command.WxeFunctionCommandInfo"/>. /// </summary> /// <param name="additionalUrlParameters"> /// The <see cref="NameValueCollection"/> containing additional url parameters. /// Must not be <see langword="null"/>. /// </param> /// <exception cref="InvalidOperationException"> /// <para> /// Thrown if called while the <see cref="Type"/> is not set to <see cref="CommandType.WxeFunction"/>. /// </para><para> /// Thrown if neither the <see cref="Command.WxeFunctionCommandInfo.MappingID"/> nor the /// <see cref="Command.WxeFunctionCommandInfo.TypeName"/> are set. /// </para><para> /// Thrown if the <see cref="Command.WxeFunctionCommandInfo.MappingID"/> and /// <see cref="Command.WxeFunctionCommandInfo.TypeName"/> specify different functions. /// </para> /// </exception> public virtual string GetWxeFunctionPermanentUrl(NameValueCollection additionalUrlParameters) { ArgumentUtility.CheckNotNull("additionalUrlParameters", additionalUrlParameters); if (Type != CommandType.WxeFunction) { throw new InvalidOperationException("Call to ExecuteWxeFunction not allowed unless Type is set to CommandType.WxeFunction."); } Type functionType = WxeFunctionCommand.ResolveFunctionType(); WxeParameterDeclaration[] parameterDeclarations = WxeVariablesContainer.GetParameterDeclarations(functionType); object[] parameterValues = WxeVariablesContainer.ParseActualParameters( parameterDeclarations, WxeFunctionCommand.Parameters, CultureInfo.InvariantCulture); NameValueCollection queryString = WxeVariablesContainer.SerializeParametersForQueryString(parameterDeclarations, parameterValues); queryString.Set(WxeHandler.Parameters.WxeReturnToSelf, true.ToString()); NameValueCollectionUtility.Append(queryString, additionalUrlParameters); return(WxeContext.GetPermanentUrl(new HttpContextWrapper(HttpContext.Current), functionType, queryString)); }
public void GetStaticPermanentUrlWithoutWxeHandler() { WebConfigurationMock.Current = null; Remotion.Web.ExecutionEngine.UrlMapping.UrlMappingConfiguration.SetCurrent(null); WxeContext.GetPermanentUrl(new HttpContextWrapper(_currentHttpContext), _functionType, new NameValueCollection()); }