diff options
Diffstat (limited to 'bundles/org.eclipse.equinox.security.tests/src/org/eclipse/equinox/internal/security/tests/storage/DynamicPreferencesTest.java')
-rw-r--r-- | bundles/org.eclipse.equinox.security.tests/src/org/eclipse/equinox/internal/security/tests/storage/DynamicPreferencesTest.java | 232 |
1 files changed, 0 insertions, 232 deletions
diff --git a/bundles/org.eclipse.equinox.security.tests/src/org/eclipse/equinox/internal/security/tests/storage/DynamicPreferencesTest.java b/bundles/org.eclipse.equinox.security.tests/src/org/eclipse/equinox/internal/security/tests/storage/DynamicPreferencesTest.java deleted file mode 100644 index 53013b347..000000000 --- a/bundles/org.eclipse.equinox.security.tests/src/org/eclipse/equinox/internal/security/tests/storage/DynamicPreferencesTest.java +++ /dev/null @@ -1,232 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008 IBM Corporation and others. - * 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: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.equinox.internal.security.tests.storage; - -import java.io.IOException; -import java.net.MalformedURLException; -import java.net.URL; -import java.util.Map; -import junit.framework.Test; -import junit.framework.TestSuite; -import org.eclipse.core.tests.harness.BundleTestingHelper; -import org.eclipse.equinox.internal.security.storage.StorageUtils; -import org.eclipse.equinox.internal.security.tests.SecurityTestsActivator; -import org.eclipse.equinox.security.storage.ISecurePreferences; -import org.eclipse.equinox.security.storage.StorageException; -import org.osgi.framework.*; - -/** - * In those tests listener is used to synchronize with the asynchronous registry processing - * when bundle is added / removed. - */ -public class DynamicPreferencesTest extends StorageAbstractTest { - - final private static int MAX_TIME_PER_BUNDLE = 10000; // maximum time to wait for bundle event in milliseconds - public static final String TEST_FILES_ROOT = "Plugin_Testing/"; - - final private static String key = "password"; - final private static String unassignedKey = "unknown"; - final private static String value = "p[[pkknb#"; - final private static String defaultValue = "default"; - - final private static String key2 = "password2"; - final private static String value2 = "34534534535"; - - final private static String clearTextKey = "data"; - final private static String clearTextValue = "-> this should not be encrypted <-"; - - public DynamicPreferencesTest() { - super(); - } - - public DynamicPreferencesTest(String name) { - super(name); - } - - private void check(ISecurePreferences prefs) throws StorageException { - ISecurePreferences node1 = prefs.node("/abc"); - assertEquals(value, node1.get(key, defaultValue)); - assertEquals(defaultValue, node1.get(unassignedKey, defaultValue)); - } - - /** - * Test dynamic behavior while secure preferences remain in memory - */ - public void testDynamicMemory() throws Exception { - - Bundle bundle01 = null; - Bundle bundle02 = null; - try { - // add low priority module - bundle01 = installBundle("priority/low"); - // fill - this should use the "low" priority bundle - ISecurePreferences preferences = newPreferences(getStorageLocation(), getOptions()); - ISecurePreferences node1 = preferences.node("/abc"); - node1.put(key, value, true); - // add high priority module - bundle02 = installBundle("priority/high"); - // all should work well - check(preferences); - - // new elements added should go through the high priority module - // -> add entries on the same node as the first fill - node1.put(key2, value2, true); - node1.put(clearTextKey, clearTextValue, false); - // -> add entries on a different node - ISecurePreferences node2 = preferences.node("/abc/high"); - node2.put(key, value, true); - node2.put(clearTextKey, clearTextValue, false); - - // uninstall high priority module - if (uninstallBundle(bundle02)) - bundle02 = null; - - // check newly filled elements - should cause an exception - checkUnreadable(node1, key2); - checkUnreadable(node2, key); - - // the entry created with no encryption should read fine - assertEquals(clearTextValue, node1.get(clearTextKey, defaultValue)); - assertEquals(clearTextValue, node2.get(clearTextKey, defaultValue)); - // check original elements - should be able to read fine - check(preferences); - } finally { - // in case of exception in the process - if (bundle02 != null) - bundle02.uninstall(); - if (bundle01 != null) - bundle01.uninstall(); - } - } - - /** - * Test dynamic behavior with persisted secure preferences - */ - public void testDynamicPersisted() throws Exception { - URL location = getStorageLocation(); - assertNotNull(location); - - Bundle bundle01 = null; - Bundle bundle02 = null; - try { - { // block1: create and save using low priority module - bundle01 = installBundle("priority/low"); - // fill - this should use the "low" priority bundle - ISecurePreferences preferences = newPreferences(location, getOptions()); - ISecurePreferences node1 = preferences.node("/abc"); - node1.put(key, value, true); - preferences.flush(); - closePreferences(preferences); - } - - { // block2: add high priority module and reload - bundle02 = installBundle("priority/high"); - ISecurePreferences preferences = newPreferences(location, getOptions()); - // all should work well - check(preferences); - // new elements added should go through the high priority module - // -> add entries on the same node as the first fill - ISecurePreferences node1 = preferences.node("/abc"); - node1.put(key2, value2, true); - // -> add entries on a different node - ISecurePreferences node2 = preferences.node("/abc/high"); - node2.put(key, value, true); - preferences.flush(); - closePreferences(preferences); - } - - { // block3: uninstall high priority module and reload - if (uninstallBundle(bundle02)) - bundle02 = null; - ISecurePreferences preferences = newPreferences(location, getOptions()); - ISecurePreferences node1 = preferences.node("/abc"); - ISecurePreferences node2 = preferences.node("/abc/high"); - // check newly filled elements - should cause an exception - checkUnreadable(node1, key2); - checkUnreadable(node2, key); - // check original elements - should be able to read fine - check(preferences); - } - } finally { - // in case of exception in the process - if (bundle02 != null) - bundle02.uninstall(); - if (bundle01 != null) - bundle01.uninstall(); - StorageUtils.delete(location); - } - } - - protected void checkUnreadable(ISecurePreferences node, String keyToCheck) { - // check newly filled elements - should cause an exception - boolean exception = false; - try { - node.get(keyToCheck, defaultValue); - } catch (StorageException e) { - exception = true; - } - assertTrue(exception); - } - - protected Map getOptions() { - // Don't specify default password for those tests; they need to have - // password providers - return getOptions(null); - } - - /** - * Synchronizes to ensure bundle XML contribution has been processed - * before method returns. - */ - protected Bundle installBundle(String bundlePath) throws MalformedURLException, BundleException, IOException { - BundleContext bundleContext = SecurityTestsActivator.getDefault().getBundleContext(); - Bundle bundle = null; - WaitingRegistryListener listener = new WaitingRegistryListener(); - listener.register("org.eclipse.equinox.security.secureStorage"); - - try { - bundle = BundleTestingHelper.installBundle("0.1", bundleContext, TEST_FILES_ROOT + bundlePath); - BundleTestingHelper.refreshPackages(bundleContext, new Bundle[] {bundle}); - // synchronization: listener should receive 1 group of events - assertTrue(listener.waitFor(1, MAX_TIME_PER_BUNDLE) == 1); - } finally { - listener.unregister(); - } - return bundle; - } - - /** - * Synchronizes to ensure bundle XML contribution has been processed - * before method returns. - */ - protected boolean uninstallBundle(Bundle bundle) throws BundleException { - WaitingRegistryListener listener = new WaitingRegistryListener(); - listener.register("org.eclipse.equinox.security.secureStorage"); - try { - bundle.uninstall(); - bundle = null; - // synchronization: listener should receive 1 group of events - // There might be lots of active listeners by the time this test is run - // so give it some time - hence multiplication by 10 - assertTrue(listener.waitFor(1, 10 * MAX_TIME_PER_BUNDLE) == 1); - return true; - } finally { - listener.unregister(); - // in case of exception in the process - if (bundle != null) - bundle.uninstall(); - } - } - - public static Test suite() { - return new TestSuite(DynamicPreferencesTest.class); - } -} |