use of org.xwiki.repository.test.TestExtension in project xwiki-platform by xwiki.
the class ExtensionIT method testUninstall.
/**
* Tests how an extension is uninstalled.
*/
@Test
public void testUninstall() throws Exception {
// Setup the extension and its dependencies.
ExtensionId dependencyId = new ExtensionId("bob-xar-extension", "2.5-milestone-2");
getRepositoryTestUtils().addExtension(getRepositoryTestUtils().getTestExtension(dependencyId, "xar"));
ExtensionId extensionId = new ExtensionId("alice-xar-extension", "1.3");
TestExtension extension = getRepositoryTestUtils().getTestExtension(extensionId, "xar");
extension.addDependency(new DefaultExtensionDependency(dependencyId.getId(), new DefaultVersionConstraint(dependencyId.getVersion().getValue())));
getRepositoryTestUtils().addExtension(extension);
// Install the extensions.
getExtensionTestUtils().install(extensionId);
// Check if the installed pages are present.
assertTrue(getUtil().pageExists("ExtensionTest", "Alice"));
assertTrue(getUtil().pageExists("ExtensionTest", "Bob"));
// Uninstall the dependency.
ExtensionAdministrationPage adminPage = ExtensionAdministrationPage.gotoInstalledExtensions();
ExtensionPane extensionPane = adminPage.getSearchBar().clickAdvancedSearch().search(dependencyId).getExtension(0);
extensionPane = extensionPane.uninstall();
// Check the uninstall plan. Both extensions should be included.
List<DependencyPane> uninstallPlan = extensionPane.openProgressSection().getJobPlan();
assertEquals(2, uninstallPlan.size());
assertEquals(extensionId, uninstallPlan.get(0).getId());
assertEquals("installed", uninstallPlan.get(0).getStatus());
assertEquals("Installed", uninstallPlan.get(0).getStatusMessage());
assertEquals(dependencyId, uninstallPlan.get(1).getId());
assertEquals("installed-dependency", uninstallPlan.get(1).getStatus());
assertEquals("Installed as dependency", uninstallPlan.get(1).getStatusMessage());
// Check the confirmation to delete the unused wiki pages.
extensionPane = extensionPane.confirm();
UnusedPagesPane unusedPages = extensionPane.openProgressSection().getUnusedPages();
assertTrue(unusedPages.contains("ExtensionTest", "Alice"));
assertTrue(unusedPages.contains("ExtensionTest", "Bob"));
// Finish the uninstall and check the log.
extensionPane = extensionPane.confirm();
List<LogItemPane> log = extensionPane.openProgressSection().getJobLog();
assertTrue(log.size() > 2);
assertEquals("info", log.get(2).getLevel());
assertEquals("Resolving extension [bob-xar-extension 2.5-milestone-2] from namespace [Home]", log.get(2).getMessage());
assertEquals("info", log.get(log.size() - 1).getLevel());
assertEquals("Finished job of type [uninstall] with identifier " + "[extension/action/bob-xar-extension/wiki:xwiki]", log.get(log.size() - 1).getMessage());
// Check if the uninstalled pages have been deleted.
assertFalse(getUtil().pageExists("ExtensionTest", "Alice"));
assertFalse(getUtil().pageExists("ExtensionTest", "Bob"));
// Install both extension again and uninstall only the one with the dependency.
getExtensionTestUtils().install(extensionId);
adminPage = ExtensionAdministrationPage.gotoInstalledExtensions();
extensionPane = adminPage.getSearchBar().clickAdvancedSearch().search(extensionId).getExtension(0);
extensionPane = extensionPane.uninstall();
// Check the uninstall plan. Only one extension should be included.
uninstallPlan = extensionPane.openProgressSection().getJobPlan();
assertEquals(1, uninstallPlan.size());
assertEquals(extensionId, uninstallPlan.get(0).getId());
// Check the confirmation to delete the unused wiki pages.
extensionPane = extensionPane.confirm();
unusedPages = extensionPane.openProgressSection().getUnusedPages();
assertTrue(unusedPages.contains("ExtensionTest", "Alice"));
assertFalse(unusedPages.contains("ExtensionTest", "Bob"));
// Finish the uninstall and check the log.
log = extensionPane.confirm().openProgressSection().getJobLog();
assertTrue(log.size() > 2);
assertEquals("info", log.get(2).getLevel());
assertEquals("Resolving extension [alice-xar-extension 1.3] from namespace [Home]", log.get(2).getMessage());
assertEquals("info", log.get(log.size() - 1).getLevel());
assertEquals("Finished job of type [uninstall] with identifier " + "[extension/action/alice-xar-extension/wiki:xwiki]", log.get(log.size() - 1).getMessage());
// Check if the uninstalled pages have been deleted.
assertFalse(getUtil().pageExists("ExtensionTest", "Alice"));
assertTrue(getUtil().pageExists("ExtensionTest", "Bob"));
// Check the list of installed extensions. It should contain only the second extension.
adminPage = ExtensionAdministrationPage.gotoInstalledExtensions();
SearchResultsPane searchResults = adminPage.getSearchBar().search("alice");
assertEquals(0, searchResults.getDisplayedResultsCount());
assertNotNull(searchResults.getNoResultsMessage());
searchResults = new SimpleSearchPane().search("bob");
assertEquals(1, searchResults.getDisplayedResultsCount());
extensionPane = searchResults.getExtension(0);
assertEquals("installed-dependency", extensionPane.getStatus());
assertEquals(dependencyId, extensionPane.getId());
}
Aggregations