Merge remote-tracking branch 'remotes/origin/release/V3.4' into merge/APPS-234_IntegrationTestsOnMySQL_master_no

# Conflicts:
#	rm-automation/rm-automation-ui/src/test/java/org/alfresco/test/enterprise/security/guides/GuidedClassificationTests.java
This commit is contained in:
rodicasutu
2020-11-16 21:46:30 +02:00
22 changed files with 109 additions and 58 deletions

View File

@@ -1,9 +1,10 @@
--- ---
import: import:
- source: .travis.env-vars.yml - source: travis/.travis.env-vars.yml
- source: .travis.tests-stage.yml - source: travis/.travis.tests-stage.yml
- source: .travis.release-stage.yml - source: travis/.travis.integration-test-MySQL.yml
- source: .travis.publish-stage.yml - source: travis/.travis.release-stage.yml
- source: travis/.travis.publish-stage.yml
dist: xenial dist: xenial
sudo: required sudo: required
language: java language: java

View File

@@ -17,7 +17,7 @@
<ags.repo>alfresco-governance-services-community-repo</ags.repo> <ags.repo>alfresco-governance-services-community-repo</ags.repo>
<tas.restapi.version>1.38</tas.restapi.version> <tas.restapi.version>1.38</tas.restapi.version>
<fluent.json.version>2.0.0</fluent.json.version> <fluent.json.version>2.0.0</fluent.json.version>
<jackson.databind.version>2.7.7</jackson.databind.version> <jackson.databind.version>2.7.9.1</jackson.databind.version>
</properties> </properties>
<build> <build>

View File

