/* * Jitsi, the OpenSource Java VoIP and Instant Messaging client. * * Copyright @ 2015 Atlassian Pty Ltd * * 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://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License 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 net.java.sip.communicator.slick.protocol.jabber; import junit.framework.*; import net.java.sip.communicator.service.protocol.*; import org.jitsi.service.configuration.*; import org.osgi.framework.*; /** * Contains tests verifying persistence of account uninstallation. In other * words we try to make sure that once uninstalled an account remains * uninstalled. * * @author Emil Ivov */ public class TestAccountUninstallationPersistence extends TestCase { /** * Creates a new test instance wrapper around the test with the specified * name. * @param testName the name of the test that we will be executing. */ public TestAccountUninstallationPersistence(String testName) { super(testName); } /** * Retrieves a reference to the Jabber bundle, stops it and uninstalls it and * then reinstalls it in order to make sure that accounts are not reloaded * once removed. * * @throws java.lang.Exception if something goes wrong while manipulating * the bundles. */ public void testAccountUninstallationPersistence() throws Exception { Bundle providerBundle = JabberSlickFixture.providerBundle; providerBundle.stop(); assertTrue("Couldn't stop the protocol provider bundle. State was " + providerBundle.getState() , Bundle.ACTIVE != providerBundle.getState() && Bundle.STOPPING != providerBundle.getState()); providerBundle.uninstall(); assertEquals("Couldn't stop the protocol provider bundle." , Bundle.UNINSTALLED, providerBundle.getState()); //Now reinstall the bundle and restart the provider providerBundle = JabberSlickFixture.bc.installBundle(providerBundle.getLocation()); assertEquals("Couldn't re-install protocol provider bundle." , Bundle.INSTALLED, providerBundle.getState()); AccountManagerUtils.startBundleAndWaitStoredAccountsLoaded( JabberSlickFixture.bc, providerBundle, ProtocolNames.JABBER); assertEquals("Couldn't re-start protocol provider bundle." , Bundle.ACTIVE, providerBundle.getState()); //verify that the provider is not reinstalled ServiceReference[] jabberProviderRefs = null; try { jabberProviderRefs = JabberSlickFixture.bc.getServiceReferences( ProtocolProviderService.class.getName(), "(" + ProtocolProviderFactory.PROTOCOL + "=" +ProtocolNames.JABBER + ")"); } catch (InvalidSyntaxException ex) { fail("We apparently got our filter wrong " + ex.getMessage()); } //make sure we didn't retrieve a service assertTrue("A Jabber Protocol Provider Service was still regged as an " +"osgi service after it was explicitly uninstalled" ,jabberProviderRefs == null || jabberProviderRefs.length == 0); //and a nasty hack at the end - delete the configuration file so that //we get a fresh start on next run. ServiceReference confReference = JabberSlickFixture.bc.getServiceReference( ConfigurationService.class.getName()); ConfigurationService configurationService = (ConfigurationService) JabberSlickFixture.bc.getService(confReference); configurationService.purgeStoredConfiguration(); } }