Beispiel #1
0
        public void RepoAdminCannotRemoveThemselves()
        {
            var user = ITH.CreateUsers().Single();

            var repoId = ITH.CreateRepositoryOnWebInterface(ITH.MakeName());

            app.NavigateTo <RepositoryController>(c => c.Edit(repoId));
            var form = app.FindFormFor <RepositoryDetailModel>();

            // Set User0 to be admin for this repo
            var adminBox =
                form.WebApp.Browser.FindElementsByCssSelector(
                    string.Format("input[name=PostedSelectedAdministrators][value=\"{0}\"]", user.Id)).Single();

            ITH.SetCheckbox(adminBox, true);
            form.Submit();
            ITH.AssertThatNoValidationErrorOccurred();

            // Now, log in as the ordinary user
            ITH.LoginAsUser(user);

            app.NavigateTo <RepositoryController>(c => c.Edit(repoId));
            form = app.FindFormFor <RepositoryDetailModel>();

            var chkboxes = form.WebApp.Browser.FindElementsByCssSelector("input[name=PostedSelectedAdministrators]");

            ITH.SetCheckboxes(chkboxes, false);

            form.Submit();
            app.WaitForElementToBeVisible(By.CssSelector("div.validation-summary-errors"), TimeSpan.FromSeconds(1));
            ITH.AssertThatValidationErrorContains(Resources.Repository_Edit_CantRemoveYourself);
        }
            public void TeamNameEnsureDuplicationDetectionStillAllowsEditOtherProperties()
            {
                var ids = ITH.CreateTeams().ToList();
                var id1 = ids[0];

                app.NavigateTo <TeamController>(c => c.Edit(id1.Id));
                app.FindFormFor <TeamEditModel>()
                .Field(f => f.Description).SetValueTo("somename")
                .Submit();

                app.NavigateTo <TeamController>(c => c.Edit(id1.Id)); // force refresh
                app.FindFormFor <TeamEditModel>()
                .Field(f => f.Description).ValueShouldEqual("somename");
            }
            public void TeamNameEnsureDuplicationDetectionAsYouTypeWorksOnCreation()
            {
                var id1 = ITH.CreateTeams().Single();

                app.NavigateTo <TeamController>(c => c.Create());
                var form = app.FindFormFor <TeamEditModel>()
                           .Field(f => f.Name).SetValueTo(id1.Name)
                           .Field(f => f.Description).Click(); // Set focus


                var input = app.Browser.FindElementByCssSelector("input#Name");

                Assert.IsTrue(input.GetAttribute("class").Contains("input-validation-error"));
            }
Beispiel #4
0
        public void SettingsAcceptEmptyStringForRegex()
        {
            ITH.SetGlobalSetting(g => g.LinksRegex, "some_value");
            app.NavigateTo <SettingsController>(c => c.Index());
            app.FindFormFor <GlobalSettingsModel>()
            .Field(f => f.LinksRegex).SetValueTo("")
            .Submit();

            var field = app.FindFormFor <GlobalSettingsModel>()
                        .Field(f => f.LinksRegex);

            field.ValueShouldEqual("");
            Assert.AreEqual(false, field.Field.GetAttribute("class").Contains("valid"));
        }
Beispiel #5
0
        public void RepoNameEnsureDuplicationDetectionStillAllowsEditOtherProperties()
        {
            var reponame = ITH.MakeName();
            var repo     = ITH.CreateRepositoryOnWebInterface(reponame);

            app.NavigateTo <RepositoryController>(c => c.Edit(repo));
            app.FindFormFor <RepositoryDetailModel>()
            .Field(f => f.Description).SetValueTo(reponame + "_other")
            .Submit();
            ITH.AssertThatNoValidationErrorOccurred();

            app.NavigateTo <RepositoryController>(c => c.Edit(repo)); // force refresh
            app.FindFormFor <RepositoryDetailModel>()
            .Field(f => f.Description).ValueShouldEqual(reponame + "_other");
        }