@@ -41,6 +41,7 @@ import static org.apache.commons.httpclient.HttpStatus.SC_INTERNAL_SERVER_ERROR;
import static org.testng.AssertJUnit.assertEquals; import static org.testng.AssertJUnit.assertEquals;
import static org.testng.AssertJUnit.assertTrue; import static org.testng.AssertJUnit.assertTrue;
import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
@@ -94,6 +95,7 @@ public class AuditAddToHoldTests extends BaseRMRestTest
private RecordCategoryChild recordFolder; private RecordCategoryChild recordFolder;
private List<AuditEntry> auditEntries; private List<AuditEntry> auditEntries;
private List<String> holdsList = asList(HOLD1, HOLD2); private List<String> holdsList = asList(HOLD1, HOLD2);
private List<String> holdsListRef = new ArrayList<>();
private String hold1NodeRef; private String hold1NodeRef;
@BeforeClass (alwaysRun = true) @BeforeClass (alwaysRun = true)
@@ -102,7 +104,8 @@ public class AuditAddToHoldTests extends BaseRMRestTest
STEP("Create 2 holds."); STEP("Create 2 holds.");
hold1NodeRef = holdsAPI.createHoldAndGetNodeRef(getAdminUser().getUsername(), hold1NodeRef = holdsAPI.createHoldAndGetNodeRef(getAdminUser().getUsername(),
getAdminUser().getPassword(), HOLD1, HOLD_REASON, HOLD_DESCRIPTION); getAdminUser().getPassword(), HOLD1, HOLD_REASON, HOLD_DESCRIPTION);
holdsAPI.createHold(getAdminUser().getUsername(), getAdminUser().getPassword(), HOLD2, HOLD_REASON, HOLD_DESCRIPTION); String hold2NodeRef = holdsAPI.createHoldAndGetNodeRef(getAdminUser().getUsername(), getAdminUser().getPassword(), HOLD2, HOLD_REASON, HOLD_DESCRIPTION);
holdsListRef = asList(hold1NodeRef, hold2NodeRef);
STEP("Create a new record category with a record folder."); STEP("Create a new record category with a record folder.");
recordCategory = createRootCategory(getRandomName("recordCategory")); recordCategory = createRootCategory(getRandomName("recordCategory"));
@@ -302,7 +305,7 @@ public class AuditAddToHoldTests extends BaseRMRestTest
@AfterClass (alwaysRun = true) @AfterClass (alwaysRun = true)
public void cleanUpAuditAddToHoldTests() public void cleanUpAuditAddToHoldTests()
{ {
holdsList.forEach(hold -> holdsAPI.deleteHold(getAdminUser().getUsername(), getAdminUser().getPassword(), hold)); holdsListRef.forEach(holdRef -> holdsAPI.deleteHold(getAdminUser(), holdRef));
dataSite.usingAdmin().deleteSite(privateSite); dataSite.usingAdmin().deleteSite(privateSite);
asList(rmAdmin, rmManagerNoReadOnHold, rmManagerNoReadOnNode).forEach(user -> getDataUser().usingAdmin().deleteUser(user)); asList(rmAdmin, rmManagerNoReadOnHold, rmManagerNoReadOnNode).forEach(user -> getDataUser().usingAdmin().deleteUser(user));
getRestAPIFactory().getRecordCategoryAPI().deleteRecordCategory(recordCategory.getId()); getRestAPIFactory().getRecordCategoryAPI().deleteRecordCategory(recordCategory.getId());

View File

@@ -37,6 +37,7 @@ import static org.apache.commons.httpclient.HttpStatus.SC_INTERNAL_SERVER_ERROR;
import static org.testng.AssertJUnit.assertEquals; import static org.testng.AssertJUnit.assertEquals;
import static org.testng.AssertJUnit.assertTrue; import static org.testng.AssertJUnit.assertTrue;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableMap;
@@ -67,6 +68,7 @@ public class AuditCreateHoldTests extends BaseRMRestTest
private final String HOLD1 = PREFIX + "createHold"; private final String HOLD1 = PREFIX + "createHold";
private final String HOLD2 = PREFIX + "createHold2"; private final String HOLD2 = PREFIX + "createHold2";
private final String HOLD3 = PREFIX + "createHold3"; private final String HOLD3 = PREFIX + "createHold3";
private List<String> holdsListRef = new ArrayList<>();
@Autowired @Autowired
private RMAuditService rmAuditService; private RMAuditService rmAuditService;
@@ -100,8 +102,9 @@ public class AuditCreateHoldTests extends BaseRMRestTest
rmAuditService.clearAuditLog(); rmAuditService.clearAuditLog();
STEP("Create a new hold."); STEP("Create a new hold.");
holdsAPI.createHold(rmAdmin.getUsername(), rmAdmin.getPassword(), HOLD1, HOLD_REASON, HOLD_DESCRIPTION); String hold1NodeRef = holdsAPI.createHoldAndGetNodeRef(rmAdmin.getUsername(), rmAdmin.getPassword(), HOLD1,
HOLD_REASON, HOLD_DESCRIPTION);
holdsListRef.add(hold1NodeRef);
STEP("Check the audit log contains the entry for the created hold with the hold details."); STEP("Check the audit log contains the entry for the created hold with the hold details.");
rmAuditService.checkAuditLogForEvent(getAdminUser(), CREATE_HOLD, rmAdmin, HOLD1, rmAuditService.checkAuditLogForEvent(getAdminUser(), CREATE_HOLD, rmAdmin, HOLD1,
asList(ImmutableMap.of("new", HOLD_REASON, "previous", "", "name", "Hold Reason"), asList(ImmutableMap.of("new", HOLD_REASON, "previous", "", "name", "Hold Reason"),
@@ -117,8 +120,8 @@ public class AuditCreateHoldTests extends BaseRMRestTest
public void createHoldEventIsNotAuditedForExistingHold() public void createHoldEventIsNotAuditedForExistingHold()
{ {
STEP("Create a new hold."); STEP("Create a new hold.");
holdsAPI.createHold(rmAdmin.getUsername(), rmAdmin.getPassword(), HOLD2, HOLD_REASON, HOLD_DESCRIPTION); String hold2NodeRef = holdsAPI.createHoldAndGetNodeRef(rmAdmin.getUsername(), rmAdmin.getPassword(), HOLD2, HOLD_REASON, HOLD_DESCRIPTION);
holdsListRef.add(hold2NodeRef);
rmAuditService.clearAuditLog(); rmAuditService.clearAuditLog();
STEP("Try to create again the same hold and expect action to fail."); STEP("Try to create again the same hold and expect action to fail.");
@@ -168,7 +171,9 @@ public class AuditCreateHoldTests extends BaseRMRestTest
rmAuditService.clearAuditLog(); rmAuditService.clearAuditLog();
STEP("Create a new hold."); STEP("Create a new hold.");
holdsAPI.createHold(rmAdmin.getUsername(), rmAdmin.getPassword(), HOLD3, HOLD_REASON, HOLD_DESCRIPTION); String hold3NodeRef = holdsAPI.createHoldAndGetNodeRef(rmAdmin.getUsername(), rmAdmin.getPassword(), HOLD3,
HOLD_REASON, HOLD_DESCRIPTION);
holdsListRef.add(hold3NodeRef);
STEP("Check that an user with no Read permissions over the hold can't see the entry for the create hold event"); STEP("Check that an user with no Read permissions over the hold can't see the entry for the create hold event");
assertTrue("The list of events should not contain Create Hold entry ", assertTrue("The list of events should not contain Create Hold entry ",
@@ -178,8 +183,7 @@ public class AuditCreateHoldTests extends BaseRMRestTest
@AfterClass (alwaysRun = true) @AfterClass (alwaysRun = true)
public void cleanUpAuditCreateHoldTests() public void cleanUpAuditCreateHoldTests()
{ {
asList(HOLD1, HOLD2, HOLD3).forEach(hold -> holdsListRef.forEach(holdRef -> holdsAPI.deleteHold(getAdminUser(), holdRef));
holdsAPI.deleteHold(getAdminUser().getUsername(), getAdminUser().getPassword(), hold));
asList(rmAdmin, rmManager).forEach(user -> getDataUser().usingAdmin().deleteUser(user)); asList(rmAdmin, rmManager).forEach(user -> getDataUser().usingAdmin().deleteUser(user));
} }
} }

View File

@@ -133,7 +133,7 @@ public class AuditDeleteHoldTests extends BaseRMRestTest
@AfterClass (alwaysRun = true) @AfterClass (alwaysRun = true)
public void cleanUpAuditDeleteHoldTests() public void cleanUpAuditDeleteHoldTests()
{ {
holdsAPI.deleteHold(getAdminUser().getUsername(), getAdminUser().getPassword(), HOLD); holdsAPI.deleteHold(getAdminUser(), holdNodeRef);
asList(rmAdmin, rmManager).forEach(user -> getDataUser().usingAdmin().deleteUser(user)); asList(rmAdmin, rmManager).forEach(user -> getDataUser().usingAdmin().deleteUser(user));
} }
} }

View File

@@ -41,6 +41,8 @@ import static org.apache.commons.httpclient.HttpStatus.SC_INTERNAL_SERVER_ERROR;
import static org.testng.AssertJUnit.assertEquals; import static org.testng.AssertJUnit.assertEquals;
import static org.testng.AssertJUnit.assertTrue; import static org.testng.AssertJUnit.assertTrue;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
@@ -97,6 +99,7 @@ public class AuditRemoveFromHoldTests extends BaseRMRestTest
private Record heldRecord; private Record heldRecord;
private List<AuditEntry> auditEntries; private List<AuditEntry> auditEntries;
private List<String> holdsList = asList(HOLD1, HOLD2, HOLD3); private List<String> holdsList = asList(HOLD1, HOLD2, HOLD3);
private List<String> holdsListRef = new ArrayList<>();
private FileModel heldContent; private FileModel heldContent;
private String hold1NodeRef; private String hold1NodeRef;
@@ -112,9 +115,10 @@ public class AuditRemoveFromHoldTests extends BaseRMRestTest
STEP("Create new holds."); STEP("Create new holds.");
hold1NodeRef = holdsAPI.createHoldAndGetNodeRef(getAdminUser().getUsername(), getAdminUser().getPassword(), hold1NodeRef = holdsAPI.createHoldAndGetNodeRef(getAdminUser().getUsername(), getAdminUser().getPassword(),
HOLD1, HOLD_REASON, HOLD_DESCRIPTION); HOLD1, HOLD_REASON, HOLD_DESCRIPTION);
holdsAPI.createHold(getAdminUser().getUsername(), getAdminUser().getPassword(), HOLD2, HOLD_REASON, HOLD_DESCRIPTION); String hold2NodeRef = holdsAPI.createHoldAndGetNodeRef(getAdminUser().getUsername(), getAdminUser().getPassword(), HOLD2, HOLD_REASON, HOLD_DESCRIPTION);
holdsAPI.createHold(getAdminUser().getUsername(), getAdminUser().getPassword(), HOLD3, HOLD_REASON, HOLD_DESCRIPTION); String hold3NodeRef = holdsAPI.createHoldAndGetNodeRef(getAdminUser().getUsername(), getAdminUser().getPassword(), HOLD3, HOLD_REASON, HOLD_DESCRIPTION);
holdsAPI.createHold(getAdminUser().getUsername(), getAdminUser().getPassword(), DELETED_HOLD, HOLD_REASON, HOLD_DESCRIPTION); String deleteNodeRef = holdsAPI.createHoldAndGetNodeRef(getAdminUser().getUsername(), getAdminUser().getPassword(), DELETED_HOLD, HOLD_REASON, HOLD_DESCRIPTION);
holdsListRef = asList(hold1NodeRef, hold2NodeRef, hold3NodeRef);
STEP("Create a new record category with a record folder."); STEP("Create a new record category with a record folder.");
recordCategory = createRootCategory(getRandomName("recordCategory")); recordCategory = createRootCategory(getRandomName("recordCategory"));
@@ -317,7 +321,7 @@ public class AuditRemoveFromHoldTests extends BaseRMRestTest
@AfterClass (alwaysRun = true) @AfterClass (alwaysRun = true)
public void cleanUpAuditRemoveFromHoldTests() public void cleanUpAuditRemoveFromHoldTests()
{ {
holdsList.forEach(hold -> holdsAPI.deleteHold(getAdminUser().getUsername(), getAdminUser().getPassword(), hold)); holdsListRef.forEach(holdRef -> holdsAPI.deleteHold(getAdminUser(), holdRef));
dataSite.usingAdmin().deleteSite(privateSite); dataSite.usingAdmin().deleteSite(privateSite);
asList(rmAdmin, rmManagerNoReadOnHold, rmManagerNoReadOnNode).forEach(user -> getDataUser().usingAdmin().deleteUser(user)); asList(rmAdmin, rmManagerNoReadOnHold, rmManagerNoReadOnNode).forEach(user -> getDataUser().usingAdmin().deleteUser(user));
getRestAPIFactory().getRecordCategoryAPI().deleteRecordCategory(recordCategory.getId()); getRestAPIFactory().getRecordCategoryAPI().deleteRecordCategory(recordCategory.getId());

View File

@@ -97,6 +97,7 @@ public class DeclareAndFileDocumentAsRecordTests extends BaseRMRestTest
private RecordCategory recordCategory; private RecordCategory recordCategory;
private RecordCategoryChild recordFolder, subcategoryRecordFolder, subCategory, closedRecordFolder, recordFolderWithSpacesInName; private RecordCategoryChild recordFolder, subcategoryRecordFolder, subCategory, closedRecordFolder, recordFolderWithSpacesInName;
private UnfiledContainerChild unfiledContainerFolder; private UnfiledContainerChild unfiledContainerFolder;
private String holdNodeRef;
@Autowired @Autowired
private DockerHelper dockerHelper; private DockerHelper dockerHelper;
@@ -406,7 +407,7 @@ public class DeclareAndFileDocumentAsRecordTests extends BaseRMRestTest
public void declareAndFileToHeldRecordFolderUsingFilesAPI() throws Exception public void declareAndFileToHeldRecordFolderUsingFilesAPI() throws Exception
{ {
RecordCategoryChild heldRecordFolder = createFolder(recordCategory.getId(), getRandomName("heldRecordFolder")); RecordCategoryChild heldRecordFolder = createFolder(recordCategory.getId(), getRandomName("heldRecordFolder"));
holdsAPI.createHold(getAdminUser().getUsername(), getAdminUser().getPassword(), HOLD_NAME, HOLD_REASON, HOLD_DESCRIPTION); holdNodeRef = holdsAPI.createHoldAndGetNodeRef(getAdminUser().getUsername(), getAdminUser().getPassword(), HOLD_NAME, HOLD_REASON, HOLD_DESCRIPTION);
holdsAPI.addItemToHold(getAdminUser().getUsername(), getAdminUser().getPassword(), heldRecordFolder.getId(), holdsAPI.addItemToHold(getAdminUser().getUsername(), getAdminUser().getPassword(), heldRecordFolder.getId(),
HOLD_NAME); HOLD_NAME);
@@ -457,7 +458,7 @@ public class DeclareAndFileDocumentAsRecordTests extends BaseRMRestTest
public void declareAndFileDocumentAsRecordCleanup() public void declareAndFileDocumentAsRecordCleanup()
{ {
//delete rm items //delete rm items
holdsAPI.deleteHold(getAdminUser().getUsername(), getAdminUser().getPassword(), HOLD_NAME); holdsAPI.deleteHold(getAdminUser(), holdNodeRef);
deleteRecordCategory(recordCategory.getId()); deleteRecordCategory(recordCategory.getId());
getRestAPIFactory().getUnfiledRecordFoldersAPI().deleteUnfiledRecordFolder(unfiledContainerFolder.getId()); getRestAPIFactory().getUnfiledRecordFoldersAPI().deleteUnfiledRecordFolder(unfiledContainerFolder.getId());

View File

@@ -89,6 +89,7 @@ public class FileVersionAsRecordTests extends BaseRMRestTest
private RecordCategory recordCategory; private RecordCategory recordCategory;
private RecordCategoryChild recordFolder, closedRecordFolder, heldRecordFolder; private RecordCategoryChild recordFolder, closedRecordFolder, heldRecordFolder;
private UnfiledContainerChild unfiledContainerFolder; private UnfiledContainerChild unfiledContainerFolder;
private String holdNodeRef;
@Autowired @Autowired
private RoleService roleService; private RoleService roleService;
@@ -114,7 +115,7 @@ public class FileVersionAsRecordTests extends BaseRMRestTest
unfiledContainerFolder = createUnfiledContainerChild(UNFILED_RECORDS_CONTAINER_ALIAS, unfiledContainerFolder = createUnfiledContainerChild(UNFILED_RECORDS_CONTAINER_ALIAS,
"Unfiled Folder " + getRandomAlphanumeric(), UNFILED_RECORD_FOLDER_TYPE); "Unfiled Folder " + getRandomAlphanumeric(), UNFILED_RECORD_FOLDER_TYPE);
heldRecordFolder = createFolder(recordCategory.getId(), getRandomName("heldRecordFolder")); heldRecordFolder = createFolder(recordCategory.getId(), getRandomName("heldRecordFolder"));
holdsAPI.createHold(getAdminUser().getUsername(), getAdminUser().getPassword(), HOLD_NAME, HOLD_REASON, HOLD_DESCRIPTION); holdNodeRef = holdsAPI.createHoldAndGetNodeRef(getAdminUser().getUsername(), getAdminUser().getPassword(), HOLD_NAME, HOLD_REASON, HOLD_DESCRIPTION);
holdsAPI.addItemToHold(getAdminUser().getUsername(), getAdminUser().getPassword(), heldRecordFolder.getId(), holdsAPI.addItemToHold(getAdminUser().getUsername(), getAdminUser().getPassword(), heldRecordFolder.getId(),
HOLD_NAME); HOLD_NAME);
@@ -284,7 +285,7 @@ public class FileVersionAsRecordTests extends BaseRMRestTest
@AfterClass (alwaysRun = true) @AfterClass (alwaysRun = true)
public void declareAndFileVersionAsRecordCleanUp() public void declareAndFileVersionAsRecordCleanUp()
{ {
holdsAPI.deleteHold(getAdminUser().getUsername(), getAdminUser().getPassword(), HOLD_NAME); holdsAPI.deleteHold(getAdminUser(), holdNodeRef);
deleteRecordCategory(recordCategory.getId()); deleteRecordCategory(recordCategory.getId());
//delete created collaboration site //delete created collaboration site

View File

@@ -357,7 +357,7 @@ public class AddToHoldsTests extends BaseRMRestTest
@AfterClass (alwaysRun = true) @AfterClass (alwaysRun = true)
public void cleanUpAddContentToHold() public void cleanUpAddContentToHold()
{ {
holdsAPI.deleteHold(getAdminUser().getUsername(), getAdminUser().getPassword(), HOLD); holdsAPI.deleteHold(getAdminUser(), holdNodeRef);
dataSite.usingAdmin().deleteSite(testSite); dataSite.usingAdmin().deleteSite(testSite);
users.forEach(user -> getDataUser().usingAdmin().deleteUser(user)); users.forEach(user -> getDataUser().usingAdmin().deleteUser(user));
nodesToBeClean.forEach( category -> getRestAPIFactory().getRecordCategoryAPI().deleteRecordCategory(category)); nodesToBeClean.forEach( category -> getRestAPIFactory().getRecordCategoryAPI().deleteRecordCategory(category));

View File

@@ -324,7 +324,7 @@ public class PreventActionsOnFrozenContentTests extends BaseRMRestTest
@AfterClass (alwaysRun = true) @AfterClass (alwaysRun = true)
public void cleanUpPreventActionsOnFrozenContent() public void cleanUpPreventActionsOnFrozenContent()
{ {
holdsAPI.deleteHold(getAdminUser().getUsername(), getAdminUser().getPassword(), HOLD_ONE); holdsAPI.deleteHold(getAdminUser(), holdNodeRef);
dataSite.usingAdmin().deleteSite(testSite); dataSite.usingAdmin().deleteSite(testSite);
getRestAPIFactory().getRecordCategoryAPI().deleteRecordCategory(recordFolder.getParentId()); getRestAPIFactory().getRecordCategoryAPI().deleteRecordCategory(recordFolder.getParentId());
getRestAPIFactory().getRecordCategoryAPI().deleteRecordCategory(categoryWithRS.getId()); getRestAPIFactory().getRecordCategoryAPI().deleteRecordCategory(categoryWithRS.getId());

View File

@@ -86,6 +86,7 @@ public class RemoveFromHoldsTests extends BaseRMRestTest
private SiteModel testSite, privateSite; private SiteModel testSite, privateSite;
private String holdNodeRefOne; private String holdNodeRefOne;
private String holdNodeRefTwo;
private FileModel contentHeld, contentAddToManyHolds; private FileModel contentHeld, contentAddToManyHolds;
private Set<UserModel> usersToBeClean = new HashSet<>(); private Set<UserModel> usersToBeClean = new HashSet<>();
private Set<String> nodesToBeClean = new HashSet<>(); private Set<String> nodesToBeClean = new HashSet<>();
@@ -100,7 +101,7 @@ public class RemoveFromHoldsTests extends BaseRMRestTest
STEP("Create two holds."); STEP("Create two holds.");
holdNodeRefOne = holdsAPI.createHoldAndGetNodeRef(getAdminUser().getUsername(), getAdminUser().getUsername(), holdNodeRefOne = holdsAPI.createHoldAndGetNodeRef(getAdminUser().getUsername(), getAdminUser().getUsername(),
HOLD_ONE, HOLD_REASON, HOLD_DESCRIPTION); HOLD_ONE, HOLD_REASON, HOLD_DESCRIPTION);
holdsAPI.createHoldAndGetNodeRef(getAdminUser().getUsername(), getAdminUser() holdNodeRefTwo = holdsAPI.createHoldAndGetNodeRef(getAdminUser().getUsername(), getAdminUser()
.getUsername(), HOLD_TWO, HOLD_REASON, HOLD_DESCRIPTION); .getUsername(), HOLD_TWO, HOLD_REASON, HOLD_DESCRIPTION);
STEP("Create test files."); STEP("Create test files.");
@@ -326,8 +327,8 @@ public class RemoveFromHoldsTests extends BaseRMRestTest
@AfterClass (alwaysRun = true) @AfterClass (alwaysRun = true)
public void cleanUpRemoveContentFromHold() public void cleanUpRemoveContentFromHold()
{ {
holdsAPI.deleteHold(getAdminUser().getUsername(), getAdminUser().getPassword(), HOLD_ONE); holdsAPI.deleteHold(getAdminUser(), holdNodeRefOne);
holdsAPI.deleteHold(getAdminUser().getUsername(), getAdminUser().getPassword(), HOLD_TWO); holdsAPI.deleteHold(getAdminUser(), holdNodeRefTwo);
dataSite.usingAdmin().deleteSite(testSite); dataSite.usingAdmin().deleteSite(testSite);
dataSite.usingAdmin().deleteSite(privateSite); dataSite.usingAdmin().deleteSite(privateSite);
usersToBeClean.forEach(user -> getDataUser().usingAdmin().deleteUser(user)); usersToBeClean.forEach(user -> getDataUser().usingAdmin().deleteUser(user));

View File

@@ -28,6 +28,7 @@
package org.alfresco.module.org_alfresco_module_rm.hold; package org.alfresco.module.org_alfresco_module_rm.hold;
import static org.alfresco.model.ContentModel.ASPECT_LOCKABLE; import static org.alfresco.model.ContentModel.ASPECT_LOCKABLE;
import static org.alfresco.model.ContentModel.ASSOC_CONTAINS;
import static org.alfresco.model.ContentModel.PROP_NAME; import static org.alfresco.model.ContentModel.PROP_NAME;
import java.io.Serializable; import java.io.Serializable;
@@ -312,7 +313,7 @@ public class HoldServiceImpl extends ServiceBaseImpl
if (holdContainer != null) if (holdContainer != null)
{ {
// get the children of the root hold container // get the children of the root hold container
List<ChildAssociationRef> holdsAssocs = nodeService.getChildAssocs(holdContainer, ContentModel.ASSOC_CONTAINS, RegexQNamePattern.MATCH_ALL); List<ChildAssociationRef> holdsAssocs = nodeService.getChildAssocs(holdContainer, ASSOC_CONTAINS, RegexQNamePattern.MATCH_ALL);
for (ChildAssociationRef holdAssoc : holdsAssocs) for (ChildAssociationRef holdAssoc : holdsAssocs)
{ {
NodeRef hold = holdAssoc.getChildRef(); NodeRef hold = holdAssoc.getChildRef();
@@ -405,7 +406,7 @@ public class HoldServiceImpl extends ServiceBaseImpl
NodeRef holdContainer = filePlanService.getHoldContainer(filePlan); NodeRef holdContainer = filePlanService.getHoldContainer(filePlan);
// get the hold by name // get the hold by name
NodeRef hold = nodeService.getChildByName(holdContainer, ContentModel.ASSOC_CONTAINS, name); NodeRef hold = nodeService.getChildByName(holdContainer, ASSOC_CONTAINS, name);
if (hold != null && !isHold(hold)) if (hold != null && !isHold(hold))
{ {
throw new AlfrescoRuntimeException("Can not get hold, because the named node reference isn't a hold."); throw new AlfrescoRuntimeException("Can not get hold, because the named node reference isn't a hold.");
@@ -468,7 +469,7 @@ public class HoldServiceImpl extends ServiceBaseImpl
QName assocName = QName.createQName(NamespaceService.CONTENT_MODEL_1_0_URI, name); QName assocName = QName.createQName(NamespaceService.CONTENT_MODEL_1_0_URI, name);
// create hold // create hold
ChildAssociationRef childAssocRef = nodeService.createNode(holdContainer, ContentModel.ASSOC_CONTAINS, assocName, TYPE_HOLD, properties); ChildAssociationRef childAssocRef = nodeService.createNode(holdContainer, ASSOC_CONTAINS, assocName, TYPE_HOLD, properties);
NodeRef holdNodeRef = childAssocRef.getChildRef(); NodeRef holdNodeRef = childAssocRef.getChildRef();
@@ -658,6 +659,9 @@ public class HoldServiceImpl extends ServiceBaseImpl
//set in transaction cache in order not to trigger update policy when adding the association //set in transaction cache in order not to trigger update policy when adding the association
transactionalResourceHelper.getSet("frozen").add(nodeRef); transactionalResourceHelper.getSet("frozen").add(nodeRef);
nodeService.addChild(hold, nodeRef, ASSOC_FROZEN_CONTENT, ASSOC_FROZEN_CONTENT); nodeService.addChild(hold, nodeRef, ASSOC_FROZEN_CONTENT, ASSOC_FROZEN_CONTENT);
// get the documents primary parent assoc
ChildAssociationRef parentAssoc = nodeService.getPrimaryParent(nodeRef);
nodeService.addChild(hold, nodeRef, ASSOC_CONTAINS, parentAssoc.getQName());
// Mark all the folders contents as frozen // Mark all the folders contents as frozen
if (isRecordFolder(nodeRef)) if (isRecordFolder(nodeRef))

View File

@@ -435,7 +435,7 @@ public class RecordAspect extends AbstractDisposableItem
{ {
if (contentBefore != null && !contentBefore.equals(contentAfter)) if (contentBefore != null && !contentBefore.equals(contentAfter))
{ {
throw new IntegrityException(MSG_WORM_RECORD_LOCKED, null); throw new IntegrityException(I18NUtil.getMessage(MSG_WORM_RECORD_LOCKED), null);
} }
} }
if (contentAfter != null) if (contentAfter != null)

View File

@@ -168,7 +168,6 @@ public class HoldReportTest extends BaseRMTestCase implements ReportModel
public void after() public void after()
{ {
holdService.deleteHold(hold); holdService.deleteHold(hold);
nodeService.deleteNode(folder1);
} }
}); });
} }

View File

@@ -131,14 +131,9 @@ public class DeclarativeCapabilityTest extends BaseRMTestCase
} }
@Override @Override
protected void tearDownImpl() protected void tearDown() throws Exception
{ {
// Unfreeze stuff so it can be deleted super.tearDown();
holdService.removeFromHold(hold, frozenRecord);
holdService.removeFromHold(hold, frozenRecordFolder);
holdService.removeFromHold(hold, frozenRecord2);
super.tearDownImpl();
} }
@Override @Override

View File

@@ -98,6 +98,9 @@ public class HoldServiceImplUnitTest extends BaseUnitTest
@Mock @Mock
private CapabilityService mockedCapabilityService; private CapabilityService mockedCapabilityService;
@Mock
private ChildAssociationRef mockChildAssociationRef;
@Spy @InjectMocks HoldServiceImpl holdService; @Spy @InjectMocks HoldServiceImpl holdService;
@Before @Before
@@ -120,7 +123,9 @@ public class HoldServiceImplUnitTest extends BaseUnitTest
QName contentSubtype = QName.createQName("contentSubtype", "contentSubtype"); QName contentSubtype = QName.createQName("contentSubtype", "contentSubtype");
when(mockedNodeService.getType(activeContent)).thenReturn(contentSubtype); when(mockedNodeService.getType(activeContent)).thenReturn(contentSubtype);
when(mockedNodeTypeUtility.instanceOf(contentSubtype, ContentModel.TYPE_CONTENT)).thenReturn(true); when(mockedNodeTypeUtility.instanceOf(contentSubtype, ContentModel.TYPE_CONTENT)).thenReturn(true);
when(mockedNodeService.getPrimaryParent(activeContent)).thenReturn(mockChildAssociationRef);
when(mockedNodeService.getPrimaryParent(recordFolder)).thenReturn(mockChildAssociationRef);
// setup interactions // setup interactions
doReturn(holdContainer).when(mockedFilePlanService).getHoldContainer(filePlan); doReturn(holdContainer).when(mockedFilePlanService).getHoldContainer(filePlan);
} }
@@ -353,6 +358,7 @@ public class HoldServiceImplUnitTest extends BaseUnitTest
public void addToHoldNotInHold() public void addToHoldNotInHold()
{ {
mockPoliciesForAddToHold(); mockPoliciesForAddToHold();
when(mockedNodeService.getPrimaryParent(record)).thenReturn(mockChildAssociationRef);
holdService.addToHold(hold, recordFolder); holdService.addToHold(hold, recordFolder);

12
scripts/getLogs.sh Normal file
View File

@@ -0,0 +1,12 @@
#!/usr/bin/env bash
set -x
alfrescoContainerId=$(docker ps -a | grep '_alfresco_' | awk '{print $1}')
shareContainerId=$(docker ps -a | grep '_share_' | awk '{print $1}')
solrContainerId=$(docker ps -a | grep '_search_' | awk '{print $1}')
docker logs $alfrescoContainerId > alfresco.log
if [ -n "$shareContainerId" ]; then
docker logs $shareContainerId > share.log
fi
docker logs $solrContainerId > solr.log

View File

@@ -0,0 +1,22 @@
### Integration tests on MySQL are running:
## - on stable branch
## - on demand with commit message [execute tests on MySQL]
jobs:
include:
- &integration_test_on_MYSQL
name: "Community Integrations Tests on MySQL"
services: docker
stage: Tests
if: branch =~ /(release\/.*$|master)/ OR commit_message =~ /\[execute tests on MySQL\]/
install:
- docker run -d -p 3307:3306 -e MYSQL_ROOT_PASSWORD=alfresco -e MYSQL_USER=alfresco -e MYSQL_DATABASE=alfresco -e MYSQL_PASSWORD=alfresco mysql:5.7.23 --transaction-isolation='READ-COMMITTED'
- docker run -d -p 61617:61617 -p 5673:5673 alfresco/alfresco-activemq:5.15.8
script:
- travis_retry travis_wait 80 mvn -B -q clean install -Puse-mysql -DskipTests -Dskip.integrationtests=false -Dmy.db.name=alfresco -Dmy.db.port=3307 -Dcommunity -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn
- <<: *integration_test_on_MYSQL
name: "Enterprise Integrations Tests on MySQL"
install:
- travis_retry travis_wait 60 mvn -B -q clean install ${MVN_SKIP} -f rm-community/pom.xml -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn -am
script: travis_retry travis_wait 80 mvn -B -q clean install ${MVN_SKIP} -Puse-mysql -Dskip.integrationtests=false -Dmy.db.name=alfresco -Dmy.db.port=3307 -f rm-enterprise/pom.xml -amd -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn

View File

@@ -1,14 +1,5 @@
jobs: jobs:
include: include:
- name: "Community Integrations Tests on MySQL"
stage: Tests
script:
- echo "Community Integrations Tests on MySQL"
- name: "Enterprise Integrations Tests on MySQL"
stage: Tests
script:
- echo "Enterprise Integrations Tests on MySQL"
- name: "Community Rest API Tests" - name: "Community Rest API Tests"
stage: Tests stage: Tests
install: install:
@@ -67,6 +58,9 @@ jobs:
- ./rm-automation/rm-automation-ui/target/surefire-reports - ./rm-automation/rm-automation-ui/target/surefire-reports
- ./rm-automation/rm-automation-ui/target/reports - ./rm-automation/rm-automation-ui/target/reports
- ./rm-automation/rm-automation-ui/target/screenshots - ./rm-automation/rm-automation-ui/target/screenshots
- alfresco.log
- solr.log
- share.log
target_paths: $TRAVIS_BUILD_NUMBER/$TRAVIS_JOB_NUMBER target_paths: $TRAVIS_BUILD_NUMBER/$TRAVIS_JOB_NUMBER
install: install:
- | - |
@@ -84,6 +78,7 @@ jobs:
- travis_retry travis_wait 30 mvn -B -U -q clean install ${MVN_SKIP} -pl :alfresco-governance-services-automation-ui -am - travis_retry travis_wait 30 mvn -B -U -q clean install ${MVN_SKIP} -pl :alfresco-governance-services-automation-ui -am
script: script:
- travis_wait 90 xvfb-run --server-args="-screen 0 1920x1080x24" mvn -B test -pl :alfresco-governance-services-automation-ui -Dskip.automationtests=false -DsuiteXmlFile=communitySmokeRecords.xml -Dshare.url=${SHARE_URL} -Dalfresco.url=${ALFRESCO_URL} ${WEBDRIVER_ARGUMENTS} - travis_wait 90 xvfb-run --server-args="-screen 0 1920x1080x24" mvn -B test -pl :alfresco-governance-services-automation-ui -Dskip.automationtests=false -DsuiteXmlFile=communitySmokeRecords.xml -Dshare.url=${SHARE_URL} -Dalfresco.url=${ALFRESCO_URL} ${WEBDRIVER_ARGUMENTS}
after_failure: bash scripts/getLogs.sh
- <<: *community_shared_UI_configuration - <<: *community_shared_UI_configuration
name: "Community Smoke UI Tests for actions in RM site" name: "Community Smoke UI Tests for actions in RM site"
@@ -111,6 +106,9 @@ jobs:
- ./rm-automation/rm-automation-ui/target/surefire-reports - ./rm-automation/rm-automation-ui/target/surefire-reports
- ./rm-automation/rm-automation-ui/target/reports - ./rm-automation/rm-automation-ui/target/reports
- ./rm-automation/rm-automation-ui/target/screenshots - ./rm-automation/rm-automation-ui/target/screenshots
- alfresco.log
- solr.log
- share.log
target_paths: $TRAVIS_BUILD_NUMBER/$TRAVIS_JOB_NUMBER target_paths: $TRAVIS_BUILD_NUMBER/$TRAVIS_JOB_NUMBER
install: install:
- travis_retry travis_wait 90 mvn -B -q install $MVN_SKIP -PbuildDockerImage -pl :alfresco-governance-services-enterprise-repo,:alfresco-governance-services-enterprise-share -am - travis_retry travis_wait 90 mvn -B -q install $MVN_SKIP -PbuildDockerImage -pl :alfresco-governance-services-enterprise-repo,:alfresco-governance-services-enterprise-share -am
@@ -121,6 +119,7 @@ jobs:
- sudo free -m -t - sudo free -m -t
script: script:
- travis_wait 90 xvfb-run --server-args="-screen 0 1920x1080x24" mvn -B test -pl :alfresco-governance-services-automation-ui -Dskip.automationtests=false -DsuiteXmlFile=enterpriseLevel2Tests.xml -Dshare.url=${SHARE_URL} -Dalfresco.url=${ALFRESCO_URL} ${WEBDRIVER_ARGUMENTS} - travis_wait 90 xvfb-run --server-args="-screen 0 1920x1080x24" mvn -B test -pl :alfresco-governance-services-automation-ui -Dskip.automationtests=false -DsuiteXmlFile=enterpriseLevel2Tests.xml -Dshare.url=${SHARE_URL} -Dalfresco.url=${ALFRESCO_URL} ${WEBDRIVER_ARGUMENTS}
after_failure: bash scripts/getLogs.sh
- <<: *enterprise_shared_UI_configuration - <<: *enterprise_shared_UI_configuration
name: "Enterprise Classification Level 2 UI Tests" name: "Enterprise Classification Level 2 UI Tests"
@@ -164,4 +163,3 @@ jobs:
script: script:
- travis_wait 90 xvfb-run --server-args="-screen 0 1920x1080x24" mvn -B test -pl :alfresco-governance-services-automation-ui -DsuiteXmlFile=wormTestSuite.xml -Dskip.automationtests=false -Dshare.url=${SHARE_URL} -Dalfresco.url=${ALFRESCO_URL} ${WEBDRIVER_ARGUMENTS} - travis_wait 90 xvfb-run --server-args="-screen 0 1920x1080x24" mvn -B test -pl :alfresco-governance-services-automation-ui -DsuiteXmlFile=wormTestSuite.xml -Dskip.automationtests=false -Dshare.url=${SHARE_URL} -Dalfresco.url=${ALFRESCO_URL} ${WEBDRIVER_ARGUMENTS}
after_script: bash scripts/cleanup.sh after_script: bash scripts/cleanup.sh
after_failure: docker ps -a | grep '_alfresco_1' | awk '{print $1}' | xargs docker logs | tail -5000