package org.zend.sdk.test.sdkcli.update;
import static org.junit.Assert.assertNotNull;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import org.junit.Test;
import org.mockito.Mockito;
import org.zend.sdkcli.update.UpdateException;
import org.zend.sdkcli.update.manager.UpdateManager;
import org.zend.sdkcli.update.parser.Version;
public class TestUpdateManager extends AbstractUpdateTest {
private static final String UPDATE_FOLDER = "src/config/update/";
@Test
public void testUpdate() throws IOException, UpdateException {
copyFile(new File(UPDATE_FOLDER + "sdk.version"), new File(tmp,
"lib/sdk.version"));
createFile(new File(tmp, "toRemove"));
assertFileExists(tmp, "toRemove");
File packageFile = new File(UPDATE_FOLDER + "package.zip");
String deltaXml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
+ "<delta file=\"file:///" + packageFile.getAbsolutePath()
+ "\" size=\"833\">" + "<add file=\"toCopy\" dest=\"a/b/c\"/>"
+ "<add file=\"folder/\" dest=\"a/b\"/>"
+ "<remove file=\"toRemove\"/>" + "</delta>";
File deltaFile = new File(tmp, "delta.xml");
deltaFile.createNewFile();
OutputStream out = new FileOutputStream(deltaFile);
out.write(deltaXml.getBytes());
closeStream(out);
String versionsXml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><versions>"
+ "<version name=\"0.0.18\" "
+ "range=\"[0.0.18,0.0.20]\" "
+ "delta=\""
+ deltaFile.getAbsolutePath()
+ "\" />"
+ "<version name=\"0.0.22\" "
+ "range=\"[0.0.18,0.0.20]\" "
+ "delta=\""
+ deltaFile.getAbsolutePath()
+ "\" />"
+ "</versions>";
File versionsFile = new File(tmp, "versions.xml");
versionsFile.createNewFile();
out = new FileOutputStream(versionsFile);
out.write(versionsXml.getBytes());
closeStream(out);
UpdateManager manager = new UpdateManager(tmp.getAbsolutePath(),
versionsFile.getAbsolutePath());
assertNotNull(manager.getSdkVersion());
manager.performUpdate();
assertFileNotExists(tmp, "toRemove");
assertFileExists(tmp, "a/b/c/toCopy");
assertFileExists(tmp, "a/b/folder/innerFile");
assertFileExists(tmp, "a/b/folder/innerFolder/nextFile");
}
@Test
public void testUpToDate() throws IOException, UpdateException {
copyFile(new File(UPDATE_FOLDER + "sdk.version"), new File(tmp,
"lib/sdk.version"));
UpdateManager manager = Mockito.spy(new UpdateManager(tmp
.getAbsolutePath(), UPDATE_FOLDER + "versions.xml"));
Version version = new Version("0.0.22");
Mockito.doReturn(version).when(manager).getSdkVersion();
manager.performUpdate();
}
}