Skip to content
Merged
4 changes: 2 additions & 2 deletions src/org/labkey/test/components/ui/grids/TabbedGridPanel.java
Original file line number Diff line number Diff line change
Expand Up @@ -85,10 +85,10 @@ public Map<String, Integer> getTabsWithCounts()
}


private boolean isSelected(String tabText)
public boolean isSelected(String tabText)
{
String tabClass = elementCache().navTab(tabText).getAttribute("class");
return tabClass.toLowerCase().contains("active");
return tabClass != null && tabClass.toLowerCase().contains("active");
}

public QueryGrid selectGrid(String tabText)
Expand Down
11 changes: 11 additions & 0 deletions src/org/labkey/test/params/experiment/SampleTypeDefinition.java
Original file line number Diff line number Diff line change
Expand Up @@ -186,6 +186,17 @@ public SampleTypeDefinition addParentAlias(@NotNull String columnName)
return addParentAlias(columnName, SampleTypeDesigner.CURRENT_SAMPLE_TYPE);
}


public FieldDefinition getFieldByNamePart(String namePart)
{
for (FieldDefinition field : _fields)
{
if (field.isNamePartMatch(namePart))
return field;
}
throw new IllegalArgumentException("No field found with name part: " + namePart);
}

/*
DomainProps
*/
Expand Down
46 changes: 40 additions & 6 deletions src/org/labkey/test/util/AuditLogHelper.java
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,20 @@

public class AuditLogHelper
{
public static final String COL_FILE_AUDIT_FILE = "File";
public static final String COL_FILE_AUDIT_PROVIDED_FILE = "ProvidedFileName";
public static final String COL_FILE_AUDIT_FIELD_NAME = "FieldName";
public static final String COL_FILE_AUDIT_DIRECTORY = "Directory";
// commonly used fields for validating file audit events
public static final List<String> FILE_AUDIT_COLUMNS = List.of(
AuditLogHelper.COL_FILE_AUDIT_FILE,
AuditLogHelper.COL_FILE_AUDIT_PROVIDED_FILE,
AuditLogHelper.COL_FILE_AUDIT_FIELD_NAME,
AuditLogHelper.COL_FILE_AUDIT_DIRECTORY,
"Container",
"Comment"
);

private final WebDriverWrapper _wrapper;
private final ConnectionSupplier _connectionSupplier;

Expand All @@ -53,11 +67,13 @@ public AuditLogHelper(WebDriverWrapper wrapper)
public enum AuditEvent
{
SAMPLE_TIMELINE_EVENT("SampleTimelineEvent"),
SOURCES_AUDIT_EVENT("SourcesAuditEvent"),
SOURCES_AUDIT_EVENT("SourcesAuditEvent"), // avaialble with SampleManagement module
INVENTORY_AUDIT_EVENT("InventoryAuditEvent"),
LIST_AUDIT_EVENT("ListAuditEvent"),
ASSAY_AUDIT_EVENT("AssayAuditEvent"), // avaialble with SampleManagement module
EXPERIMENT_AUDIT_EVENT("ExperimentAuditEvent"),
SAMPLE_WORKFLOW_AUDIT_EVENT("SamplesWorkflowAuditEvent");
SAMPLE_WORKFLOW_AUDIT_EVENT("SamplesWorkflowAuditEvent"),
FILE_SYSTEM_EVENT("FileSystem");

private final String _name;

Expand Down Expand Up @@ -124,12 +140,13 @@ public DataRegionTable goToAuditEventView(String eventType)
* @throws CommandException Can be thrown by the SelectRowsCommand.
*/
public SelectRowsResponse getAuditLogsFromLKS(String containerPath, AuditEvent auditEventName, List<String> columnNames,
List<Filter> filters, @Nullable Integer maxRows, @Nullable ContainerFilter containerFilter) throws IOException, CommandException
@Nullable List<Filter> filters, @Nullable Integer maxRows, @Nullable ContainerFilter containerFilter) throws IOException, CommandException
{
SelectRowsCommand cmd = new SelectRowsCommand("auditLog", auditEventName.getName());
cmd.setColumns(columnNames);
cmd.addFilter("ProjectId/Name", _wrapper.getCurrentProject(), Filter.Operator.EQUAL);
filters.forEach(cmd::addFilter);
if (filters != null)
filters.forEach(cmd::addFilter);
if (maxRows != null)
cmd.setMaxRows(maxRows);
if (containerFilter != null)
Expand All @@ -149,10 +166,27 @@ public void checkAuditEventValuesForTransactionId(String containerPath, AuditEve
List<String> columnNames = expectedValues.keySet().stream().map(Object::toString).toList();
List<Map<String, Object>> events = getAuditLogsForTransactionId(containerPath, auditEventName, columnNames, transactionId, ContainerFilter.CurrentAndSubfolders);
assertEquals("Unexpected number of events for transactionId " + transactionId, rowCount, events.size());
for (Map<String, Object> event : events)
for (int i = 0; i < rowCount; i++)
{
for (String key : columnNames)
assertEquals("Event value for " + key + " not as expected", expectedValues.get(key), event.get(key));
assertEquals("Event " + i + " value for " + key + " not as expected", expectedValues.get(key), events.get(i).get(key));
}
}

public void checkAuditEventValuesForTransactionId(String containerPath, AuditEvent auditEventName, Integer transactionId, List<Map<String, Object>> expectedValues) throws IOException, CommandException
{
List<String> columnNames = expectedValues.get(0).keySet().stream().map(Object::toString).toList();
checkAuditEventValuesForTransactionId(containerPath, auditEventName, columnNames, transactionId, expectedValues);
}

public void checkAuditEventValuesForTransactionId(String containerPath, AuditEvent auditEventName, List<String> columnNames, Integer transactionId, List<Map<String, Object>> expectedValues) throws IOException, CommandException
{
List<Map<String, Object>> events = getAuditLogsForTransactionId(containerPath, auditEventName, columnNames, transactionId, ContainerFilter.CurrentAndSubfolders);
assertEquals("Unexpected number of events for transactionId " + transactionId, expectedValues.size(), events.size());
for (int i = 0; i < expectedValues.size(); i++)
{
for (String key : expectedValues.get(i).keySet())
assertEquals("Event " + i + " value for " + key + " not as expected", expectedValues.get(i).get(key), events.get(i).get(key));
}
}

Expand Down