public void WillFlushFailuresOnFlushFailureUrlWhenAndAuthorizedUsersIsAnonymous() { var module = new RequestReduceModule(); var config = new Mock<IRRConfiguration>(); config.Setup(x => x.AuthorizedUserList).Returns(RRConfiguration.Anonymous); config.Setup(x => x.SpriteVirtualPath).Returns("/RRContent"); var context = new Mock<HttpContextBase>(); context.Setup(x => x.Request.RawUrl).Returns("/RRContent/FlushFailures"); var identity = new Mock<IIdentity>(); identity.Setup(x => x.IsAuthenticated).Returns(false); context.Setup(x => x.User.Identity).Returns(identity.Object); var queue = new Mock<IReducingQueue>(); RRContainer.Current = new Container(x => { x.For<IRRConfiguration>().Use(config.Object); x.For<IReducingQueue>().Use(queue.Object); x.For<IUriBuilder>().Use<UriBuilder>(); }); module.HandleRRFlush(context.Object); queue.Verify(x => x.ClearFailures(), Times.Once()); RRContainer.Current = null; }
public void WillSetPhysicalPathToMappedVirtualPathOnFlush() { var module = new RequestReduceModule(); var context = new Mock<HttpContextBase>(); var config = new Mock<IRRConfiguration>(); config.Setup(x => x.SpriteVirtualPath).Returns("/RRContent"); config.Setup(x => x.AuthorizedUserList).Returns(RRConfiguration.Anonymous); context.Setup(x => x.Server.MapPath("/RRContent")).Returns("physical"); context.Setup(x => x.Request.RawUrl).Returns("/RRContent/FlushFailures"); var identity = new Mock<IIdentity>(); identity.Setup(x => x.IsAuthenticated).Returns(false); context.Setup(x => x.User.Identity).Returns(identity.Object); var queue = new Mock<IReducingQueue>(); RRContainer.Current = new Container(x => { x.For<IRRConfiguration>().Use(config.Object); x.For<IReducingQueue>().Use(queue.Object); }); module.HandleRRFlush(context.Object); config.VerifySet(x => x.SpritePhysicalPath = "physical", Times.Once()); RRContainer.Current = null; }
public void WillNotFlushReductionsOnFlushUrlWhenCurrentUserIsNotAuthorizedUserAndReturn401() { var module = new RequestReduceModule(); var config = new Mock<IRRConfiguration>(); config.Setup(x => x.AuthorizedUserList).Returns(new string[] { "user1", "user2" }); config.Setup(x => x.SpriteVirtualPath).Returns("/RRContent"); var context = new Mock<HttpContextBase>(); var response = new Mock<HttpResponseBase>(); response.SetupProperty(x => x.StatusCode); context.Setup(x => x.Request.RawUrl).Returns("/RRContent/flush"); var identity = new Mock<IIdentity>(); identity.Setup(x => x.IsAuthenticated).Returns(true); identity.Setup(x => x.Name).Returns("user3"); context.Setup(x => x.User.Identity).Returns(identity.Object); context.Setup(x => x.Response).Returns(response.Object); context.Setup(x => x.Server).Returns(new Mock<HttpServerUtilityBase>().Object); var store = new Mock<IStore>(); RRContainer.Current = new Container(x => { x.For<IRRConfiguration>().Use(config.Object); x.For<IStore>().Use(store.Object); x.For<IUriBuilder>().Use<UriBuilder>(); }); module.HandleRRFlush(context.Object); store.Verify(x => x.Flush(It.IsAny<Guid>()), Times.Never()); Assert.Equal(401, response.Object.StatusCode); RRContainer.Current = null; }
public void WillNotFlushReductionsIfNotOnFlushUrl() { var module = new RequestReduceModule(); var config = new Mock<IRRConfiguration>(); config.Setup(x => x.AuthorizedUserList).Returns(RRConfiguration.Anonymous); config.Setup(x => x.SpriteVirtualPath).Returns("/RRContent"); var context = new Mock<HttpContextBase>(); context.Setup(x => x.Request.RawUrl).Returns("/RRContent/notflush"); var identity = new Mock<IIdentity>(); identity.Setup(x => x.IsAuthenticated).Returns(false); context.Setup(x => x.User.Identity).Returns(identity.Object); context.Setup(x => x.Server).Returns(new Mock<HttpServerUtilityBase>().Object); var store = new Mock<IStore>(); RRContainer.Current = new Container(x => { x.For<IRRConfiguration>().Use(config.Object); x.For<IStore>().Use(store.Object); x.For<IUriBuilder>().Use<UriBuilder>(); }); module.HandleRRFlush(context.Object); store.Verify(x => x.Flush(It.IsAny<Guid>()), Times.Never()); RRContainer.Current = null; }
public void WillFlushReductionsOnFlushUrlWithTrailingSlashWhenCurrentUserIsAuthorizedUser() { var module = new RequestReduceModule(); var config = new Mock<IRRConfiguration>(); config.Setup(x => x.AuthorizedUserList).Returns(new string[] { "user1", "user2" }); config.Setup(x => x.SpriteVirtualPath).Returns("/RRContent"); var context = new Mock<HttpContextBase>(); context.Setup(x => x.Request.RawUrl).Returns("/RRContent/flush/"); var identity = new Mock<IIdentity>(); identity.Setup(x => x.IsAuthenticated).Returns(true); identity.Setup(x => x.Name).Returns("user2"); context.Setup(x => x.User.Identity).Returns(identity.Object); context.Setup(x => x.Server).Returns(new Mock<HttpServerUtilityBase>().Object); var store = new Mock<IStore>(); RRContainer.Current = new Container(x => { x.For<IRRConfiguration>().Use(config.Object); x.For<IStore>().Use(store.Object); x.For<IUriBuilder>().Use<UriBuilder>(); }); module.HandleRRFlush(context.Object); store.Verify(x => x.Flush(Guid.Empty), Times.Once()); RRContainer.Current = null; }
public void WillFlushReductionsOnFlushUrlWhenAndAuthorizedUsersIsAnonymous(string url, string key) { var module = new RequestReduceModule(); var config = new Mock<IRRConfiguration>(); config.Setup(x => x.AuthorizedUserList).Returns(RRConfiguration.Anonymous); config.Setup(x => x.SpriteVirtualPath).Returns("/RRContent"); var context = new Mock<HttpContextBase>(); context.Setup(x => x.Request.RawUrl).Returns(url); var identity = new Mock<IIdentity>(); identity.Setup(x => x.IsAuthenticated).Returns(false); context.Setup(x => x.User.Identity).Returns(identity.Object); context.Setup(x => x.Server).Returns(new Mock<HttpServerUtilityBase>().Object); var store = new Mock<IStore>(); RRContainer.Current = new Container(x => { x.For<IRRConfiguration>().Use(config.Object); x.For<IStore>().Use(store.Object); x.For<IUriBuilder>().Use<UriBuilder>(); }); var keyGuid = Guid.Parse(key); module.HandleRRFlush(context.Object); store.Verify(x => x.Flush(keyGuid), Times.Once()); RRContainer.Current = null; }
public void WillNotFlushReductionsOnFlushUrlWhenAuthorizedUsersIsAnonymousButBlockedByIpFilterAndReturn401() { var module = new RequestReduceModule(); var config = new Mock<IRRConfiguration>(); config.Setup(x => x.AuthorizedUserList).Returns(RRConfiguration.Anonymous); config.Setup(x => x.IpFilterList).Returns(new[] { "1.2.3.4", " 3.4.5.6" }); config.Setup(x => x.SpriteVirtualPath).Returns("/RRContent"); var context = new Mock<HttpContextBase>(); var response = new Mock<HttpResponseBase>(); response.SetupProperty(x => x.StatusCode); context.Setup(x => x.Request.RawUrl).Returns("/RRContent/flush"); var identity = new Mock<IIdentity>(); identity.Setup(x => x.IsAuthenticated).Returns(false); context.Setup(x => x.User.Identity).Returns(identity.Object); context.Setup(x => x.Response).Returns(response.Object); context.Setup(x => x.Server).Returns(new Mock<HttpServerUtilityBase>().Object); context.Setup(x => x.Request.UserHostAddress).Returns("10.0.0.1"); context.Setup(x => x.Request.ServerVariables).Returns(new NameValueCollection { { "HTTP_X_FORWARDED_FOR","9.9.9.9" } }); var store = new Mock<IStore>(); RRContainer.Current = new Container(x => { x.For<IRRConfiguration>().Use(config.Object); x.For<IHostingEnvironmentWrapper>().Use(new Mock<IHostingEnvironmentWrapper>().Object); x.For<IStore>().Use(store.Object); x.For<IUriBuilder>().Use<UriBuilder>(); x.For<IIpFilter>().Use<IpFilter>(); }); module.HandleRRFlush(context.Object); store.Verify(x => x.Flush(It.IsAny<Guid>()), Times.Never()); Assert.Equal(401, response.Object.StatusCode); RRContainer.Current = null; }
public void WillFlushReductionsOnFlushUrlWhenCurrentUserIsAuthorizedUserAndEquivalentIpv6IsInIpFilter() { var module = new RequestReduceModule(); var config = new Mock<IRRConfiguration>(); config.Setup(x => x.AuthorizedUserList).Returns(new string[] { "user1", "user2" }); config.Setup(x => x.IpFilterList).Returns(new[] { "3780:0:c307:0:2c45:0:81c7:9273" }); config.Setup(x => x.SpriteVirtualPath).Returns("/RRContent"); var context = new Mock<HttpContextBase>(); context.Setup(x => x.Request.RawUrl).Returns("/RRContent/flush"); var identity = new Mock<IIdentity>(); identity.Setup(x => x.IsAuthenticated).Returns(true); identity.Setup(x => x.Name).Returns("user2"); context.Setup(x => x.User.Identity).Returns(identity.Object); context.Setup(x => x.Server).Returns(new Mock<HttpServerUtilityBase>().Object); context.Setup(x => x.Request.UserHostAddress).Returns("3780:0000:c307:0000:2c45:0000:81c7:9273"); var store = new Mock<IStore>(); RRContainer.Current = new Container(x => { x.For<IRRConfiguration>().Use(config.Object); x.For<IHostingEnvironmentWrapper>().Use(new Mock<IHostingEnvironmentWrapper>().Object); x.For<IStore>().Use(store.Object); x.For<IUriBuilder>().Use<UriBuilder>(); x.For<IIpFilter>().Use<IpFilter>(); }); module.HandleRRFlush(context.Object); store.Verify(x => x.Flush(Guid.Empty), Times.Once()); RRContainer.Current = null; }
public void WillFlushFailuresOnFlushFailureUrlWhenAndAuthorizedUsersIsAnonymousAndNull() { var module = new RequestReduceModule(); var config = new Mock<IRRConfiguration>(); config.Setup(x => x.AuthorizedUserList).Returns(RRConfiguration.Anonymous); config.Setup(x => x.SpriteVirtualPath).Returns("/RRContent"); var context = new Mock<HttpContextBase>(); context.Setup(x => x.Request.RawUrl).Returns("/RRContent/FlushFailures"); context.Setup(x => x.Server).Returns(new Mock<HttpServerUtilityBase>().Object); context.Setup(x => x.User).Returns(null as IPrincipal); var queue = new Mock<IReducingQueue>(); RRContainer.Current = new Container(x => { x.For<IRRConfiguration>().Use(config.Object); x.For<IHostingEnvironmentWrapper>().Use(new Mock<IHostingEnvironmentWrapper>().Object); x.For<IReducingQueue>().Use(queue.Object); x.For<IUriBuilder>().Use<UriBuilder>(); x.For<IIpFilter>().Use<IpFilter>(); }); module.HandleRRFlush(context.Object); queue.Verify(x => x.ClearFailures(), Times.Once()); RRContainer.Current = null; }