/* * (C) Copyright 2013 Nuxeo SA (http://nuxeo.com/) and contributors. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Lesser General Public License * (LGPL) version 2.1 which accompanies this distribution, and is available at * http://www.gnu.org/licenses/lgpl-2.1.html * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * Contributors: * guillaume */ package org.nuxeo.ftest.cap; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import java.io.IOException; import java.text.ParseException; import java.util.Date; import java.util.List; import org.junit.Test; import org.nuxeo.functionaltests.AbstractTest; import org.nuxeo.functionaltests.pages.DocumentBasePage; import org.nuxeo.functionaltests.pages.DocumentBasePage.UserNotConnectedException; import org.nuxeo.functionaltests.pages.admincenter.usermanagement.UsersGroupsBasePage; import org.nuxeo.functionaltests.pages.admincenter.usermanagement.UsersTabSubPage; import org.nuxeo.functionaltests.pages.tabs.AccessRightsSubPage; import org.nuxeo.functionaltests.pages.tabs.ContentTabSubPage; import org.openqa.selenium.By; import org.openqa.selenium.WebElement; /** * Test the copy and past feature. * * @since 5.8 */ public class ITCopyPasteTest extends AbstractTest { private final static String WORKSPACE1_TITLE = "WorkspaceTitle_" + new Date().getTime(); private final static String WORKSPACE2_TITLE = "WorkspaceTitle_" + new Date().getTime() + "a"; private final String FILE1_NAME = "testFile1"; private void prepare() throws UserNotConnectedException, IOException { DocumentBasePage documentBasePage; DocumentBasePage s = login(); // Create a new user if not exist UsersGroupsBasePage page; UsersTabSubPage usersTab = s.getAdminCenter().getUsersGroupsHomePage().getUsersTab(); usersTab = usersTab.searchUser(TEST_USERNAME); if (!usersTab.isUserFound(TEST_USERNAME)) { page = usersTab.getUserCreatePage().createUser(TEST_USERNAME, TEST_USERNAME, null, null, TEST_USERNAME, TEST_PASSWORD, "members"); usersTab = page.getUsersTab(true); } // search user usersTab = usersTab.searchUser(TEST_USERNAME); assertTrue(usersTab.isUserFound(TEST_USERNAME)); // create a wokspace1 and grant all rights to the test user documentBasePage = usersTab.exitAdminCenter().getHeaderLinks().getNavigationSubPage().goToDocument( "Workspaces"); DocumentBasePage workspacePage = createWorkspace(documentBasePage, WORKSPACE1_TITLE, null); AccessRightsSubPage accessRightSubTab = workspacePage.getManageTab().getAccessRightsSubTab(); // Need Read if (!accessRightSubTab.hasPermissionForUser("Read", TEST_USERNAME)) { accessRightSubTab.grantPermissionForUser("Read", TEST_USERNAME); } // Create test File 1 createFile(workspacePage, FILE1_NAME, null, false, null, null, null); workspacePage.getHeaderLinks().getNavigationSubPage().goToDocument( "Workspaces"); workspacePage = createWorkspace(documentBasePage, WORKSPACE2_TITLE, null); accessRightSubTab = workspacePage.getManageTab().getAccessRightsSubTab(); if (!accessRightSubTab.hasPermissionForUser("Manage everything", TEST_USERNAME)) { accessRightSubTab.grantPermissionForUser("Manage everything", TEST_USERNAME); } logout(); } /** * Copy and paste a simple file. * * @since 5.8 */ @Test public void testSimpleCopyAndPaste() throws UserNotConnectedException, IOException, ParseException { prepare(); DocumentBasePage documentBasePage; // Log as test user and edit the created workspace documentBasePage = loginAsTestUser().getContentTab().goToDocument( "Workspaces").getContentTab().goToDocument(WORKSPACE1_TITLE); ContentTabSubPage contentTabSubPage = documentBasePage.getContentTab(); contentTabSubPage.copyByTitle(FILE1_NAME); documentBasePage = contentTabSubPage.getHeaderLinks().getNavigationSubPage().goToDocument( WORKSPACE2_TITLE); contentTabSubPage = documentBasePage.getContentTab(); contentTabSubPage = contentTabSubPage.paste(); List<WebElement> docs = contentTabSubPage.getChildDocumentRows(); assertNotNull(docs); assertEquals(docs.size(), 1); assertNotNull(docs.get(0).findElement(By.linkText(FILE1_NAME))); restoreSate(); } private void restoreSate() throws UserNotConnectedException { UsersTabSubPage usersTab = login().getAdminCenter().getUsersGroupsHomePage().getUsersTab(); usersTab = usersTab.searchUser(TEST_USERNAME); usersTab = usersTab.viewUser(TEST_USERNAME).deleteUser(); DocumentBasePage documentBasePage = usersTab.exitAdminCenter().getHeaderLinks().getNavigationSubPage().goToDocument( "Workspaces"); deleteWorkspace(documentBasePage, WORKSPACE1_TITLE); deleteWorkspace(documentBasePage, WORKSPACE2_TITLE); logout(); } }