package eu.europa.esig.dss.tsl.service;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import java.io.File;
import java.io.FileInputStream;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
import eu.europa.esig.dss.tsl.TSLParserResult;
import eu.europa.esig.dss.tsl.TSLPointer;
import eu.europa.esig.dss.tsl.TSLService;
import eu.europa.esig.dss.tsl.TSLServiceProvider;
import eu.europa.esig.dss.tsl.TSLServiceStatusAndInformationExtensions;
import eu.europa.esig.dss.util.TimeDependentValues;
import eu.europa.esig.dss.utils.Utils;
@RunWith(Parameterized.class)
public class TSLSParserTest {
@Parameters(name = "TSL to parse {index} : {0}")
public static Collection<Object[]> data() {
File folder = new File("src/test/resources/tsls");
Collection<File> listFiles = Utils.listFiles(folder, new String[] { "xml" }, true);
Collection<Object[]> dataToRun = new ArrayList<Object[]>();
for (File file : listFiles) {
dataToRun.add(new Object[] { file });
}
return dataToRun;
}
private static final List<String> countriesWithoutTSP;
static {
countriesWithoutTSP = new ArrayList<String>();
countriesWithoutTSP.add("EU");
countriesWithoutTSP.add("CY");
countriesWithoutTSP.add("MT");
countriesWithoutTSP.add("UK");
}
private File fileToTest;
public TSLSParserTest(File fileToTest) {
this.fileToTest = fileToTest;
}
@Test
public void parseTSL() throws Exception {
TSLParser parser = new TSLParser(new FileInputStream(fileToTest));
TSLParserResult result = parser.call();
assertNotNull(result);
assertNotNull(result.getNextUpdateDate());
assertNotNull(result.getIssueDate());
assertTrue(Utils.isStringNotEmpty(result.getTerritory()));
assertTrue(result.getSequenceNumber() > 0);
List<TSLPointer> pointers = result.getPointers();
assertTrue(Utils.isCollectionNotEmpty(pointers));
for (TSLPointer tslPointer : pointers) {
assertTrue(Utils.isStringNotEmpty(tslPointer.getMimeType()));
assertTrue(Utils.isStringNotEmpty(tslPointer.getTerritory()));
assertTrue(Utils.isStringNotEmpty(tslPointer.getUrl()));
assertTrue(Utils.isCollectionNotEmpty(tslPointer.getPotentialSigners()));
}
List<TSLServiceProvider> serviceProviders = result.getServiceProviders();
if (countriesWithoutTSP.contains(result.getTerritory())) {
assertTrue(Utils.isCollectionEmpty(serviceProviders));
} else {
assertTrue(Utils.isCollectionNotEmpty(serviceProviders));
for (TSLServiceProvider tslServiceProvider : serviceProviders) {
assertTrue(Utils.isStringNotEmpty(tslServiceProvider.getName()));
assertTrue(Utils.isStringNotEmpty(tslServiceProvider.getPostalAddress()));
assertTrue(Utils.isStringNotEmpty(tslServiceProvider.getElectronicAddress()));
List<TSLService> services = tslServiceProvider.getServices();
assertTrue(Utils.isCollectionNotEmpty(services));
for (TSLService tslService : services) {
assertTrue(Utils.isStringNotEmpty(tslService.getName()));
TimeDependentValues<TSLServiceStatusAndInformationExtensions> status = tslService.getStatusAndInformationExtensions();
int n = 0;
for (TSLServiceStatusAndInformationExtensions tslServiceStatus : status) {
assertTrue(Utils.isStringNotEmpty(tslServiceStatus.getStatus()));
assertTrue(Utils.isStringNotEmpty(tslServiceStatus.getType()));
assertNotNull(tslServiceStatus.getStartDate());
++n;
}
assertTrue(n > 0);
}
}
}
}
}