Exemple #1
0
        public void Test_SubFunction_ReEntrancy()
        {
            WxeContextMock.SetCurrent(_wxeContext);

            using (_mockRepository.Ordered())
            {
                using (_mockRepository.Unordered())
                {
                    _pageMock.Expect(mock => mock.GetPostBackCollection()).Return(_postBackCollection);
                    _pageMock.Expect(mock => mock.SaveAllState());
                    _pageMock.Expect(mock => mock.WxeHandler).Return(_wxeHandler);
                }

                _subFunction.Expect(mock => mock.Execute(_wxeContext)).WhenCalled(invocation => Thread.CurrentThread.Abort());

                _subFunction.Expect(mock => mock.Execute(_wxeContext));

                _pageExecutorMock.Expect(mock => mock.ExecutePage(_wxeContext, "~/ThePage", true));
            }

            _mockRepository.ReplayAll();

            try
            {
                WxePermaUrlOptions permaUrlOptions = WxePermaUrlOptions.Null;
                WxeRepostOptions   repostOptions   = WxeRepostOptions.DoRepost(null);
                _pageStep.ExecuteFunction(new PreProcessingSubFunctionStateParameters(_pageMock, _subFunction, permaUrlOptions), repostOptions);
                Assert.Fail();
            }
            catch (ThreadAbortException)
            {
                Thread.ResetAbort();
            }
            _pageStep.Execute();

            _mockRepository.VerifyAll();
        }
Exemple #2
0
        public void Test_SubFunction_RedirectToPermaUrl()
        {
            WxeContextMock.SetCurrent(_wxeContext);
            Uri uri = new Uri("http://localhost/root.wxe");

            HttpResponseBase responseMock = _mockRepository.StrictMock <HttpResponseBase>();

            responseMock.Stub(stub => stub.ApplyAppPathModifier("~/sub.wxe")).Return("/session/sub.wxe").Repeat.Any();
            responseMock.Stub(stub => stub.ApplyAppPathModifier("/session/sub.wxe")).Return("/session/sub.wxe").Repeat.Any();
            responseMock.Stub(stub => stub.ApplyAppPathModifier("/root.wxe")).Return("/session/root.wxe").Repeat.Any();
            responseMock.Stub(stub => stub.ApplyAppPathModifier("/session/root.wxe")).Return("/session/root.wxe").Repeat.Any();
            responseMock.Stub(stub => stub.ContentEncoding).Return(Encoding.Default).Repeat.Any();
            _httpContextMock.Stub(stub => stub.Response).Return(responseMock).Repeat.Any();

            HttpRequestBase requestMock = _mockRepository.StrictMock <HttpRequestBase>();

            requestMock.Stub(stub => stub.Url).Return(uri).Repeat.Any();
            _httpContextMock.Stub(stub => stub.Request).Return(requestMock).Repeat.Any();

            using (_mockRepository.Ordered())
            {
                using (_mockRepository.Unordered())
                {
                    _pageMock.Expect(mock => mock.GetPostBackCollection()).Return(_postBackCollection);
                    _pageMock.Expect(mock => mock.SaveAllState());
                    _pageMock.Expect(mock => mock.WxeHandler).Return(_wxeHandler);
                }

                //Redirect to subfunction
                responseMock.Expect(mock => mock.Redirect("/session/sub.wxe?WxeFunctionToken=" + _wxeContext.FunctionToken))
                .WhenCalled(invocation => Thread.CurrentThread.Abort());

                //Show sub function
                _subFunction.Expect(mock => mock.Execute(_wxeContext)).WhenCalled(invocation => Thread.CurrentThread.Abort());

                //Return from sub function
                _subFunction.Expect(mock => mock.Execute(_wxeContext)).Throw(new WxeExecuteNextStepException());

                //Return from sub function
                responseMock.Expect(mock => mock.Redirect("/session/root.wxe?WxeFunctionToken=" + _wxeContext.FunctionToken))
                .WhenCalled(
                    invocation =>
                {
                    PrivateInvoke.SetNonPublicField(_functionState, "_postBackID", 100);
                    _pageStep.SetPostBackCollection(new NameValueCollection());
                    Thread.CurrentThread.Abort();
                });

                _pageExecutorMock.Expect(mock => mock.ExecutePage(_wxeContext, "~/ThePage", true)).WhenCalled(
                    invocation =>
                {
                    Assert.That(((IExecutionStateContext)_pageStep).ExecutionState, Is.SameAs(NullExecutionState.Null));
                    Assert.That(_pageStep.PostBackCollection[WxePageInfo.PostBackSequenceNumberID], Is.EqualTo("100"));
                    Assert.That(_pageStep.PostBackCollection.AllKeys, Has.Member("Key"));
                    Assert.That(_pageStep.ReturningFunction, Is.SameAs(_subFunction));
                    Assert.That(_pageStep.IsReturningPostBack, Is.True);
                });
            }

            _mockRepository.ReplayAll();

            WxePermaUrlOptions permaUrlOptions = new WxePermaUrlOptions();

            try
            {
                //Redirect to subfunction
                WxeRepostOptions repostOptions = WxeRepostOptions.DoRepost(null);
                _pageStep.ExecuteFunction(new PreProcessingSubFunctionStateParameters(_pageMock, _subFunction, permaUrlOptions), repostOptions);
                Assert.Fail();
            }
            catch (ThreadAbortException)
            {
                Thread.ResetAbort();
            }

            try
            {
                //Show sub function
                _pageStep.Execute();
                Assert.Fail();
            }
            catch (ThreadAbortException)
            {
                Thread.ResetAbort();
            }

            try
            {
                //Return from sub function
                _pageStep.Execute();
                Assert.Fail();
            }
            catch (WxeExecuteNextStepException)
            {
            }

            try
            {
                //Return from sub function
                _pageStep.Execute();
                Assert.Fail();
            }
            catch (ThreadAbortException)
            {
                Thread.ResetAbort();
            }

            //Show current page
            _pageStep.Execute();

            _mockRepository.VerifyAll();
        }
 public virtual void SetUp()
 {
     _context          = new WxeContextMock(WxeContextMock.CreateHttpContext());
     _transactionScope = new TransactionScope();
 }