/*******************************************************************************
* Copyright (c) 2012 Pivotal Software, Inc.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Pivotal Software, Inc. - initial API and implementation
*******************************************************************************/
package com.vmware.vfabric.ide.eclipse.tcserver.insight.internal.ui;
import java.io.File;
import java.io.FileOutputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
import org.springsource.ide.eclipse.commons.tests.util.StsTestUtil;
import com.vmware.vfabric.ide.eclipse.tcserver.insight.internal.ui.InsightPlugin;
import junit.framework.TestCase;
/**
* @author Steffen Pingel
*/
public class InsightPluginTest extends TestCase {
private File temp;
@Override
protected void setUp() throws Exception {
temp = StsTestUtil.createTempDirectory();
}
public void testNewEnabled() throws Exception {
File file = new File(temp, "insight-plugin-123.jar");
file.createNewFile();
InsightPlugin plugin = new InsightPlugin(file);
assertEquals(file, plugin.getFile());
assertEquals("123", plugin.getName());
assertEquals(null, plugin.getPublisher());
assertEquals(null, plugin.getVersion());
assertEquals("", plugin.getDetails());
assertTrue(plugin.isEnabled());
}
public void testNewDisabled() throws Exception {
File file = new File(temp, "insight-plugin-123.jar.disabled");
file.createNewFile();
InsightPlugin plugin = new InsightPlugin(file);
assertEquals(file, plugin.getFile());
assertEquals("123", plugin.getName());
assertEquals(null, plugin.getPublisher());
assertEquals(null, plugin.getVersion());
assertEquals("", plugin.getDetails());
assertFalse(plugin.isEnabled());
}
public void testNewManifest() throws Exception {
File file = new File(temp, "insight-plugin-123.jar");
FileOutputStream fileOutputStream = new FileOutputStream(file);
try {
ZipOutputStream outputStream = new ZipOutputStream(fileOutputStream);
try {
ZipEntry zipEntry = new ZipEntry("META-INF/insight-plugin-test.xml");
outputStream.putNextEntry(zipEntry);
outputStream.setMethod(ZipOutputStream.DEFLATED);
String contents = "<beans xmlns:insight=\"http://www.springframework.org/schema/insight-idk\">\n"
+ "<insight:plugin name=\"spring-web\" version=\"1.0\" publisher=\"SpringSource\" />";
outputStream.write(contents.getBytes());
outputStream.flush();
outputStream.closeEntry();
}
finally {
outputStream.close();
}
}
finally {
fileOutputStream.close();
}
InsightPlugin plugin = new InsightPlugin(file);
assertEquals(file, plugin.getFile());
assertEquals("spring-web", plugin.getName());
assertEquals("SpringSource", plugin.getPublisher());
assertEquals("1.0", plugin.getVersion());
assertEquals("1.0 by SpringSource", plugin.getDetails());
assertTrue(plugin.isEnabled());
}
public void testCommit() throws Exception {
File file = new File(temp, "insight-plugin-123.jar");
File fileDisabled = new File(temp, "insight-plugin-123.jar.disabled");
file.createNewFile();
InsightPlugin plugin = new InsightPlugin(file);
assertTrue(plugin.isEnabled());
boolean commit = plugin.commit();
assertTrue(commit);
assertTrue(plugin.isEnabled());
assertTrue(file.exists());
assertFalse(fileDisabled.exists());
plugin.setEnabled(false);
commit = plugin.commit();
assertTrue(commit);
assertFalse(file.exists());
assertTrue(fileDisabled.exists());
assertEquals(fileDisabled, plugin.getFile());
}
public void testCommitToggle() throws Exception {
File file = new File(temp, "insight-plugin-123.jar");
File fileDisabled = new File(temp, "insight-plugin-123.jar.disabled");
file.createNewFile();
InsightPlugin plugin = new InsightPlugin(file);
assertTrue(plugin.isEnabled());
plugin.setEnabled(false);
plugin.commit();
assertFalse(plugin.isEnabled());
assertEquals(fileDisabled, plugin.getFile());
plugin.setEnabled(true);
plugin.commit();
assertTrue(plugin.isEnabled());
assertEquals(file, plugin.getFile());
plugin.setEnabled(false);
plugin.commit();
assertFalse(plugin.isEnabled());
assertEquals(fileDisabled, plugin.getFile());
}
public void testCommitNonExistant() throws Exception {
File file = new File(temp, "insight-plugin-123.jar");
InsightPlugin plugin = new InsightPlugin(file);
assertTrue(plugin.isEnabled());
plugin.setEnabled(false);
boolean commit = plugin.commit();
assertFalse(commit);
assertFalse(plugin.isEnabled());
}
}