Beispiel #6
0
        public void RepositoryCanBeSavedBySysAdminWithoutHavingAnyRepoAdmins()
        {
            var repoId = ITH.CreateRepositoryOnWebInterface(ITH.MakeName());

            app.NavigateTo <RepositoryController>(c => c.Edit(repoId));
            var form = app.FindFormFor <RepositoryDetailModel>();

            // Turn off all the admin checkboxes and save the form
            var chkboxes = form.WebApp.Browser.FindElementsByCssSelector("input[name=PostedSelectedAdministrators]");

            ITH.SetCheckboxes(chkboxes, false);

            form.Submit();
            ITH.AssertThatNoValidationErrorOccurred();
        }
Beispiel #7
0
        public void AnonymousPushModeNotAcceptInvalidValueWhenCreatingRepo()
        {
            app.NavigateTo <RepositoryController>(c => c.Create());
            var form = app.FindFormFor <RepositoryDetailModel>();

            form.Field(f => f.Name).SetValueTo(ITH.MakeName());
            ITH.SetCheckbox(form.Field(f => f.AllowAnonymous).Field, true);
            var select = new SelectElement(form.Field(f => f.AllowAnonymousPush).Field);

            select.SelectByValue(((int)RepositoryPushMode.Global).ToString());

            ITH.SetElementAttribute(select.Options[(int)RepositoryPushMode.Global], "value", "47");
            form.Submit();

            ITH.AssertThatValidationErrorContains(Resources.Repository_Edit_InvalidAnonymousPushMode);
        }
Beispiel #8
0
        public void CreateDuplicateRepoNameNotAllowed()
        {
            var reponame = ITH.MakeName();

            ITH.CreateRepositoryOnWebInterface(reponame);

            app.NavigateTo <RepositoryController>(c => c.Create());
            app.FindFormFor <RepositoryDetailModel>()
            .Field(f => f.Name).SetValueTo(reponame)
            .Submit();

            var field = app.FindFormFor <RepositoryDetailModel>()
                        .Field(f => f.Name);

            field.ShouldBeInvalid();
            Assert.AreEqual(Resources.Validation_Duplicate_Name, field.HasValidationMessage().Text);
        }
