use of org.nuxeo.ecm.core.api.DocumentNotFoundException in project nuxeo-drive-server by nuxeo.
the class TestIntegrationTestOperations method testIntegrationTestsSetupAndTearDown.
@Test
public void testIntegrationTestsSetupAndTearDown() throws Exception {
// ---------------------------------------------------------
// Setup the integration tests environment as Administrator
// ---------------------------------------------------------
Blob testUserCredentialsBlob = (Blob) clientSession.newRequest(NuxeoDriveSetupIntegrationTests.ID).set("userNames", "joe,jack").set("permission", "ReadWrite").execute();
assertNotNull(testUserCredentialsBlob);
// Invalidate VCS cache
TransactionHelper.commitOrRollbackTransaction();
TransactionHelper.startTransaction();
// Check test users
String testUserCredentials = IOUtils.toString(testUserCredentialsBlob.getStream(), "UTF-8");
assertNotNull(testUserCredentials);
String[] testUserCrendentialsArray = StringUtils.split(testUserCredentials, ",");
assertEquals(2, testUserCrendentialsArray.length);
assertTrue(testUserCrendentialsArray[0].startsWith("drivejoe:"));
assertTrue(testUserCrendentialsArray[1].startsWith("drivejack:"));
// useMembersGroup is false by default
NuxeoPrincipal joePrincipal = userManager.getPrincipal("drivejoe");
assertNotNull(joePrincipal);
assertFalse(joePrincipal.getGroups().contains("members"));
NuxeoPrincipal jackPrincipal = userManager.getPrincipal("drivejack");
assertNotNull(jackPrincipal);
assertFalse(jackPrincipal.getGroups().contains("members"));
// Check test workspace
DocumentRef testWorkspaceRef = new PathRef(testWorkspacePath);
DocumentModel testWorkspace = session.getDocument(testWorkspaceRef);
assertEquals("Workspace", testWorkspace.getType());
assertEquals("Nuxeo Drive Test Workspace", testWorkspace.getTitle());
assertTrue(session.hasPermission(joePrincipal, testWorkspaceRef, SecurityConstants.WRITE));
assertTrue(session.hasPermission(jackPrincipal, testWorkspaceRef, SecurityConstants.WRITE));
// Create test users' personal workspaces for cleanup check
userWorkspaceService.getUserPersonalWorkspace("drivejoe", session.getRootDocument());
userWorkspaceService.getUserPersonalWorkspace("drivejack", session.getRootDocument());
assertNotNull(session.getDocument(new PathRef(userWorkspaceParentPath + "/drivejoe")));
assertNotNull(session.getDocument(new PathRef(userWorkspaceParentPath + "/drivejack")));
// Save personal workspaces
TransactionHelper.commitOrRollbackTransaction();
TransactionHelper.startTransaction();
// ----------------------------------------------------------------------
// Setup the integration tests environment with other user names without
// having teared it down previously => should start by cleaning it up
// ----------------------------------------------------------------------
testUserCredentialsBlob = (Blob) clientSession.newRequest(NuxeoDriveSetupIntegrationTests.ID).set("userNames", "sarah").set("useMembersGroup", true).set("permission", "ReadWrite").execute();
assertNotNull(testUserCredentialsBlob);
// Check cleanup
assertNull(userManager.getPrincipal("drivejoe"));
assertNull(userManager.getPrincipal("drivejack"));
// Process invalidations
TransactionHelper.commitOrRollbackTransaction();
TransactionHelper.startTransaction();
try {
session.getDocument(new PathRef(userWorkspaceParentPath + "/drivejoe"));
fail("User workspace should not exist.");
} catch (DocumentNotFoundException e) {
assertEquals(userWorkspaceParentPath + "/drivejoe", e.getMessage());
}
try {
session.getDocument(new PathRef(userWorkspaceParentPath + "/drivejack"));
fail("User workspace should not exist.");
} catch (DocumentNotFoundException e) {
assertEquals(userWorkspaceParentPath + "/drivejack", e.getMessage());
}
// Check test users
testUserCredentials = IOUtils.toString(testUserCredentialsBlob.getStream(), "UTF-8");
assertNotNull(testUserCredentials);
testUserCrendentialsArray = StringUtils.split(testUserCredentials, ",");
assertEquals(1, testUserCrendentialsArray.length);
assertTrue(testUserCrendentialsArray[0].startsWith("drivesarah:"));
NuxeoPrincipal sarahPrincipal = userManager.getPrincipal("drivesarah");
assertNotNull(sarahPrincipal);
assertTrue(sarahPrincipal.getGroups().contains("members"));
// Check test workspace
testWorkspace = session.getDocument(testWorkspaceRef);
assertEquals("Nuxeo Drive Test Workspace", testWorkspace.getTitle());
assertTrue(session.hasPermission(sarahPrincipal, testWorkspaceRef, SecurityConstants.WRITE));
// Create test users' personal workspaces for cleanup check
userWorkspaceService.getUserPersonalWorkspace("drivesarah", session.getRootDocument());
assertNotNull(session.getDocument(new PathRef(userWorkspaceParentPath + "/drivesarah")));
// Save personal workspaces
TransactionHelper.commitOrRollbackTransaction();
TransactionHelper.startTransaction();
// ----------------------------------------------------------------------
// Try to setup the integration tests environment as an unauthorized
// user => should fail
// ----------------------------------------------------------------------
String sarahCredentials = testUserCrendentialsArray[0];
String sarahPassword = sarahCredentials.substring(sarahCredentials.indexOf(':') + 1);
Session unauthorizedSession = automationClient.getSession("drivesarah", sarahPassword);
try {
unauthorizedSession.newRequest(NuxeoDriveSetupIntegrationTests.ID).set("userNames", "john,bob").set("permission", "ReadWrite").execute();
fail("NuxeoDrive.SetupIntegrationTests operation should not be callable by a non administrator.");
} catch (Exception e) {
// Expected
}
// ----------------------------------------------------------------------
try {
unauthorizedSession.newRequest(NuxeoDriveTearDownIntegrationTests.ID).execute();
fail("NuxeoDrive.TearDownIntegrationTests operation should not be callable by a non administrator.");
} catch (Exception e) {
// Expected
}
// ----------------------------------------------------------------------
// Tear down the integration tests environment as Administrator
// ----------------------------------------------------------------------
clientSession.newRequest(NuxeoDriveTearDownIntegrationTests.ID).execute();
assertTrue(userManager.searchUsers("drive").isEmpty());
// Process invalidations
TransactionHelper.commitOrRollbackTransaction();
TransactionHelper.startTransaction();
try {
session.getDocument(new PathRef(userWorkspaceParentPath + "/drivesarah"));
fail("User workspace should not exist.");
} catch (DocumentNotFoundException e) {
assertEquals(userWorkspaceParentPath + "/drivesarah", e.getMessage());
}
assertFalse(session.exists(testWorkspaceRef));
}
Aggregations