package org.ovirt.engine.core.bll.exportimport; import static java.util.Arrays.stream; import static java.util.Collections.emptyList; import static java.util.stream.Collectors.toList; import static org.junit.Assert.assertThat; import static org.mockito.Mockito.when; import static org.ovirt.engine.core.bll.validator.ValidationResultMatchers.failsWith; import static org.ovirt.engine.core.bll.validator.ValidationResultMatchers.isValid; import java.util.List; import org.hamcrest.Matcher; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.junit.MockitoJUnitRunner; import org.ovirt.engine.core.bll.ValidationResult; import org.ovirt.engine.core.common.businessentities.network.ExternalVnicProfileMapping; import org.ovirt.engine.core.common.errors.EngineMessage; import org.ovirt.engine.core.compat.Guid; @RunWith(MockitoJUnitRunner.class) public class ExternalVnicProfileMappingValidatorTest { private static final Guid CLUSTER_ID = Guid.newGuid(); private static final Guid VNIC_PROFILE_ID = Guid.newGuid(); @InjectMocks private ExternalVnicProfileMappingValidator underTest; @Mock private VnicProfileValidator mockVnicProfileValidator; @Test public void testValidateExternalVnicProfileMappingEmptyInputIsValid() { testListOfMappings(emptyList(), isValid()); } @Test public void testValidateExternalVnicProfileMapping() { testListOfMappings(createMappings(VNIC_PROFILE_ID), isValid()); } @Test public void testValidateExternalVnicProfileMappingInvalidVnicProfileId() { final Guid invalidId = Guid.newGuid(); when(mockVnicProfileValidator.validateTargetVnicProfileId(invalidId, CLUSTER_ID)) .thenReturn(new ValidationResult(EngineMessage.CAN_DO_ACTION_GENERAL_FAILURE)); testListOfMappings(createMappings(VNIC_PROFILE_ID, invalidId), failsWith(EngineMessage.CAN_DO_ACTION_GENERAL_FAILURE)); } @Test public void testValidateExternalVnicProfileMappingNullTargetProfileIsValid() { testListOfMappings(createMappings(VNIC_PROFILE_ID, null), isValid()); } private List<ExternalVnicProfileMapping> createMappings(Guid... vnicProfileIds) { return stream(vnicProfileIds).map(this::createMapping).collect(toList()); } private ExternalVnicProfileMapping createMapping(Guid vnicProfileId) { return new ExternalVnicProfileMapping("", "", vnicProfileId); } private void testListOfMappings(List<ExternalVnicProfileMapping> vnicProfileMappings, Matcher<ValidationResult> resultMatcher) { final ValidationResult actual = underTest.validateExternalVnicProfileMapping(vnicProfileMappings, CLUSTER_ID); assertThat(actual, resultMatcher); } }