Beispiel #9
0
            public void UsernameEnsureDuplicationDetectionAsYouTypeWorksOnCreation()
            {
                var id1 = ITH.CreateUsers().Single();

                app.NavigateTo <AccountController>(c => c.Create());
                var form = app.FindFormFor <UserCreateModel>()
                           .Field(f => f.Username).SetValueTo(id1.Username)
                           .Field(f => f.Name).Click(); // Set focus

                var validation = app.WaitForElementToBeVisible(By.CssSelector("input#Username~span.field-validation-error>span"), TimeSpan.FromSeconds(1), true);

                Assert.AreEqual(Resources.Validation_Duplicate_Name, validation.Text);

                var input = app.Browser.FindElementByCssSelector("input#Username");

                Assert.IsTrue(input.GetAttribute("class").Contains("input-validation-error"));
            }
        public void EnsureCookiePersistBetweenBrowserRestart()
        {
            app.NavigateTo <HomeController>(c => c.LogOff()); // in case the cookie is set
            app.NavigateTo <RepositoryController>(c => c.Index(null, null));
            app.Browser.Manage().Cookies.DeleteAllCookies();
            Thread.Sleep(TimeSpan.FromSeconds(5)); // give it some time to delete the cookies

            app.NavigateTo <AccountController>(c => c.Detail(new Guid("7479fc09-2c0b-4e93-a2cf-5e4bbf6bab4f")));
            app.UrlShouldMapTo <HomeController>(c => c.LogOn("/Account/Detail/7479fc09-2c0b-4e93-a2cf-5e4bbf6bab4f"));

            var form     = app.FindFormFor <LogOnModel>();
            var chkField = form.Field(f => f.Username).SetValueTo("admin")
                           .Field(f => f.Password).SetValueTo("admin")
                           .Field(f => f.RememberMe).Field;

            ITH.SetCheckbox(chkField, true);
            form.Submit();
            app.UrlShouldMapTo <AccountController>(c => c.Detail(new Guid("7479fc09-2c0b-4e93-a2cf-5e4bbf6bab4f")));

            MvcWebApp.Driver.Shutdown();
            app = new MvcWebApp();
            ITH = new IntegrationTestHelpers(app, lc);
            app.NavigateTo <AccountController>(c => c.Detail(new Guid("7479fc09-2c0b-4e93-a2cf-5e4bbf6bab4f")));
            app.UrlShouldMapTo <AccountController>(c => c.Detail(new Guid("7479fc09-2c0b-4e93-a2cf-5e4bbf6bab4f")));
            // ok we re logged in with success.

            // Now let's make sure we can unset remember me
            app.NavigateTo <HomeController>(c => c.LogOff());
            app.NavigateTo <HomeController>(c => c.LogOn(""));
            form     = app.FindFormFor <LogOnModel>();
            chkField = form.Field(f => f.Username).SetValueTo("admin")
                       .Field(f => f.Password).SetValueTo("admin")
                       .Field(f => f.RememberMe).Field;
            ITH.SetCheckbox(chkField, false);
            form.Submit();

            app.UrlShouldMapTo <RepositoryController>(c => c.Index(null, null));

            MvcWebApp.Driver.Shutdown();
            app = new MvcWebApp();
            ITH = new IntegrationTestHelpers(app, lc);

            app.NavigateTo <AccountController>(c => c.Detail(new Guid("7479fc09-2c0b-4e93-a2cf-5e4bbf6bab4f")));
            app.UrlShouldMapTo <HomeController>(c => c.LogOn("/Account/Detail/7479fc09-2c0b-4e93-a2cf-5e4bbf6bab4f"));
        }
            public void TeamNameEnsureDuplicationDetectionAsYouTypeWorksOnEdit()
            {
                var teams = ITH.CreateTeams(2).ToList();
                var id1   = teams[0];
                var id2   = teams[1];

                app.NavigateTo <TeamController>(c => c.Edit(id2.Id));
                var form = app.FindFormFor <TeamEditModel>()
                           .Field(f => f.Name).SetValueTo(id1.Name)
                           .Field(f => f.Description).Click(); // Set focus

                var validation = app.WaitForElementToBeVisible(By.CssSelector("input#Name~span.field-validation-error>span"), TimeSpan.FromSeconds(1), true);

                Assert.AreEqual(Resources.Validation_Duplicate_Name, validation.Text);

                var input = app.Browser.FindElementByCssSelector("input#Name");

                Assert.IsTrue(input.GetAttribute("class").Contains("input-validation-error"));
            }
Beispiel #12
0
        public void RepoNameEnsureDuplicationDetectionAsYouTypeWorksOnCreation()
        {
            var reponame = ITH.MakeName();

            ITH.CreateRepositoryOnWebInterface(reponame);

            app.NavigateTo <RepositoryController>(c => c.Create());
            app.FindFormFor <RepositoryDetailModel>()
            .Field(f => f.Name).SetValueTo(reponame)
            .Field(f => f.Description).Click();     // Set focus

            var validation = app.WaitForElementToBeVisible(By.CssSelector("input#Name~span.field-validation-error>span"), TimeSpan.FromSeconds(1), true);

            Assert.AreEqual(Resources.Validation_Duplicate_Name, validation.Text);

            var input = app.Browser.FindElementByCssSelector("input#Name");

            Assert.IsTrue(input.GetAttribute("class").Contains("input-validation-error"));
        }
