/** * Tests restore version. * * @param docPage the current doc page * @return the current doc page */ protected DocumentBasePage testRestoreVersion(DocumentBasePage docPage) { // Go to archived versions sub tab ArchivedVersionsSubPage archivedVersionsPage = docPage.getHistoryTab().getArchivedVersionsSubTab(); // Restore version 1.0 and check its title DocumentBasePage restoredVersionPage = archivedVersionsPage.restoreVersion("1.0"); restoredVersionPage.checkDocTitle("Test file: modif 1"); // Return doc return restoredVersionPage; }
@Test public void testDefaultSerialWorkflow() throws Exception { createTestUser(USER_JDOE, USER_JDOE); // create a file doc DocumentBasePage defaultDomainPage = login(); DocumentBasePage filePage = initRepository(defaultDomainPage); // start the default serial workflow and choose jdoe_workflow as // reviewer filePage = startDefaultSerialWorkflow(filePage, USER_JDOE); logout(); filePage = login(USER_JDOE, USER_JDOE); UserHomePage homePage = filePage.getUserHome(); // check that jdoe_workflow has an open task on his tasks dashboard WorkflowHomePage workflowHomePage = homePage.getWorkflowHomePage(); assertTrue(workflowHomePage.taskExistsOnTasksDashboard("Validate the document")); workflowHomePage.processFirstTask(); SummaryTabSubPage summaryTabPage = workflowHomePage.redirectToTask("Test file"); // check that the open task is displayed on the summary page assertTrue(summaryTabPage.workflowAlreadyStarted()); assertTrue(summaryTabPage.openTaskForCurrentUser()); // switch to workflow tab and validate task WorkflowTabSubPage workflowTab = summaryTabPage.getWorkflow(); WebElement taskLayoutDiv = workflowTab.getTaskLayoutNode(); // get value for Participants on the review that were set on the // previous step // the value is stored in a global workflow variable String participantsOnTheReview = taskLayoutDiv.findElement(By.className("user")).getText(); assertEquals("jdoe_workflow lastname1", participantsOnTheReview); workflowTab.endTask("Validate"); summaryTabPage = workflowTab.getSummaryTab(); homePage = filePage.getUserHome(); // check that jdoe_workflow doesn't have the task on his workflow tasks // dashboard workflowHomePage = homePage.getWorkflowHomePage(); assertTrue(workflowHomePage.isTasksDashboardEmpty()); // cleanup file doc and user logout(); login(); cleanRepository(filePage); logout(); deleteTestUser(USER_JDOE); }
/** * Tests delete versions. * * @param docPage the current doc page * @return the current doc page */ protected DocumentBasePage testDeleteVersions(DocumentBasePage docPage) { // Go to archived versions sub tab ArchivedVersionsSubPage archivedVersionsPage = docPage.getHistoryTab().getArchivedVersionsSubTab(); // Check cannot delete versions since none is selected archivedVersionsPage.checkCanRemoveSelectedVersions(false); // Select version 1.0 archivedVersionsPage = archivedVersionsPage.selectVersion("1.0"); // Check can delete versions since one is selected archivedVersionsPage.checkCanRemoveSelectedVersions(true); // Select version 2.0 archivedVersionsPage = archivedVersionsPage.selectVersion("2.0"); // Check can delete versions since two are selected archivedVersionsPage.checkCanRemoveSelectedVersions(true); // Delete selected versions archivedVersionsPage = archivedVersionsPage.removeSelectedVersions(); // Check version labels, there should be none List<String> versionLabels = archivedVersionsPage.getVersionLabels(); assertEquals(0, versionLabels.size()); // Go back to doc and return it return archivedVersionsPage.goToDocumentByBreadcrumb("Test file: modif 1"); }
/** * Tests view versions. * * @param docPage the current doc page * @return the current doc page */ protected DocumentBasePage testViewVersions(DocumentBasePage docPage) { // Go to archived versions sub tab ArchivedVersionsSubPage archivedVersionsPage = docPage.getHistoryTab().getArchivedVersionsSubTab(); // Check version labels List<String> versionLabels = archivedVersionsPage.getVersionLabels(); List<String> expectedVersionLabels = new ArrayList<String>(); expectedVersionLabels.add("1.0"); expectedVersionLabels.add("2.0"); assertEquals(expectedVersionLabels, versionLabels); // View version 1.0 and check its title DocumentBasePage versionPage = archivedVersionsPage.viewVersion("1.0"); versionPage.checkDocTitle("Test file: modif 1 (Version 1.0)"); // Go back to doc docPage = versionPage.goToDocumentByBreadcrumb("Test file: modif 2"); // Go to archived versions sub tab archivedVersionsPage = docPage.getHistoryTab().getArchivedVersionsSubTab(); // View version 2.0 and check its title versionPage = archivedVersionsPage.viewVersion("2.0"); versionPage.checkDocTitle("Test file: modif 2 (Version 2.0)"); // Go back to doc and return it return versionPage.goToDocumentByBreadcrumb("Test file: modif 2"); }
protected DocumentBasePage startDefaultSerialWorkflow( DocumentBasePage filePage, final String username) { // start workflow SummaryTabSubPage summaryTabPage = filePage.getSummaryTab(); summaryTabPage.startDefaultWorkflow(); assertTrue( summaryTabPage .workflowTasksForm .getText() .contains("Please select some participants for the review")); // click on the workflow tab WorkflowTabSubPage workflowTab = filePage.getWorkflow(); workflowTab.showGraphView(); workflowTab.closeGraphView(); workflowTab.addWorkflowReviewer(username); workflowTab.startWorkflow(); summaryTabPage = filePage.getSummaryTab(); assertTrue(summaryTabPage.workflowAlreadyStarted()); return filePage; }
protected DocumentBasePage startDefaultParallelWorkflow(DocumentBasePage filePage) { // start workflow SummaryTabSubPage summaryTabPage = filePage.getSummaryTab(); summaryTabPage.startDefaultParallelWorkflow(); assertTrue( summaryTabPage .workflowTasksForm .getText() .contains("Please select some participants for the review")); // click on the workflow tab WorkflowTabSubPage workflowTab = filePage.getWorkflow(); workflowTab.showGraphView(); workflowTab.closeGraphView(); workflowTab.addParallelWorkflowReviewer(USER_JDOE); workflowTab.addParallelWorkflowReviewer(USER_JSMITH); workflowTab.addParallelWorkflowEndDate(); workflowTab.startWorkflow(); summaryTabPage = filePage.getSummaryTab(); assertTrue(summaryTabPage.workflowAlreadyStarted()); return filePage; }
/** * Copy and paste a simple file. * * @since 5.8 */ @Test public void testSimpleCopyAndPaste() throws UserNotConnectedException, IOException, ParseException { // NXP-18344, to be removed once upgraded to more recent webdriver lib doNotRunOnWindowsWithFF26(); 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(); }
@Test public void testModifyWsDescription() throws Exception { // As an administrator, check that jsmith is created and has rights UsersGroupsBasePage usergroupPage = login().getAdminCenter().getUsersGroupsHomePage(); UsersTabSubPage page = usergroupPage.getUsersTab().searchUser(TEST_USERNAME); if (!page.isUserFound(TEST_USERNAME)) { usergroupPage = page.getUserCreatePage() .createUser( TEST_USERNAME, "John", "Smith", "Nuxeo", "*****@*****.**", TEST_PASSWORD, "members"); } DocumentBasePage documentBasePage = usergroupPage .exitAdminCenter() .getHeaderLinks() .getNavigationSubPage() .goToDocument("Workspaces"); PermissionsSubPage permissionsSubPage = documentBasePage.getPermissionsTab(); // Need WriteSecurity (so in practice Manage everything) to edit a // Workspace if (!permissionsSubPage.hasPermissionForUser("Manage everything", TEST_USERNAME)) { permissionsSubPage.grantPermissionForUser("Manage everything", TEST_USERNAME); } logout(); // Starting the test for real documentBasePage = login(TEST_USERNAME, TEST_PASSWORD).getContentTab().goToDocument("Workspaces"); // Create a new workspace named 'WorkspaceDescriptionModify_{current // time}' DocumentBasePage workspacePage = createWorkspace(documentBasePage, WORKSPACE_TITLE, "A workspace description"); // Modify Workspace description String descriptionModified = "Description modified"; workspacePage = workspacePage.getEditTab().edit(null, descriptionModified, null); assertEquals(descriptionModified, workspacePage.getCurrentFolderishDescription()); assertEquals(WORKSPACE_TITLE, workspacePage.getCurrentDocumentTitle()); // Clean up repository restoreState(); // Logout logout(); }
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); PermissionsSubPage permissionsSubPage = workspacePage.getPermissionsTab(); // Need Read if (!permissionsSubPage.hasPermissionForUser("Read", TEST_USERNAME)) { permissionsSubPage.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); permissionsSubPage = workspacePage.getPermissionsTab(); if (!permissionsSubPage.hasPermissionForUser("Manage everything", TEST_USERNAME)) { permissionsSubPage.grantPermissionForUser("Manage everything", TEST_USERNAME); } logout(); }
/** * Test trash management. * * @since 7.1 */ @Test public void testTrashPurge() throws UserNotConnectedException, IOException { DocumentBasePage documentBasePage = login(); // Create a file under workspace. DocumentBasePage workspacePage = documentBasePage.createWorkspace(WORKSPACE_TITLE, null); DocumentBasePage filePage = workspacePage.createFile(TEST_FILE_TITLE, null, false, null, null, null); // Copy/paste it to get 5 files. ContentTabSubPage content = filePage .getHeaderLinks() .getNavigationSubPage() .goToDocument(WORKSPACE_TITLE) .getContentTab() .copyByTitle(TEST_FILE_TITLE) .paste() .paste() .paste() .paste(); List<WebElement> docs = content.getChildDocumentRows(); assertNotNull(docs); assertEquals(5, docs.size()); // Select all files and remove them. docs = content.removeAllDocuments().getChildDocumentRows(); assertNotNull(docs); assertEquals(0, docs.size()); // Go to trash page. TrashSubPage trashSubPage = asPage(DocumentBasePage.class).getManageTab().getTrashSubTab(); docs = trashSubPage.getChildDocumentRows(); assertNotNull(docs); assertEquals(5, docs.size()); // Empty the trash. docs = trashSubPage.emptyTrash().getChildDocumentRows(); assertNotNull(docs); assertEquals(0, docs.size()); // cleanup workspace asPage(DocumentBasePage.class).getNavigationSubPage().goToDocument("Workspaces"); asPage(ContentTabSubPage.class).removeDocument(WORKSPACE_TITLE); }
@Test public void testTaskReassignmentAndDelegation() throws Exception { createTestUser(USER_JDOE, USER_JDOE); createTestUser(USER_BREE, USER_BREE); createTestUser(USER_JSMITH, USER_JSMITH); createTestUser(USER_LINNET, USER_LINNET); // create a file doc DocumentBasePage defaultDomainPage = login(); DocumentBasePage filePage = initRepository(defaultDomainPage); // start the default parallel workflow and choose jdoe_workflow and // jsmith_workflow as // reviewers filePage = startDefaultParallelWorkflow(filePage); logout(); filePage = login(USER_JDOE, USER_JDOE); UserHomePage homePage = filePage.getUserHome(); // check that jdoe_workflow has an open task on his tasks dashboard WorkflowHomePage workflowHomePage = homePage.getWorkflowHomePage(); assertTrue(workflowHomePage.taskExistsOnTasksDashboard("Give your opinion")); workflowHomePage.processFirstTask(); // reassign task to bree_workflow workflowHomePage.reassignTask("Give your opinion", USER_BREE); // check that jdoe_workflow has no longer the task assertTrue(workflowHomePage.isTasksDashboardEmpty()); // login with bree_workflow to process this task filePage = login(USER_BREE, USER_BREE); homePage = filePage.getUserHome(); workflowHomePage = homePage.getWorkflowHomePage(); assertTrue(workflowHomePage.taskExistsOnTasksDashboard("Give your opinion")); workflowHomePage.processFirstTask(); SummaryTabSubPage summaryTabPage = workflowHomePage.redirectToTask("Test file"); // check that the open task is displayed on the summary page assertTrue(summaryTabPage.workflowAlreadyStarted()); assertTrue(summaryTabPage.parallelOpenTaskForCurrentUser()); WorkflowTabSubPage workflowTab = summaryTabPage.getWorkflow(); workflowTab.endTask("Approve", "Approve comment"); // check that jsmith_workflow has an open task on his dashboard filePage = login(USER_JSMITH, USER_JSMITH); homePage = filePage.getUserHome(); workflowHomePage = homePage.getWorkflowHomePage(); assertTrue(workflowHomePage.taskExistsOnTasksDashboard("Give your opinion")); workflowHomePage.processFirstTask(); // delegate his task to linnet_workflow workflowHomePage.delegateTask("Give your opinion", USER_LINNET); // test that jsmith_workflow can still see the task assertTrue(workflowHomePage.taskExistsOnTasksDashboard("Give your opinion")); // login with linnet_workflow to process the task filePage = login(USER_LINNET, USER_LINNET); homePage = filePage.getUserHome(); workflowHomePage = homePage.getWorkflowHomePage(); assertTrue(workflowHomePage.taskExistsOnTasksDashboard("Give your opinion")); workflowHomePage.processFirstTask(); summaryTabPage = workflowHomePage.redirectToTask("Test file"); // check that the open task is displayed on the summary page assertTrue(summaryTabPage.workflowAlreadyStarted()); assertTrue(summaryTabPage.parallelOpenTaskForCurrentUser()); // switch to workflow tab and validate task workflowTab = summaryTabPage.getWorkflow(); workflowTab.endTask("Reject", "Reject comment"); // login with Administrator. the workflow initiator to check the final // task filePage = login(); homePage = filePage.getUserHome(); workflowHomePage = homePage.getWorkflowHomePage(); assertTrue(workflowHomePage.taskExistsOnTasksDashboard("Consolidate the review")); workflowHomePage.processFirstTask(); summaryTabPage = workflowHomePage.redirectToTask("Test file"); assertTrue(summaryTabPage.workflowAlreadyStarted()); // check the consultation wrap-up workflowTab = summaryTabPage.getWorkflow(); WebElement taskLayoutDiv = workflowTab.getTaskLayoutNode(); String parallelConsultationWrapUp = taskLayoutDiv.findElement(By.xpath("//span[contains(@id, 'nxw_review_result')]")).getText(); assertTrue( parallelConsultationWrapUp.contains( "bree_workflow lastname1 bree_workflow OK Approve comment")); assertTrue( parallelConsultationWrapUp.contains( "linnet_workflow lastname1 linnet_workflow KO Reject comment")); // end the last task workflowTab.endTask("Approve"); summaryTabPage = workflowTab.getSummaryTab(); assertEquals("Approved", summaryTabPage.getCurrentLifeCycleState()); homePage = filePage.getUserHome(); // check that Administrator doesn't have the task on his workflow tasks // dashboard workflowHomePage = homePage.getWorkflowHomePage(); assertTrue(workflowHomePage.isTasksDashboardEmpty()); // cleanup file doc and user logout(); login(); cleanRepository(filePage); logout(); deleteTestUser(USER_JDOE); deleteTestUser(USER_JSMITH); deleteTestUser(USER_BREE); deleteTestUser(USER_LINNET); }
@Test public void testDefaultParallelWorkflow() throws Exception { createTestUser(USER_JDOE, USER_JDOE); createTestUser(USER_JSMITH, USER_JSMITH); // create a file doc DocumentBasePage defaultDomainPage = login(); DocumentBasePage filePage = initRepository(defaultDomainPage); // start the default parallel workflow and choose jdoe_workflow and // jsmith_workflow as // reviewers filePage = startDefaultParallelWorkflow(filePage); logout(); filePage = login(USER_JDOE, USER_JDOE); UserHomePage homePage = filePage.getUserHome(); // check that jdoe_workflow has an open task on his tasks dashboard WorkflowHomePage workflowHomePage = homePage.getWorkflowHomePage(); assertTrue(workflowHomePage.taskExistsOnTasksDashboard("Give your opinion")); workflowHomePage.processFirstTask(); SummaryTabSubPage summaryTabPage = workflowHomePage.redirectToTask("Test file"); // check that the open task is displayed on the summary page assertTrue(summaryTabPage.workflowAlreadyStarted()); assertTrue(summaryTabPage.parallelOpenTaskForCurrentUser()); // switch to workflow tab and validate task WorkflowTabSubPage workflowTab = summaryTabPage.getWorkflow(); workflowTab.endTask("Approve"); // check that jsmith_workflow has an open task on his dashboard filePage = login(USER_JSMITH, USER_JSMITH); homePage = filePage.getUserHome(); workflowHomePage = homePage.getWorkflowHomePage(); assertTrue(workflowHomePage.taskExistsOnTasksDashboard("Give your opinion")); workflowHomePage.processFirstTask(); summaryTabPage = workflowHomePage.redirectToTask("Test file"); // check that the open task is displayed on the summary page assertTrue(summaryTabPage.workflowAlreadyStarted()); assertTrue(summaryTabPage.parallelOpenTaskForCurrentUser()); // switch to workflow tab and validate task workflowTab = summaryTabPage.getWorkflow(); workflowTab.endTask("Reject"); // login with Administrator. the workflow initiator to check the final // task filePage = login(); homePage = filePage.getUserHome(); workflowHomePage = homePage.getWorkflowHomePage(); assertTrue(workflowHomePage.taskExistsOnTasksDashboard("Consolidate the review")); workflowHomePage.processFirstTask(); summaryTabPage = workflowHomePage.redirectToTask("Test file"); assertTrue(summaryTabPage.workflowAlreadyStarted()); // switch to workflow tab and validate task workflowTab = summaryTabPage.getWorkflow(); workflowTab.endTask("Approve"); // check that the workflow was ended but jdoe_workflow doesn't have the // right to // start another workflow summaryTabPage = workflowTab.getSummaryTab(); assertEquals("Approved", summaryTabPage.getCurrentLifeCycleState()); // Check that the wf selector and the start button are no longer visible since we can't start a // default workflow // on a document on which the current lifecycle state is 'approved' try { driver.findElement(By.xpath(SummaryTabSubPage.WORKFLOW_SELECTOR_XPATH)); fail("Default workflow should not be started on 'Approved' documents"); } catch (NoSuchElementException e) { // expected } try { driver.findElement(By.xpath(SummaryTabSubPage.WORKFLOW_START_BUTTON_XPATH)); fail("Default workflow should not be started on 'Approved' documents"); } catch (NoSuchElementException e) { // expected } homePage = filePage.getUserHome(); // check that Administrator doesn't have the task on his workflow tasks // dashboard workflowHomePage = homePage.getWorkflowHomePage(); assertTrue(workflowHomePage.isTasksDashboardEmpty()); // cleanup file doc and user logout(); login(); cleanRepository(filePage); logout(); deleteTestUser(USER_JDOE); deleteTestUser(USER_JSMITH); }