private Guid CreatePage(PageTemplateFramework framework, out string pageUrl)
        {
            Guid pageId = Guid.Empty;

            pageUrl = string.Empty;
            var suffix = Guid.NewGuid().ToString("N");

            if (framework == PageTemplateFramework.Hybrid)
            {
                var namePrefix     = "TestPageName";
                var titlePrefix    = "TestPageTitle";
                var urlPrefix      = "test-page-url";
                var index          = 1;
                var pageOperations = new FeatherWidgets.TestUtilities.CommonOperations.PagesOperations();
                var mvcProxy       = new MvcControllerProxy()
                {
                    ControllerName = typeof(ContentBlockController).FullName, Settings = new ControllerSettings(new ContentBlockController())
                };
                pageId  = pageOperations.CreatePageWithControl(mvcProxy, namePrefix + suffix, titlePrefix + suffix, urlPrefix + suffix, index);
                pageUrl = UrlPath.ResolveAbsoluteUrl("~/" + urlPrefix + suffix + index);
            }
            else if (framework == PageTemplateFramework.Mvc)
            {
                var pagesOperations = Telerik.Sitefinity.Frontend.TestUtilities.CommonOperations.FeatherServerOperations.Pages();
                var pageManager     = PageManager.GetManager();

                var bootstrapTemplate = pageManager.GetTemplates().FirstOrDefault(t => (t.Name == "Bootstrap.default" && t.Title == "default") || t.Title == "Bootstrap.default");
                if (bootstrapTemplate == null)
                {
                    throw new ArgumentException("Bootstrap template not found");
                }

                pageId  = pagesOperations.CreatePageWithTemplate(bootstrapTemplate, "FeatherTestPageBootstrap" + suffix, "feather-test-page-bootstrap" + suffix);
                pageUrl = RouteHelper.GetAbsoluteUrl(pageManager.GetPageNode(pageId).GetFullUrl());
            }

            return(pageId);
        }
        public void Login_WithInstantLogin_VerifyLoginRedirectUrlIsCorrect()
        {
            var pageOperations = new PagesOperations();

            try
            {
                string loginStatusPageUrl = UrlPath.ResolveAbsoluteUrl("~/" + this.urlNamePrefix + this.pageIndex);
                var absoluteUrl = UrlPath.GetDomainUrl() + "/Sitefinity/Authenticate/SWT";
                var mvcProxy = new MvcControllerProxy();
                mvcProxy.ControllerName = typeof(LoginStatusController).FullName;
                var loginStatusController = new LoginStatusController();
                loginStatusController.Model.AllowWindowsStsLogin = true;
                mvcProxy.Settings = new ControllerSettings(loginStatusController);

                pageOperations.CreatePageWithControl(mvcProxy, this.pageNamePrefix, this.pageTitlePrefix, this.urlNamePrefix, this.pageIndex);
                var responseContent = PageInvoker.ExecuteWebRequest(loginStatusPageUrl);
                Assert.IsTrue(responseContent.Contains(this.GetExpectedUrlWithParams(absoluteUrl)), "Login redirect url is not as expected");
            }
            finally
            {
                pageOperations.DeletePages();
            }
        }
        public void Login_RedirectToExternalPage_VerifyLoginRedirectUrlIsCorrect()
        {
            var pageOperations = new PagesOperations();

            try
            {
                string loginStatusPageUrl = UrlPath.ResolveAbsoluteUrl("~/" + this.urlNamePrefix + this.pageIndex);
                string expectedLoginUrl = "www.telerik.com";

                var mvcProxy = new MvcControllerProxy();
                mvcProxy.ControllerName = typeof(LoginStatusController).FullName;
                var loginStatusController = new LoginStatusController();
                loginStatusController.Model.ExternalLoginUrl = expectedLoginUrl;
                mvcProxy.Settings = new ControllerSettings(loginStatusController);

                pageOperations.CreatePageWithControl(mvcProxy, this.pageNamePrefix, this.pageTitlePrefix, this.urlNamePrefix, this.pageIndex);
                var responseContent = PageInvoker.ExecuteWebRequest(loginStatusPageUrl);
                Assert.IsTrue(responseContent.Contains(expectedLoginUrl), "Login redirect url is not as expected");
            }
            finally
            {
                pageOperations.DeletePages();
            }
        }
        public void Logout_WithPageId_VerifyLogoutRedirectUrlIsCorrect()
        {
            var pageOperations = new PagesOperations();

            try
            {
                string logoutStatusPageUrl = UrlPath.ResolveAbsoluteUrl("~/" + this.urlNamePrefix + this.pageIndex);
                var basicPageOperations = new Telerik.Sitefinity.TestUtilities.CommonOperations.PagesOperations();
                var pageTitle = "Page Title1";
                var pageUrl = "PageTitle1";
                var absoluteUrl = UrlPath.GetDomainUrl() + "/" + pageUrl;
                try
                {
                    var logoutPageId = basicPageOperations.CreatePage(pageTitle, pageUrl);

                    var mvcProxy = new MvcControllerProxy();
                    mvcProxy.ControllerName = typeof(LoginStatusController).FullName;
                    var loginStatusController = new LoginStatusController();
                    loginStatusController.Model.LogoutPageId = logoutPageId;
                    mvcProxy.Settings = new ControllerSettings(loginStatusController);

                    pageOperations.CreatePageWithControl(mvcProxy, this.pageNamePrefix, this.pageTitlePrefix, this.urlNamePrefix, this.pageIndex);

                    var responseContent = PageInvoker.ExecuteWebRequest(logoutStatusPageUrl);
                    Assert.IsTrue(responseContent.Contains(HttpUtility.UrlEncode(absoluteUrl)), "Logout redirect url is not as expected");
                }
                finally
                {
                    basicPageOperations.DeleteAllPages();
                }
            }
            finally
            {
                pageOperations.DeletePages();
            }
        }