public static ConfigSaveValidationContext forChain(Validatable... validatables) { ConfigSaveValidationContext tail = new ConfigSaveValidationContext(null); for (Validatable validatable : validatables) { tail = tail.withParent(validatable); } return tail; }
public void validateTree() { ConfigSaveValidationContext validationContext = new ConfigSaveValidationContext(this); for (ConfigurationProperty configurationProperty : settingsMap) { configurationProperty.validate(validationContext); if (configurationProperty.hasErrors()) { hasErrors = true; } } } }
private void assertError(String port, String view, String expectedKeyForError, String expectedErrorMessage) { P4MaterialConfig p4MaterialConfig = new P4MaterialConfig(port, view); p4MaterialConfig.validate(new ConfigSaveValidationContext(null)); assertThat(p4MaterialConfig.errors().on(expectedKeyForError), is(expectedErrorMessage)); } }
@Test public void shouldAddErrorIfMaterialDoesNotHaveASCMId() throws Exception { pluggableSCMMaterialConfig.setScmId(null); pluggableSCMMaterialConfig.validateConcreteMaterial(new ConfigSaveValidationContext(null, null)); assertThat(pluggableSCMMaterialConfig.errors().getAll().size(), is(1)); assertThat(pluggableSCMMaterialConfig.errors().on(PluggableSCMMaterialConfig.SCM_ID), is("Please select a SCM")); }
@Test public void validate_shouldEnsureUrlIsNotBlank() { GitMaterialConfig gitMaterialConfig = new GitMaterialConfig(""); gitMaterialConfig.validate(new ConfigSaveValidationContext(null)); assertThat(gitMaterialConfig.errors().on(GitMaterialConfig.URL), is("URL cannot be blank")); }
@Test public void validate_shouldEnsureUrlIsNotBlank() { SvnMaterialConfig svnMaterialConfig = new SvnMaterialConfig("", "", "", false); svnMaterialConfig.validate(new ConfigSaveValidationContext(null)); assertThat(svnMaterialConfig.errors().on(SvnMaterialConfig.URL), is("URL cannot be blank")); }
@Test public void shouldValidateIfNameIsMissing() { SCM scm = new SCM(); scm.validate(new ConfigSaveValidationContext(new BasicCruiseConfig(), null)); assertThat(scm.errors().getAllOn(SCM.NAME), is(asList("Please provide name"))); }
@Test public void shouldValidateIfNameIsMissing() { PackageRepository packageRepository = new PackageRepository(); packageRepository.validate(new ConfigSaveValidationContext(new BasicCruiseConfig(), null)); assertThat(packageRepository.errors().getAllOn("name"), is(asList("Please provide name"))); }
@Test public void shouldValidateName() throws Exception { SCM scm = new SCM(); scm.setName("some name"); scm.validate(new ConfigSaveValidationContext(null)); assertThat(scm.errors().isEmpty(), is(false)); assertThat(scm.errors().getAllOn(SCM.NAME).get(0), is("Invalid SCM name 'some name'. This must be alphanumeric and can contain underscores and periods (however, it cannot start with a period). The maximum allowed length is 255 characters.")); }
@Test public void validate_shouldEnsureUrlIsNotNull() { SvnMaterialConfig svnMaterialConfig = new SvnMaterialConfig(); svnMaterialConfig.setUrl(null); svnMaterialConfig.validate(new ConfigSaveValidationContext(null)); assertThat(svnMaterialConfig.errors().on(SvnMaterialConfig.URL), is("URL cannot be blank")); }
@Test public void shouldValidateName() throws Exception { PackageRepository packageRepository = new PackageRepository(); packageRepository.setName("some name"); packageRepository.validate(new ConfigSaveValidationContext(null)); assertThat(packageRepository.errors().isEmpty(), is(false)); assertThat(packageRepository.errors().getAllOn(PackageRepository.NAME).get(0), is("Invalid PackageRepository name 'some name'. This must be alphanumeric and can contain underscores and periods (however, it cannot start with a period). The maximum allowed length is 255 characters.")); }
@Test public void validate_shouldEnsureMaterialNameIsValid() { TfsMaterialConfig tfsMaterialConfig = new TfsMaterialConfig(new GoCipher(), new UrlArgument("http://10.4.4.101:8080/tfs/Sample"), "loser", "CORPORATE", "passwd", "walk_this_path"); tfsMaterialConfig.validate(new ConfigSaveValidationContext(null)); assertThat(tfsMaterialConfig.errors().on(TfsMaterialConfig.MATERIAL_NAME), is(nullValue())); tfsMaterialConfig.setName(new CaseInsensitiveString(".bad-name-with-dot")); tfsMaterialConfig.validate(new ConfigSaveValidationContext(null)); assertThat(tfsMaterialConfig.errors().on(TfsMaterialConfig.MATERIAL_NAME), is("Invalid material name '.bad-name-with-dot'. This must be alphanumeric and can contain underscores and periods (however, it cannot start with a period). The maximum allowed length is 255 characters.")); }
@Test public void shouldReturnInvalidIfTheURLIsNotAHTTPSURL() { MingleConfig mingleConfig = new MingleConfig("http://some-mingle-instance", "go"); mingleConfig.validate(new ConfigSaveValidationContext(null)); assertThat(mingleConfig.errors().isEmpty(), is(false)); assertThat(mingleConfig.errors().on(MingleConfig.PROJECT_IDENTIFIER), is(nullValue())); assertThat(mingleConfig.errors().on(MingleConfig.BASE_URL), is("Should be a URL starting with https://")); }
@Test public void validate_shouldEnsureDestFilePathIsValid() { TfsMaterialConfig tfsMaterialConfig = new TfsMaterialConfig(new GoCipher(), new UrlArgument("http://10.4.4.101:8080/tfs/Sample"), "loser", "CORPORATE", "passwd", "walk_this_path"); tfsMaterialConfig.setConfigAttributes(Collections.singletonMap(ScmMaterialConfig.FOLDER, "../a")); tfsMaterialConfig.validate(new ConfigSaveValidationContext(null)); assertThat(tfsMaterialConfig.errors().on(TfsMaterialConfig.FOLDER), is("Dest folder '../a' is not valid. It must be a sub-directory of the working folder.")); }
@Test public void shouldValidateWhetherTheEncryptedPasswordIsCorrect() { P4MaterialConfig materialConfig = new P4MaterialConfig("foo/bar, 80", "", "encryptedPassword", new GoCipher()); materialConfig.validate(new ConfigSaveValidationContext(null)); assertThat(materialConfig.errors().on("encryptedPassword"), is("Encrypted password value for P4 material with serverAndPort 'foo/bar, 80' is invalid. This usually happens when the cipher text is modified to have an invalid value.")); }
@Test public void shouldValidateWhetherTheEncryptedPasswordIsCorrect() { SvnMaterialConfig svnMaterialConfig = new SvnMaterialConfig(new UrlArgument("foo/bar"), "", "encryptedPassword", new GoCipher(), null, false, "folder"); svnMaterialConfig.validate(new ConfigSaveValidationContext(null)); assertThat(svnMaterialConfig.errors().on("encryptedPassword"), is("Encrypted password value for svn material with url 'foo/bar' is invalid. This usually happens when the cipher text is modified to have an invalid value.")); }
@Test public void shouldThrowErrorsIfBothPasswordAndEncryptedPasswordAreProvided() { SvnMaterialConfig svnMaterialConfig = new SvnMaterialConfig(new UrlArgument("foo/bar"), "password", "encryptedPassword", new GoCipher(), null, false, "folder"); svnMaterialConfig.validate(new ConfigSaveValidationContext(null)); assertThat(svnMaterialConfig.errors().on("password"), is("You may only specify `password` or `encrypted_password`, not both!")); assertThat(svnMaterialConfig.errors().on("encryptedPassword"), is("You may only specify `password` or `encrypted_password`, not both!")); }
@Test public void validate_shouldEnsureMandatoryFieldsAreNotBlank() { TfsMaterialConfig tfsMaterialConfig = new TfsMaterialConfig(new GoCipher(), new UrlArgument(""), "", "CORPORATE", "", ""); tfsMaterialConfig.validate(new ConfigSaveValidationContext(null)); assertThat(tfsMaterialConfig.errors().on(TfsMaterialConfig.URL), is("URL cannot be blank")); assertThat(tfsMaterialConfig.errors().on(TfsMaterialConfig.USERNAME), is("Username cannot be blank")); assertThat(tfsMaterialConfig.errors().on(TfsMaterialConfig.PROJECT_PATH), is("Project Path cannot be blank")); }
@Test public void shouldThrowErrorsIfBothPasswordAndEncryptedPasswordAreProvided() { TfsMaterialConfig materialConfig = new TfsMaterialConfig(new UrlArgument("foo/bar"), "password", "encryptedPassword", new GoCipher()); materialConfig.validate(new ConfigSaveValidationContext(null)); assertThat(materialConfig.errors().on("password"), is("You may only specify `password` or `encrypted_password`, not both!")); assertThat(materialConfig.errors().on("encryptedPassword"), is("You may only specify `password` or `encrypted_password`, not both!")); }
@Test public void shouldValidateWhetherTheEncryptedPasswordIsCorrect() { TfsMaterialConfig materialConfig = new TfsMaterialConfig(new UrlArgument("foo/bar"), "", "encryptedPassword", new GoCipher()); materialConfig.validate(new ConfigSaveValidationContext(null)); assertThat(materialConfig.errors().on("encryptedPassword"), is("Encrypted password value for TFS material with url 'foo/bar' is invalid. This usually happens when the cipher text is modified to have an invalid value.")); }