public void RedirectWithBypassSecurityWarningAddsCorrectRefreshHeader()
        {
            // Arrange.
            const string RedirectUrl  = "https://www.somewebsite.com/admin/protected-content/?testVar=Value1&another=value-2";
            const string ExpectedUrl  = @"https://www.somewebsite.com/admin/protected-content/?testVar\x3dValue1\x26another\x3dvalue-2";
            var          mockResponse = new Mock <HttpResponseBase>();
            var          redirector   = new LocationRedirector();

            // Act.
            redirector.Redirect(mockResponse.Object, RedirectUrl, true);

            // Assert.
            mockResponse.Verify(resp => resp.AddHeader("Refresh", "0;URL=" + ExpectedUrl));
        }
        public void RedirectWithBypassSecurityWarningWritesJavascriptLocationUrl()
        {
            // Arrange.
            const string RedirectUrl  = "https://www.somewebsite.com/admin/protected-content/?testVar=Value1&another=value-2";
            const string ExpectedUrl  = @"https://www.somewebsite.com/admin/protected-content/?testVar\x3dValue1\x26another\x3dvalue-2";
            var          mockResponse = new Mock <HttpResponseBase>();
            var          redirector   = new LocationRedirector();

            // Act.
            redirector.Redirect(mockResponse.Object, RedirectUrl, true);

            // Assert.
            mockResponse.Verify(resp => resp.Write(It.Is <string>(s => s.Contains("window.location"))));
            mockResponse.Verify(resp => resp.Write(It.Is <string>(s => s.Contains(ExpectedUrl))));
        }
        public void RedirectWithoutBypassingSecurityWarningIssuesPermanentRedirect()
        {
            // Arrange.
            const string RedirectUrl  = "https://www.somewebsite.com/admin/protected-content/";
            var          mockResponse = new Mock <HttpResponseBase>();
            var          redirector   = new LocationRedirector();

            // Act.
            redirector.Redirect(mockResponse.Object, RedirectUrl, false);

            // Assert.
            mockResponse.VerifySet(resp => resp.StatusCode       = 301);
            mockResponse.VerifySet(resp => resp.RedirectLocation = RedirectUrl);
            mockResponse.Verify(resp => resp.End());
        }