Merge "Allow QA teams to use the Top Level Domain .test"

This commit is contained in:
Jenkins 2016-06-15 06:35:04 +00:00 committed by Gerrit Code Review
commit de084928d6
2 changed files with 22 additions and 3 deletions

View File

@ -17,11 +17,19 @@ import monasca.api.domain.model.notificationmethod.NotificationMethodType;
import monasca.api.resource.exception.Exceptions;
import org.apache.commons.validator.routines.EmailValidator;
import org.apache.commons.validator.routines.RegexValidator;
import org.apache.commons.validator.routines.UrlValidator;
import java.util.List;
public class NotificationMethodValidation {
private static final String[] SCHEMES = {"http","https"};
// Allow QA to use the TLD .test. This is valid according to RFC-2606
private static final RegexValidator TEST_TLD_VALIDATOR = new RegexValidator(".+\\.test$");
private static final UrlValidator URL_VALIDATOR =
new UrlValidator(SCHEMES,
TEST_TLD_VALIDATOR,
UrlValidator.ALLOW_LOCAL_URLS | UrlValidator.ALLOW_2_SLASHES);
public static void validate(NotificationMethodType type, String address, String period,
List<Integer> validPeriods) {
@ -34,9 +42,7 @@ public class NotificationMethodValidation {
throw Exceptions.unprocessableEntity("Period can not be non zero for Email");
} break;
case WEBHOOK : {
String[] schemes = {"http","https"};
UrlValidator urlValidator = new UrlValidator(schemes, UrlValidator.ALLOW_LOCAL_URLS | UrlValidator.ALLOW_2_SLASHES);
if (!urlValidator.isValid(address))
if (!URL_VALIDATOR.isValid(address))
throw Exceptions.unprocessableEntity("Address %s is not of correct format", address);
} break;
case PAGERDUTY : {

View File

@ -118,6 +118,19 @@ public class CreateNotificationMethodTest extends AbstractModelTest {
newNotificationMethod.validate(validPeriods);
}
public void testValidationTestDomainForWebhook() {
CreateNotificationMethodCommand newNotificationMethod =
new CreateNotificationMethodCommand("MyWebhook", NotificationMethodType.WEBHOOK, "http://test.test", "60");
newNotificationMethod.validate(validPeriods);
}
@Test(expectedExceptions = WebApplicationException.class)
public void testValidationInvalidDomainForWebhook() {
CreateNotificationMethodCommand newNotificationMethod =
new CreateNotificationMethodCommand("MyWebhook", NotificationMethodType.WEBHOOK, "http://test.fred", "60");
newNotificationMethod.validate(validPeriods);
}
@Test(expectedExceptions = WebApplicationException.class)
public void testValidationExceptionForWebhook() throws Exception {
CreateNotificationMethodCommand newNotificationMethod =