package eu.europeana.cloud.service.dps.service.utils;
import eu.europeana.cloud.service.dps.DpsTask;
import eu.europeana.cloud.service.dps.service.utils.validation.DpsTaskValidationException;
import eu.europeana.cloud.service.dps.service.utils.validation.DpsTaskValidator;
import eu.europeana.cloud.service.dps.service.utils.validation.InputDataValueType;
import org.junit.Before;
import org.junit.Test;
import java.util.Arrays;
import java.util.List;
public class DpsTaskValidatorTest {
private static final long TASK_ID = 121212;
private DpsTask dpsTask;
private DpsTask icTopologyTask;
private static final String TASK_NAME = "taksName";
private static final String EXISTING_PARAMETER_NAME = "param_1";
private static final String EXISTING_PARAMETER_VALUE = "param_1_value";
private static final String EMPTY_PARAMETER_NAME = "empty_param";
private static final String EXISTING_DATA_ENTRY_NAME = "dataEntryName";
private static final List<String> EXISTING_DATA_ENTRY_VALUE = Arrays.asList("http://127.0.0.1:8080/mcs/records/FUWQ4WMUGIGEHVA3X7FY5PA3DR5Q4B2C4TWKNILLS6EM4SJNTVEQ/representations/TIFF/versions/86318b00-6377-11e5-a1c6-90e6ba2d09ef/files/sampleFileName.txt");
@Before
public void init() {
dpsTask = new DpsTask();
dpsTask.setTaskName(TASK_NAME);
dpsTask.addParameter(EXISTING_PARAMETER_NAME, EXISTING_PARAMETER_VALUE);
dpsTask.addParameter(EMPTY_PARAMETER_NAME, "");
dpsTask.addDataEntry(EXISTING_DATA_ENTRY_NAME, EXISTING_DATA_ENTRY_VALUE);
//
icTopologyTask = new DpsTask();
icTopologyTask.addDataEntry("FILE_URLS", Arrays.asList("http://iks-kbase.synat.pcss.pl:9090/mcs/records/JP46FLZLVI2UYV4JNHTPPAB4DGPESPY4SY4N5IUQK4SFWMQ3NUQQ/representations/tiff/versions/74c56880-7733-11e5-b38f-525400ea6731/files/f59753a5-6d75-4d48-9f4d-4690b671240c", "http://127.0.0.1:8080/mcs/records/FUWQ4WMUGIGEHVA3X7FY5PA3DR5Q4B2C4TWKNILLS6EM4SJNTVEQ/representations/TIFF/versions/86318b00-6377-11e5-a1c6-90e6ba2d09ef/files/sampleFileName.txt"));
icTopologyTask.addParameter("OUTPUT_MIME_TYPE", "image/jp2");
icTopologyTask.addParameter("SAMPLE_PARAMETER", "sampleParameterValue");
}
@Test
public void shouldValidateThatTaskIsCorrectWhenConstraintsListIsEmpty() throws DpsTaskValidationException {
new DpsTaskValidator().validate(dpsTask);
}
////
// Task id
////
@Test
public void anyIdShouldBeValidated() throws DpsTaskValidationException {
new DpsTaskValidator().withAnyId().validate(dpsTask);
}
@Test(expected = DpsTaskValidationException.class)
public void shouldThrowExceptionForWrongTaskId() throws DpsTaskValidationException {
new DpsTaskValidator().withId(-1).validate(dpsTask);
}
////
//Task name
////
@Test
public void validatorShouldValidateThatTaskHasSelectedName() throws DpsTaskValidationException {
new DpsTaskValidator().withName(TASK_NAME).validate(dpsTask);
}
@Test(expected = DpsTaskValidationException.class)
public void validatorShouldValidateThatTaskHasWrongName() throws DpsTaskValidationException {
new DpsTaskValidator().withName("someWrongName").validate(dpsTask);
}
@Test
public void validatorShouldValidateThatTaskHasAnyName() throws DpsTaskValidationException {
new DpsTaskValidator().withAnyName().validate(dpsTask);
}
////
//Parameters
////
@Test
public void validatorShouldValidateThatThereIsParameterWithSelectedNameAndAnyValue() throws DpsTaskValidationException {
new DpsTaskValidator().withParameter(EXISTING_PARAMETER_NAME).validate(dpsTask);
}
@Test(expected = DpsTaskValidationException.class)
public void validatorShouldValidateThatThereIsNoParameterWithSelectedName() throws DpsTaskValidationException {
new DpsTaskValidator().withParameter("p2").validate(dpsTask);
}
@Test
public void validatorShouldValidateThatThereIsSelectedParameterWithCorrectValue() throws DpsTaskValidationException {
new DpsTaskValidator().withParameter(EXISTING_PARAMETER_NAME, EXISTING_PARAMETER_VALUE).validate(dpsTask);
}
@Test(expected = DpsTaskValidationException.class)
public void validatorShouldValidateThatThereIsSelectedParameterWithWrongValue() throws DpsTaskValidationException {
new DpsTaskValidator().withParameter("p1", "p3").validate(dpsTask);
}
@Test
public void validatorShouldValidateThatThereIsSelectedParameterWithEmptyValue() throws DpsTaskValidationException {
new DpsTaskValidator().withEmptyParameter(EMPTY_PARAMETER_NAME).validate(dpsTask);
}
@Test(expected = DpsTaskValidationException.class)
public void validatorShouldValidateThatThereIsNoSelectedParameterWithEmptyValue() throws DpsTaskValidationException {
new DpsTaskValidator().withEmptyParameter("nonEmptyParameter").validate(dpsTask);
}
////
//inputData
////
@Test(expected = DpsTaskValidationException.class)
public void validatorShouldValidateThatThereIsNoInputDataWithSelectedName() throws DpsTaskValidationException {
new DpsTaskValidator().withDataEntry("notExistingDataEntry").validate(dpsTask);
}
@Test
public void validatorShouldValidateThatThereIsInputDataWithSelectedNameAndAnyValue() throws DpsTaskValidationException {
new DpsTaskValidator().withDataEntry(EXISTING_DATA_ENTRY_NAME).validate(dpsTask);
}
@Test
public void validatorShouldValidateThatThereIsInputDataWithSelectedNameAndCorrectValue() throws DpsTaskValidationException {
new DpsTaskValidator().withDataEntry(EXISTING_DATA_ENTRY_NAME, Arrays.asList("http://127.0.0.1:8080/mcs/records/FUWQ4WMUGIGEHVA3X7FY5PA3DR5Q4B2C4TWKNILLS6EM4SJNTVEQ/representations/TIFF/versions/86318b00-6377-11e5-a1c6-90e6ba2d09ef/files/sampleFileName.txt")).validate(dpsTask);
}
@Test(expected = DpsTaskValidationException.class)
public void validatorShouldValidateThatThereIsInputDataWithSelectedNameAndWrongValue() throws DpsTaskValidationException {
new DpsTaskValidator().withDataEntry(EXISTING_DATA_ENTRY_NAME, Arrays.asList("someWrongValue")).validate(dpsTask);
}
@Test
public void validatorShouldValidateThatThereIsInputDataWithSelectedNameAndCorrectContentType() throws DpsTaskValidationException {
new DpsTaskValidator().withDataEntry(EXISTING_DATA_ENTRY_NAME, InputDataValueType.LINK_TO_FILE).validate(dpsTask);
}
@Test(expected = DpsTaskValidationException.class)
public void validatorShouldValidateThatThereIsInputDataWithSelectedNameAndIncorrectContentType() throws DpsTaskValidationException {
new DpsTaskValidator().withDataEntry(EXISTING_DATA_ENTRY_NAME, InputDataValueType.LINK_TO_DATASET).validate(dpsTask);
}
@Test
public void shouldValidateTaskForICTopology() throws DpsTaskValidationException {
new DpsTaskValidator()
.withDataEntry("FILE_URLS", InputDataValueType.LINK_TO_FILE)
.withParameter("OUTPUT_MIME_TYPE")
.withParameter("SAMPLE_PARAMETER")
.validate(icTopologyTask);
}
}