package com.sequenceiq.cloudbreak.controller.validation; import static org.junit.Assert.assertTrue; import java.io.Serializable; import java.lang.annotation.Annotation; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; import javax.validation.ConstraintTarget; import javax.validation.ConstraintValidator; import javax.validation.Payload; import javax.validation.metadata.ConstraintDescriptor; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.InjectMocks; import org.mockito.runners.MockitoJUnitRunner; import com.sequenceiq.cloudbreak.TestUtil; import com.sequenceiq.cloudbreak.controller.BadRequestException; import com.sequenceiq.cloudbreak.controller.validation.network.NetworkConfigurationValidator; @RunWith(MockitoJUnitRunner.class) public class NetworkConfigurationValidatorTest { @InjectMocks private NetworkConfigurationValidator underTest; @Test public void validNetworkRequestReturnTrue() { assertTrue(underTest.validateNetworkForStack(TestUtil.network(), TestUtil.generateGcpInstanceGroupsByNodeCount(1, 2, 3))); } @Test(expected = BadRequestException.class) public void inValidNetworkRequestReturnFalse() { underTest.validateNetworkForStack(TestUtil.network("10.0.0.1/32"), TestUtil.generateGcpInstanceGroupsByNodeCount(10000, 10000, 10000)); } private class DummyAnnotation implements Annotation { @Override public boolean equals(Object obj) { return false; } @Override public int hashCode() { return 0; } @Override public String toString() { return "dummy"; } @Override public Class<? extends Annotation> annotationType() { return getClass(); } } private class DummyConstraintDescriptor implements ConstraintDescriptor<DummyAnnotation>, Serializable { @Override public DummyAnnotation getAnnotation() { return null; } @Override public String getMessageTemplate() { return ""; } @Override public Set<Class<?>> getGroups() { return new HashSet<>(); } @Override public Set<Class<? extends Payload>> getPayload() { return new HashSet<>(); } @Override public ConstraintTarget getValidationAppliesTo() { return ConstraintTarget.PARAMETERS; } @Override public List<Class<? extends ConstraintValidator<DummyAnnotation, ?>>> getConstraintValidatorClasses() { return new ArrayList<>(); } @Override public Map<String, Object> getAttributes() { return new HashMap<>(); } @Override public Set<ConstraintDescriptor<?>> getComposingConstraints() { return new HashSet<>(); } @Override public boolean isReportAsSingleViolation() { return false; } } }