/*
* Created on 31.07.2006
*
*/
package org.jdesktop.swingx;
import java.util.logging.Logger;
import junit.framework.TestCase;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
/**
* "hand test" sandbox restrictions
* (here: around Utilities.initNamesAndValue, #353-swingx).
*
* Note: to run this test manually, remove the ignore annotation
* can't automatically run tests that install a securityManager
* (because I found no way to uninstall it when the test class is done)
*
*/
@Ignore
@RunWith(JUnit4.class)
public class SandboxTest extends TestCase {
private static final Logger LOG = Logger.getLogger(SandboxTest.class
.getName());
/**
* quick test if table doesn't throw securityExceptions.
*
*
*/
@Test
public void testSecurityManager() {
if (System.getSecurityManager() == null) {
LOG.info("cannot run testSecurityManager - no SecurityManager installed");
return;
}
@SuppressWarnings("unused")
// JXTable table = new JXTable();
JXDatePicker picker = new JXDatePicker();
try {
System.getProperty("user.home", "not specified");
fail("Sandbox without security priviledges");
} catch (SecurityException e) {
// nothing to do - that's what we expect
}
}
/**
* Sanity: make sure the second-time-around is reached!
*
*/
@Test
public void testSecurityManagerAgain() {
if (System.getSecurityManager() == null) {
LOG.info("cannot run testSecurityManagerAgain - no SecurityManager installed");
return;
}
try {
System.getProperty("user.home", "not specified");
fail("Sandbox without security priviledges");
} catch (SecurityException e) {
// nothing to do - that's what we expect
}
}
@Override
@Before
public void setUp() throws Exception {
// LookAndFeelAddons.getAddon();
InteractiveTestCase.setLAF("Win");
// A - install the default SecurityManager.
// Doing so we are not allowed to reverse the install -
// which makes this testCase to a manual-run-only affair
// (the securityManager is not uninstalled when running
// other test cases - in Eclipse, when running the
// bulk "all tests" of a projects.
// Same as B (accessing addon throws)
// the behaviour is similiar as Metal not choosable in
// webstart .. classLoader prob?
if (System.getSecurityManager() == null) {
System.setSecurityManager(new SecurityManager());
}
// B- if we install a SecurityManager we need to be sure
// that we are allowed to uninstall it.
// BUT: with this custom manager on, JXTable instantiation
// fails with a rather weird stack-trace. Gave up for now...
// if (System.getSecurityManager() == null) {
// System.setSecurityManager(new SecurityManager() {
//
// @Override
// public void checkPermission(Permission perm) {
// if ("setSecurityManager".equals(perm.getName())) return;
// super.checkPermission(perm);
// }
//
// });
// }
}
// @After
// @Override
// protected void tearDown() throws Exception {
// super.tearDown();
// }
@AfterClass
public static void uninstall() {
// be sure to uninstall the manager
// System.setSecurityManager(null);
}
// @BeforeClass
// public static void init() {
// System.setSecurityManager(new SecurityManager());
// try {
// InteractiveTestCase.setLookAndFeel("Win");
// } catch (Exception e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
// }
}