/* * Hibernate Validator, declare and validate application constraints * * License: Apache License, Version 2.0 * See the license.txt file in the root directory or <http://www.apache.org/licenses/LICENSE-2.0>. */ package org.hibernate.validator.test.internal.cdi.methodvalidation.inheritance; import static org.assertj.core.api.Assertions.assertThat; import static org.testng.Assert.fail; import javax.enterprise.inject.spi.AnnotatedType; import javax.enterprise.inject.spi.BeanManager; import javax.enterprise.inject.spi.ProcessAnnotatedType; import javax.inject.Inject; import javax.validation.ValidationException; import org.hibernate.validator.internal.cdi.ValidationExtension; import org.jboss.arquillian.container.test.api.Deployment; import org.jboss.arquillian.testng.Arquillian; import org.jboss.shrinkwrap.api.ShrinkWrap; import org.jboss.shrinkwrap.api.spec.JavaArchive; import org.testng.annotations.Test; /** * @author Hardy Ferentschik */ public class InvalidConfiguredClassInheritanceMethodValidationTest extends Arquillian { @Deployment public static JavaArchive createDeployment() { return ShrinkWrap.create( JavaArchive.class ) .addClass( CIA.class ) .addClass( SecretServiceBase.class ); } @Inject BeanManager beanManager; @Test public void testInvalidConfigurationThrowsException() { ValidationExtension extension = beanManager.getExtension( ValidationExtension.class ); AnnotatedType<CIA> annotatedType = beanManager.createAnnotatedType( CIA.class ); try { extension.processAnnotatedType( new ProcessAnnotatedTypeImpl<CIA>( annotatedType ) ); fail( "ValidationExtension should throw an exception, because the validated method overrides another " + "method and adds @ValidateOnExecution " ); } catch (ValidationException e) { assertThat( e.getMessage() ).startsWith( "HV000166" ); } } public static class ProcessAnnotatedTypeImpl<T> implements ProcessAnnotatedType<T> { private AnnotatedType<T> annotatedType; public ProcessAnnotatedTypeImpl(AnnotatedType<T> annotatedType) { this.annotatedType = annotatedType; } @Override public AnnotatedType<T> getAnnotatedType() { return annotatedType; } @Override public void setAnnotatedType(AnnotatedType<T> type) { this.annotatedType = type; } @Override public void veto() { } } }