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;
}
}
}