示例#1
0
            public bool IsSameAs(MiddlewareDetail other)
            {
                var result = Object.ReferenceEquals(this, other);

                if (!result)
                {
                    result = Object.ReferenceEquals(Target, other.Target) &&
                             String.Equals(AppFuncMethodName, other.AppFuncMethodName);
                }

                return(result);
            }
示例#2
0
        public void StandardPipeline_Adds_Standard_Middleware_With_Correct_Priorities()
        {
            var actualStreamManipulators = new List <IStreamManipulator>();

            _ResponseStreamWrapper.Setup(r => r.Initialise(It.IsAny <IEnumerable <IStreamManipulator> >())).Callback((IEnumerable <IStreamManipulator> manipulators) => {
                actualStreamManipulators.AddRange(manipulators);
            });

            var webAppConfiguration = Factory.Singleton.Resolve <IWebAppConfiguration>();

            _StandardPipeline.Register(webAppConfiguration);

            var actualTargets = new List <MiddlewareDetail>();
            MiddlewareDetail targetBeforeWebApiAdded = null;
            var mockAppBuilder = TestUtilities.CreateMockInstance <IAppBuilder>();

            mockAppBuilder.Setup(r => r.Use(It.IsAny <object>(), It.IsAny <object[]>())).Callback((object middlewareAbstract, object[] parameters) => {
                if (middlewareAbstract is Func <AppFunc, AppFunc> middleware)
                {
                    actualTargets.Add(new MiddlewareDetail()
                    {
                        Target            = middleware.Target,
                        AppFuncMethodName = middleware.Method.Name,
                    });
                }
                else if ((middlewareAbstract as Type)?.FullName.StartsWith("System.Web.Http.") ?? false)
                {
                    if (targetBeforeWebApiAdded == null)
                    {
                        targetBeforeWebApiAdded = actualTargets.Count > 0 ? actualTargets[actualTargets.Count - 1] : new MiddlewareDetail();
                    }
                }
            });

            webAppConfiguration.Configure(mockAppBuilder.Object);

            // All middleware was added in correct order
            Assert.AreEqual(_ExpectedMiddleware.Count, actualTargets.Count);
            for (var i = 0; i < _ExpectedMiddleware.Count; ++i)
            {
                var expected = _ExpectedMiddleware[i];
                var actual   = actualTargets[i];
                Assert.IsTrue(expected.IsSameAs(actual), $"Expected {expected}, got {actual}");
            }

            // The web api was initialised at the right point in the chain
            Assert.IsTrue(_LastMiddlewareBeforeWebApiInit.IsSameAs(targetBeforeWebApiAdded), $"Web API should have been initialised after {_LastMiddlewareBeforeWebApiInit}, was actually after {targetBeforeWebApiAdded}");

            // The response stream wrapper was initialised correctly
            Assert.IsTrue(_ExpectedStreamManipulators.SequenceEqual(actualStreamManipulators));
        }
示例#3
0
        public void TestInitialise()
        {
            _Snapshot = Factory.TakeSnapshot();

            _ExpectedMiddleware        = new List <MiddlewareDetail>();
            _ExceptionHandler          = CreateMockMiddleware <IExceptionHandler>(nameof(IExceptionHandler.HandleRequest));
            _AccessFilter              = CreateMockMiddleware <IAccessFilter>(nameof(IAccessFilter.FilterRequest));
            _BasicAuthenticationFilter = CreateMockMiddleware <IBasicAuthenticationFilter>(nameof(IBasicAuthenticationFilter.FilterRequest));
            _RedirectionFilter         = CreateMockMiddleware <IRedirectionFilter>(nameof(IRedirectionFilter.FilterRequest));
            _CorsHandler                    = CreateMockMiddleware <ICorsHandler>(nameof(ICorsHandler.HandleRequest));
            _ResponseStreamWrapper          = CreateMockMiddleware <IResponseStreamWrapper>(nameof(IResponseStreamWrapper.WrapResponseStream));
            _LastMiddlewareBeforeWebApiInit = _ExpectedMiddleware[_ExpectedMiddleware.Count - 1];
            _BundlerServer                  = CreateMockMiddleware <IBundlerServer>(nameof(IBundlerServer.HandleRequest));
            _FileSystemServer               = CreateMockMiddleware <IFileSystemServer>(nameof(IFileSystemServer.HandleRequest));
            _ImageServer                    = CreateMockMiddleware <IImageServer>(nameof(IImageServer.HandleRequest));
            _AudioServer                    = CreateMockMiddleware <IAudioServer>(nameof(IAudioServer.HandleRequest));

            _HtmlManipulatorConfiguration = TestUtilities.CreateMockImplementation <IHtmlManipulatorConfiguration>();
            _ExpectedStreamManipulators   = new List <IStreamManipulator>();
            _JavascriptManipulator        = CreateMockStreamManipulator <IJavascriptManipulator>();
            _HtmlManipulator = CreateMockStreamManipulator <IHtmlManipulator>();

            _StandardPipeline = Factory.Singleton.Resolve <IStandardPipeline>();
        }