package org.opennaas.core.resources.tests.validation;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.junit.Before;
import org.junit.Test;
import org.opennaas.core.resources.descriptor.Information;
import org.opennaas.core.resources.validation.InformationValidator;
import org.springframework.validation.BindException;
import org.springframework.validation.FieldError;
/**
* Test the InformationValidator class
*
* @author Scott Campbell (CRC)
*
*/
public class InformationValidatorTest {
Log logger = LogFactory.getLog(InformationValidatorTest.class);
BindException errors = null;
Information information = null;
InformationValidator validator = null;
@Before
public void setup() {
information = new Information();
validator = new InformationValidator();
errors = new BindException(information, information.getClass().getName());
}
@Test
public void testValidationSuceeds() {
information.setName("CapabilityName");
information.setType("CapabilityType");
information.setVersion("1.0.0");
assertTrue(validator.supports(Information.class));
validator.validate(information, errors);
assertEquals(0, errors.getErrorCount());
}
@SuppressWarnings("unchecked")
@Test
public void testInformationValidationFails() {
validator.validate(information, errors);
assertEquals("field.empty", errors.getFieldError().getCode());
// print the field errors for debugging purposes
printFieldErrors(errors.getFieldErrors());
}
private void printFieldErrors(List<FieldError> fieldErrors) {
for (int j = 0; j < fieldErrors.size(); j++) {
FieldError fieldError = fieldErrors.get(j);
logger.debug("Error " + j);
logger.debug(" Effected Field " + fieldError.getField());
logger.debug(" Rejected Value: " + fieldError.getRejectedValue());
logger.debug(" Code: " + fieldError.getCode());
logger.debug(" Default message: " + fieldError.getDefaultMessage());
}
}
}