Beispiel #13
0
        public void RenameRepoToExistingRepoNameNotAllowedDifferentCase()
        {
            var reponame      = ITH.MakeName();
            var otherreponame = ITH.MakeName(reponame + "_other");

            ITH.CreateRepositoryOnWebInterface(reponame);
            var id2 = ITH.CreateRepositoryOnWebInterface(otherreponame);

            app.NavigateTo <RepositoryController>(c => c.Edit(id2));
            app.FindFormFor <RepositoryDetailModel>()
            .Field(f => f.Name).SetValueTo(reponame.ToUpper())
            .Submit();

            var field = app.FindFormFor <RepositoryDetailModel>()
                        .Field(f => f.Name);

            field.ShouldBeInvalid();
            Assert.AreEqual(Resources.Validation_Duplicate_Name, field.HasValidationMessage().Text);
        }
Beispiel #14
0
        public void InvalidLinkifyRegexAsYouTypeInRepository()
        {
            var reponame    = ITH.MakeName();
            var repo_id     = ITH.CreateRepositoryOnWebInterface(reponame);
            var brokenRegex = @"\";

            app.NavigateTo <RepositoryController>(c => c.Edit(repo_id));
            app.FindFormFor <RepositoryDetailModel>()
            .Field(f => f.LinksUseGlobal).Click()
            .Field(f => f.LinksRegex).SetValueTo(brokenRegex)
            .Field(f => f.Description).Click();     // Set focus

            var validation = app.WaitForElementToBeVisible(By.CssSelector("input#LinksRegex~span.field-validation-error>span"), TimeSpan.FromSeconds(1), true);

            Assert.IsTrue(validation.Text.Contains(Resources.Validation_Invalid_Regex.Replace("{0}", "")));

            var input = app.Browser.FindElementByCssSelector("input#LinksRegex");

            Assert.IsTrue(input.GetAttribute("class").Contains("input-validation-error"));
        }
Beispiel #15
0
        public void EnsureCheckboxesStayCheckOnCreateError()
        {
            ITH.CreateUsers(1);
            app.NavigateTo <RepositoryController>(c => c.Create());
            var form     = app.FindFormFor <RepositoryDetailModel>();
            var chkboxes = form.WebApp.Browser.FindElementsByCssSelector("form.pure-form>fieldset>div.pure-control-group.checkboxlist>input");

            foreach (var chk in chkboxes)
            {
                ITH.SetCheckbox(chk, true);
            }
            form.Submit();

            form     = app.FindFormFor <RepositoryDetailModel>();
            chkboxes = form.WebApp.Browser.FindElementsByCssSelector("form.pure-form>fieldset>div.pure-control-group.checkboxlist>input");
            foreach (var chk in chkboxes)
            {
                Assert.AreEqual(true, chk.Selected, "A message box was unselected eventhough we selected all!");
            }
        }
        public void DropdownNavigationWorks()
        {
            var reponame      = ITH.MakeName();
            var otherreponame = ITH.MakeName(reponame + "_other");
            var repoId        = ITH.CreateRepositoryOnWebInterface(reponame);
            var otherrepoId   = ITH.CreateRepositoryOnWebInterface(otherreponame);

            app.NavigateTo <RepositoryController>(c => c.Detail(otherrepoId));

            var element  = app.Browser.FindElementByCssSelector("select#Repositories");
            var dropdown = new SelectElement(element);

            dropdown.SelectByText(reponame);
            Thread.Sleep(2000);

            app.UrlMapsTo <RepositoryController>(c => c.Detail(repoId));

            app.WaitForElementToBeVisible(By.CssSelector("select#Repositories"), TimeSpan.FromSeconds(10));
            dropdown = new SelectElement(app.Browser.FindElementByCssSelector("select#Repositories"));
            dropdown.SelectByText(otherreponame);
            Thread.Sleep(2000);

            app.UrlMapsTo <RepositoryController>(c => c.Detail(otherrepoId));
        }