package org.opennaas.core.resources.tests.validation; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import java.util.ArrayList; 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.CapabilityDescriptor; import org.opennaas.core.resources.descriptor.CapabilityProperty; import org.opennaas.core.resources.descriptor.Information; import org.opennaas.core.resources.validation.CapabilityDescriptorValidator; import org.springframework.validation.BindException; import org.springframework.validation.Errors; import org.springframework.validation.FieldError; /** * Test the ModuleDescriptorValidator class * * @author Scott Campbell (CRC) * */ public class CapabilityDescriptorValidatorTest { Log logger = LogFactory.getLog(CapabilityDescriptorValidatorTest.class); CapabilityDescriptorValidator validator = null; CapabilityDescriptor capabilityDescriptor = null; List<CapabilityProperty> capabilityProperties = null; BindException errors = null; @Before public void setup() { capabilityDescriptor = new CapabilityDescriptor(); capabilityProperties = new ArrayList<CapabilityProperty>(); validator = new CapabilityDescriptorValidator(); errors = new BindException(capabilityDescriptor, capabilityDescriptor.getClass().getName()); } @Test public void testValidationSuceeds() { capabilityDescriptor.setCapabilityInformation(new Information("capabilityType", "CapabilityName", "1.0.0")); capabilityDescriptor.setCapabilityProperties(capabilityProperties); assertTrue(validator.supports(CapabilityDescriptor.class)); validator.validate(capabilityDescriptor, errors); assertFalse(validator.hasErrors()); } @Test public void testModuleDescriptorValidationFails() { validator.validate(capabilityDescriptor, errors); assertTrue(validator.hasErrors()); // print the field errors for debugging purposes printFieldErrors(validator.getErrors()); } private void printFieldErrors(List<Errors> errors) { for (int i = 0; i < errors.size(); i++) { List<FieldError> fieldErrors = errors.get(i).getFieldErrors(); 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()); } } } }