mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-07-31 17:39:05 +00:00
Code review comments (check node path for add to hold and remove from hold audit entries)
This commit is contained in:
@@ -101,4 +101,30 @@ public class RMAuditService
|
|||||||
!auditEntry.getTimestamp().isEmpty() &&
|
!auditEntry.getTimestamp().isEmpty() &&
|
||||||
Instant.parse(auditEntry.getTimestamp()).compareTo(eventTimestamp) <= 0));
|
Instant.parse(auditEntry.getTimestamp()).compareTo(eventTimestamp) <= 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks the rm audit log contains the entry for the given event.
|
||||||
|
*
|
||||||
|
* @param user the user who checks the audit log
|
||||||
|
* @param auditEvent the audited event
|
||||||
|
* @param auditUser the user who did the audited event
|
||||||
|
* @param nodeName the audited node name if exists or empty string
|
||||||
|
* @param nodePath the path of the audited node if exists or empty string
|
||||||
|
* @param changedValues the values changed by event if exist or empty list
|
||||||
|
*/
|
||||||
|
public void checkAuditLogForEvent(UserModel user, AuditEvents auditEvent, UserModel auditUser,
|
||||||
|
String nodeName, String nodePath, List<Object> changedValues)
|
||||||
|
{
|
||||||
|
final Instant eventTimestamp = Instant.now();
|
||||||
|
List<AuditEntry> auditEntries = getAuditEntriesFilteredByEvent(user, auditEvent);
|
||||||
|
assertTrue("The list of events is not filtered by " + auditEvent.event,
|
||||||
|
auditEntries.stream().allMatch(auditEntry -> auditEntry.getEvent().equals(auditEvent.eventDisplayName)));
|
||||||
|
assertTrue("The event details are not audited",
|
||||||
|
auditEntries.stream().anyMatch(auditEntry -> auditEntry.getNodeName().equals(nodeName) &&
|
||||||
|
auditEntry.getUserName().equals(auditUser.getUsername()) &&
|
||||||
|
auditEntry.getPath().equals(nodePath) &&
|
||||||
|
CollectionUtils.isEqualCollection(auditEntry.getChangedValues(), changedValues) &&
|
||||||
|
!auditEntry.getTimestamp().isEmpty() &&
|
||||||
|
Instant.parse(auditEntry.getTimestamp()).compareTo(eventTimestamp) <= 0));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -32,6 +32,8 @@ import static org.alfresco.rest.rm.community.base.TestData.HOLD_DESCRIPTION;
|
|||||||
import static org.alfresco.rest.rm.community.base.TestData.HOLD_REASON;
|
import static org.alfresco.rest.rm.community.base.TestData.HOLD_REASON;
|
||||||
import static org.alfresco.rest.rm.community.model.audit.AuditEvents.ADD_TO_HOLD;
|
import static org.alfresco.rest.rm.community.model.audit.AuditEvents.ADD_TO_HOLD;
|
||||||
import static org.alfresco.rest.rm.community.util.CommonTestUtils.generateTestPrefix;
|
import static org.alfresco.rest.rm.community.util.CommonTestUtils.generateTestPrefix;
|
||||||
|
import static org.alfresco.utility.Utility.buildPath;
|
||||||
|
import static org.alfresco.utility.Utility.removeLastSlash;
|
||||||
import static org.alfresco.utility.data.RandomData.getRandomName;
|
import static org.alfresco.utility.data.RandomData.getRandomName;
|
||||||
import static org.alfresco.utility.report.log.Step.STEP;
|
import static org.alfresco.utility.report.log.Step.STEP;
|
||||||
import static org.apache.commons.httpclient.HttpStatus.SC_INTERNAL_SERVER_ERROR;
|
import static org.apache.commons.httpclient.HttpStatus.SC_INTERNAL_SERVER_ERROR;
|
||||||
@@ -121,25 +123,32 @@ public class AuditAddToHoldTests extends BaseRMRestTest
|
|||||||
/**
|
/**
|
||||||
* Data provider with valid nodes that can be added to a hold
|
* Data provider with valid nodes that can be added to a hold
|
||||||
*
|
*
|
||||||
* @return the node id and the node name
|
* @return the node id, the node name and the node path
|
||||||
* @throws Exception
|
* @throws Exception
|
||||||
*/
|
*/
|
||||||
@DataProvider (name = "validNodesForAddToHold")
|
@DataProvider (name = "validNodesForAddToHold")
|
||||||
public Object[][] getValidNodesForAddToHold() throws Exception
|
public Object[][] getValidNodesForAddToHold() throws Exception
|
||||||
{
|
{
|
||||||
|
String documentLibrary = "/documentLibrary";
|
||||||
FileModel contentToBeAdded = dataContent.usingAdmin().usingSite(privateSite)
|
FileModel contentToBeAdded = dataContent.usingAdmin().usingSite(privateSite)
|
||||||
.createContent(CMISUtil.DocumentType.TEXT_PLAIN);
|
.createContent(CMISUtil.DocumentType.TEXT_PLAIN);
|
||||||
RecordCategoryChild recordFolderToBeAdded = createRecordFolder(recordCategory.getId(), PREFIX + "recFolderToBeAdded");
|
RecordCategoryChild recordFolderToBeAdded = createRecordFolder(recordCategory.getId(), PREFIX + "recFolderToBeAdded");
|
||||||
Record recordToBeAdded = createElectronicRecord(recordFolder.getId(), PREFIX + "record");
|
Record recordToBeAdded = createElectronicRecord(recordFolder.getId(), PREFIX + "record");
|
||||||
|
String recordFolderPath = removeLastSlash(buildPath(documentLibrary, recordCategory.getName(),
|
||||||
|
recordFolderToBeAdded.getName()));
|
||||||
|
String recordPath = removeLastSlash(buildPath(documentLibrary, recordCategory.getName(),
|
||||||
|
recordFolder.getName(), recordToBeAdded.getName()));
|
||||||
|
String contentPath = contentToBeAdded.getCmisLocation();
|
||||||
|
contentPath = contentPath.substring(contentPath.indexOf(documentLibrary));
|
||||||
|
|
||||||
return new String[][]
|
return new String[][]
|
||||||
{
|
{
|
||||||
// a record folder
|
// a record folder
|
||||||
{ recordFolderToBeAdded.getId(), recordFolderToBeAdded.getName() },
|
{ recordFolderToBeAdded.getId(), recordFolderToBeAdded.getName(), recordFolderPath },
|
||||||
// a record
|
// a record
|
||||||
{ recordToBeAdded.getId(), recordToBeAdded.getName() },
|
{ recordToBeAdded.getId(), recordToBeAdded.getName(), recordPath },
|
||||||
//an active content,
|
//an active content,
|
||||||
{ contentToBeAdded.getNodeRefWithoutVersion(), contentToBeAdded.getName() }
|
{ contentToBeAdded.getNodeRefWithoutVersion(), contentToBeAdded.getName(), contentPath }
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -166,9 +175,10 @@ public class AuditAddToHoldTests extends BaseRMRestTest
|
|||||||
* name of the document/record/record folder added
|
* name of the document/record/record folder added
|
||||||
* user who added the content
|
* user who added the content
|
||||||
* date the content was added
|
* date the content was added
|
||||||
|
* path of the node
|
||||||
*/
|
*/
|
||||||
@Test (dataProvider = "validNodesForAddToHold")
|
@Test (dataProvider = "validNodesForAddToHold")
|
||||||
public void addToHoldEventIsAudited(String nodeId, String nodeName)
|
public void addToHoldEventIsAudited(String nodeId, String nodeName, String nodePath)
|
||||||
{
|
{
|
||||||
rmAuditService.clearAuditLog();
|
rmAuditService.clearAuditLog();
|
||||||
|
|
||||||
@@ -176,7 +186,7 @@ public class AuditAddToHoldTests extends BaseRMRestTest
|
|||||||
holdsAPI.addItemToHold(rmAdmin.getUsername(), rmAdmin.getPassword(), nodeId, HOLD1);
|
holdsAPI.addItemToHold(rmAdmin.getUsername(), rmAdmin.getPassword(), nodeId, HOLD1);
|
||||||
|
|
||||||
STEP("Check the audit log contains the entry for the add to hold event.");
|
STEP("Check the audit log contains the entry for the add to hold event.");
|
||||||
rmAuditService.checkAuditLogForEvent(getAdminUser(), ADD_TO_HOLD, rmAdmin, nodeName,
|
rmAuditService.checkAuditLogForEvent(getAdminUser(), ADD_TO_HOLD, rmAdmin, nodeName, nodePath,
|
||||||
asList(ImmutableMap.of("new", nodeName, "previous", "", "name", "Name"),
|
asList(ImmutableMap.of("new", nodeName, "previous", "", "name", "Name"),
|
||||||
ImmutableMap.of("new", HOLD1, "previous", "", "name", "Hold Name")));
|
ImmutableMap.of("new", HOLD1, "previous", "", "name", "Hold Name")));
|
||||||
}
|
}
|
||||||
|
@@ -32,6 +32,8 @@ import static org.alfresco.rest.rm.community.base.TestData.HOLD_DESCRIPTION;
|
|||||||
import static org.alfresco.rest.rm.community.base.TestData.HOLD_REASON;
|
import static org.alfresco.rest.rm.community.base.TestData.HOLD_REASON;
|
||||||
import static org.alfresco.rest.rm.community.model.audit.AuditEvents.REMOVE_FROM_HOLD;
|
import static org.alfresco.rest.rm.community.model.audit.AuditEvents.REMOVE_FROM_HOLD;
|
||||||
import static org.alfresco.rest.rm.community.util.CommonTestUtils.generateTestPrefix;
|
import static org.alfresco.rest.rm.community.util.CommonTestUtils.generateTestPrefix;
|
||||||
|
import static org.alfresco.utility.Utility.buildPath;
|
||||||
|
import static org.alfresco.utility.Utility.removeLastSlash;
|
||||||
import static org.alfresco.utility.data.RandomData.getRandomName;
|
import static org.alfresco.utility.data.RandomData.getRandomName;
|
||||||
import static org.alfresco.utility.report.log.Step.STEP;
|
import static org.alfresco.utility.report.log.Step.STEP;
|
||||||
import static org.apache.commons.httpclient.HttpStatus.SC_INTERNAL_SERVER_ERROR;
|
import static org.apache.commons.httpclient.HttpStatus.SC_INTERNAL_SERVER_ERROR;
|
||||||
@@ -137,19 +139,26 @@ public class AuditRemoveFromHoldTests extends BaseRMRestTest
|
|||||||
/**
|
/**
|
||||||
* Data provider with valid nodes that can be removed from a hold
|
* Data provider with valid nodes that can be removed from a hold
|
||||||
*
|
*
|
||||||
* @return the node id and the node name
|
* @return the node id, the node name and the node path
|
||||||
*/
|
*/
|
||||||
@DataProvider (name = "validNodesForRemoveFromHold")
|
@DataProvider (name = "validNodesForRemoveFromHold")
|
||||||
public Object[][] getValidNodesForRemoveFromHold()
|
public Object[][] getValidNodesForRemoveFromHold()
|
||||||
{
|
{
|
||||||
|
String documentLibrary = "/documentLibrary";
|
||||||
|
String recordFolderPath = removeLastSlash(buildPath(documentLibrary, recordCategory.getName(),
|
||||||
|
heldRecordFolder.getName()));
|
||||||
|
String recordPath = removeLastSlash(buildPath(documentLibrary, recordCategory.getName(),
|
||||||
|
recordFolder.getName(), heldRecord.getName()));
|
||||||
|
String contentPath = heldContent.getCmisLocation();
|
||||||
|
contentPath = contentPath.substring(contentPath.indexOf(documentLibrary));
|
||||||
return new String[][]
|
return new String[][]
|
||||||
{
|
{
|
||||||
// a record folder
|
// a record folder
|
||||||
{ heldRecordFolder.getId(), heldRecordFolder.getName() },
|
{ heldRecordFolder.getId(), heldRecordFolder.getName(), recordFolderPath },
|
||||||
// a record
|
// a record
|
||||||
{ heldRecord.getId(), heldRecord.getName() },
|
{ heldRecord.getId(), heldRecord.getName(), recordPath },
|
||||||
//an active content,
|
//an active content,
|
||||||
{ heldContent.getNodeRefWithoutVersion(), heldContent.getName() }
|
{ heldContent.getNodeRefWithoutVersion(), heldContent.getName(), contentPath }
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -176,9 +185,10 @@ public class AuditRemoveFromHoldTests extends BaseRMRestTest
|
|||||||
* name of the document/record/record folder removed
|
* name of the document/record/record folder removed
|
||||||
* user who removed the content
|
* user who removed the content
|
||||||
* date the content was removed
|
* date the content was removed
|
||||||
|
* path of the node
|
||||||
*/
|
*/
|
||||||
@Test (dataProvider = "validNodesForRemoveFromHold")
|
@Test (dataProvider = "validNodesForRemoveFromHold")
|
||||||
public void removeFromHoldEventIsAudited(String nodeId, String nodeName)
|
public void removeFromHoldEventIsAudited(String nodeId, String nodeName, String nodePath)
|
||||||
{
|
{
|
||||||
rmAuditService.clearAuditLog();
|
rmAuditService.clearAuditLog();
|
||||||
|
|
||||||
@@ -186,7 +196,7 @@ public class AuditRemoveFromHoldTests extends BaseRMRestTest
|
|||||||
holdsAPI.removeItemFromHold(rmAdmin.getUsername(), rmAdmin.getPassword(), nodeId, HOLD3);
|
holdsAPI.removeItemFromHold(rmAdmin.getUsername(), rmAdmin.getPassword(), nodeId, HOLD3);
|
||||||
|
|
||||||
STEP("Check the audit log contains the entry for the remove from hold event.");
|
STEP("Check the audit log contains the entry for the remove from hold event.");
|
||||||
rmAuditService.checkAuditLogForEvent(getAdminUser(), REMOVE_FROM_HOLD, rmAdmin, nodeName,
|
rmAuditService.checkAuditLogForEvent(getAdminUser(), REMOVE_FROM_HOLD, rmAdmin, nodeName, nodePath,
|
||||||
asList(ImmutableMap.of("new", "", "previous", nodeName, "name", "Name"),
|
asList(ImmutableMap.of("new", "", "previous", nodeName, "name", "Name"),
|
||||||
ImmutableMap.of("new", "", "previous", HOLD3, "name", "Hold Name")));
|
ImmutableMap.of("new", "", "previous", HOLD3, "name", "Hold Name")));
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user