public void TestPipelineExitsWithMissingContext()
        {
            var builder = new Mock <HeadlessRequestUrlRewriteProcessor>();

            builder.Setup(p => p.ExecuteRewrite(It.IsAny <HttpContextBase>(), It.IsAny <string>()))
            .Throws(new AssertFailedException("The ExecuteRewrite method should not be called"));

            var processor = new HeadlessRequestUrlRewriteProcessor();

            processor.Process(null);
        }
        public void TestProcessorWillNotModifyRequestThatAreNotForHeadless()
        {
            var uri         = new Uri("https://www.xfinity.com/buy/home/page1/en.json");
            var requestMock = new Mock <HttpRequestBase>();

            requestMock.Setup(r => r.Url).Returns(uri);
            var contextMock = new Mock <HttpContextBase>();
            var items       = new Dictionary <string, object>();

            contextMock.SetupGet(c => c.Items).Returns(items);
            contextMock.Setup(c => c.Request).Returns(requestMock.Object);
            contextMock.Setup(c => c.RewritePath(It.IsAny <string>()))
            .Throws(new AssertFailedException("RewritePath was called unexpectedly"));

            var context   = contextMock.Object;
            var processor = new HeadlessRequestUrlRewriteProcessor();

            processor.ExecuteRewrite(context, ModuleInfo.RoutePrefix.TrimEnd('/'));

            Assert.IsFalse(context.IsHeadless());
        }
        public void TestCanWriteValidRequest()
        {
            var uri         = new Uri($"https://www.xfinity.com{ ModuleInfo.RoutePrefix }buy/home/page1/en.json");
            var requestMock = new Mock <HttpRequestBase>();

            requestMock.Setup(r => r.Url).Returns(uri);
            var contextMock = new Mock <HttpContextBase>();
            var items       = new Dictionary <string, object>();

            contextMock.SetupGet(c => c.Items).Returns(items);
            contextMock.Setup(c => c.Request).Returns(requestMock.Object);
            contextMock.Setup(c => c.RewritePath(It.Is <string>(s =>
                                                                MatchesExpected(s, ModuleInfo.RoutePrefix.TrimEnd('/'), "buy", "/home/page1", "en")
                                                                ))).Verifiable("The RewritePath method was never called with the expected URL.");

            var context   = contextMock.Object;
            var processor = new HeadlessRequestUrlRewriteProcessor();

            processor.ExecuteRewrite(context, ModuleInfo.RoutePrefix.TrimEnd('/'));

            contextMock.Verify();
            Assert.IsTrue(context.IsHeadless());
        }