示例#1
0
        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));
        }
示例#2
0
        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));
        }
示例#3
0
        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);
        }
示例#4
0
        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));
        }
示例#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));
        }
        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)));
        }
示例#7
0
        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));
        }
示例#8
0
        /// <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));
        }
示例#9
0
 public void GetStaticPermanentUrlWithoutWxeHandler()
 {
     WebConfigurationMock.Current = null;
     Remotion.Web.ExecutionEngine.UrlMapping.UrlMappingConfiguration.SetCurrent(null);
     WxeContext.GetPermanentUrl(new HttpContextWrapper(_currentHttpContext), _functionType, new NameValueCollection());
 }