/* * Copyright 2009-2012 Amazon Technologies, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at: * * http://aws.amazon.com/apache2.0 * * This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES * OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and * limitations under the License. */ package com.amazonaws.eclipse.core.preferences; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.jface.preference.PreferenceStore; import org.junit.Test; /** * Unit tests for the preference initializer to verify that it correctly imports * any pre-existing preferences from the EC2 plugin. * * @author Jason Fulghum <fulghum@amazon.com> */ public class PreferenceInitializerTest { /** * If the EC2 plugin preferences haven't been imported yet, we expect them * to be pulled from the EC2 plugin preference store and imported into the * AWS Toolkit Core preference store. */ @Test public void testImportPreferences() { MockPreferenceInitializer preferenceInitializer = new MockPreferenceInitializer(); IPreferenceStore preferenceStore = preferenceInitializer.getAwsToolkitCorePreferenceStore(); assertEquals("", preferenceStore.getString(PreferenceConstants.P_ACCESS_KEY)); assertFalse(preferenceStore.getBoolean(PreferenceConstants.P_EC2_PREFERENCES_IMPORTED)); preferenceInitializer.initializeDefaultPreferences(); assertEquals("accessKey", preferenceStore.getString(PreferenceConstants.P_ACCESS_KEY)); assertEquals("secretKey", preferenceStore.getString(PreferenceConstants.P_SECRET_KEY)); assertEquals("userId", preferenceStore.getString(PreferenceConstants.P_USER_ID)); assertEquals("certFile", preferenceStore.getString(PreferenceConstants.P_CERTIFICATE_FILE)); assertEquals("privateKey", preferenceStore.getString(PreferenceConstants.P_PRIVATE_KEY_FILE)); assertTrue(preferenceStore.getBoolean(PreferenceConstants.P_EC2_PREFERENCES_IMPORTED)); } /** * If the EC2 plugin preferences have already been imported, we expect them * to not be imported again. */ @Test public void testOnlyImportOnce() { MockPreferenceInitializer preferenceInitializer = new MockPreferenceInitializer(); IPreferenceStore preferenceStore = preferenceInitializer.getAwsToolkitCorePreferenceStore(); preferenceStore.setValue(PreferenceConstants.P_EC2_PREFERENCES_IMPORTED, true); assertEquals("", preferenceStore.getString(PreferenceConstants.P_ACCESS_KEY)); preferenceInitializer.initializeDefaultPreferences(); assertEquals("", preferenceStore.getString(PreferenceConstants.P_ACCESS_KEY)); } /** * Subclass of AWS Toolkit Core's preference initializer that stubs out real * EC2 and AWS Toolkit Core preference stores for easy testing. */ private static class MockPreferenceInitializer extends PreferenceInitializer { private IPreferenceStore awsToolkitCorePreferenceStore = new PreferenceStore(); private IPreferenceStore ec2PreferenceStore = new PreferenceStore(); MockPreferenceInitializer() { ec2PreferenceStore.setValue(PreferenceConstants.P_ACCESS_KEY, "accessKey"); ec2PreferenceStore.setValue(PreferenceConstants.P_SECRET_KEY, "secretKey"); ec2PreferenceStore.setValue(PreferenceConstants.P_USER_ID, "userId"); ec2PreferenceStore.setValue(PreferenceConstants.P_CERTIFICATE_FILE, "certFile"); ec2PreferenceStore.setValue(PreferenceConstants.P_PRIVATE_KEY_FILE, "privateKey"); } @Override protected IPreferenceStore getEc2PluginPreferenceStore() { return ec2PreferenceStore; } @Override protected IPreferenceStore getAwsToolkitCorePreferenceStore() { return awsToolkitCorePreferenceStore; } } }