package com.softwaremill.common.cdi.validator;
import org.testng.Assert;
import org.testng.annotations.Test;
import com.softwaremill.common.cdi.validation.NoSpecialChars;
import com.softwaremill.common.cdi.validation.NoSpecialCharsValidator;
/**
* Created by amorfis on Dec 3, 2010 1:40:58 PM
*/
public class NoSpecialCharsValidatorTest {
@Test
public void shouldAllowRegularChars() throws NoSuchFieldException {
//given
class AnnotationWrapper {
@NoSpecialChars
public String field;
}
NoSpecialCharsValidator validator = initializeValidator(AnnotationWrapper.class);
//when
boolean isValid = validator.isValid("PawelStawicki", null);
//then
Assert.assertTrue(isValid, "Regular characters considered invalid");
}
private NoSpecialCharsValidator initializeValidator(Class<?> classWithAnnotation) throws NoSuchFieldException {
NoSpecialChars constraint = classWithAnnotation.getField("field").getAnnotation(NoSpecialChars.class);
NoSpecialCharsValidator validator = new NoSpecialCharsValidator();
validator.initialize(constraint);
return validator;
}
@Test
public void shouldNotAllowSpecialChars() throws NoSuchFieldException {
//given
class AnnotationWrapper {
@NoSpecialChars
public String field;
}
NoSpecialCharsValidator validator = initializeValidator(AnnotationWrapper.class);
//when
boolean manySpecials = validator.isValid("*%%Pawel@#$Stawicki**", null);
boolean dot = validator.isValid("Pawel.Stawicki", null);
boolean at = validator.isValid("Pawel@Stawicki", null);
//then
Assert.assertFalse(manySpecials, "Special characters considered valid");
Assert.assertFalse(dot, "Special characters considered valid");
Assert.assertFalse(at, "Special characters considered valid");
}
@Test
public void shouldAllowSomeSpecialCharsWhenAsked() throws NoSuchFieldException {
//given
class AnnotationWrapper {
@NoSpecialChars(charsAllowed = "@.")
public String field;
}
NoSpecialCharsValidator validator = initializeValidator(AnnotationWrapper.class);
//when
boolean isValid = validator.isValid("Pawel@Stawicki.pl", null);
//then
Assert.assertTrue(isValid, "Special characters which should be valid considered valid");
}
}