package cz.cuni.mff.d3s.been.bpk;
import java.io.File;
import java.io.FileOutputStream;
import java.net.URL;
import java.nio.file.Files;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
import org.junit.Assert;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TemporaryFolder;
public class UnmarshalTest extends Assert {
@Rule
public TemporaryFolder tmpFolder = new TemporaryFolder();
@Test
public void testUnmarshallingConfigFromBpkFile() throws Exception {
File bpkFile = zip("config2.xml");
BpkConfiguration config = BpkResolver.resolve(bpkFile);
JavaRuntime javaRuntime = (JavaRuntime) config.getRuntime();
assertEquals("task-test-3.0.0.jar", javaRuntime.getJarFile());
assertEquals(7, javaRuntime.getBpkArtifacts().getArtifact().size());
}
@Test(expected = BpkConfigurationException.class)
public void testExceptionThrownOnMissingJarFileInConfigXml() throws Exception {
File bpkFile = zip("config_no-jar-file.xml");
BpkResolver.resolve(bpkFile);
}
public File zip(String resourceName) throws Exception {
URL bpkUrl = getClass().getResource(resourceName);
File bpkFile = new File(bpkUrl.toURI());
File output = tmpFolder.newFile();
ZipOutputStream out = new ZipOutputStream(new FileOutputStream(output));
ZipEntry configXml = new ZipEntry(BpkNames.CONFIG_FILE);
out.putNextEntry(configXml);
byte[] data = Files.readAllBytes(bpkFile.toPath());
out.write(data, 0, data.length);
out.closeEntry();
out.close();
return output;
}
}