From e8f476e643f6f8e8eab3cf0fe728d973ac8087e2 Mon Sep 17 00:00:00 2001
From: XingY
Date: Mon, 16 Feb 2026 09:47:16 -0800
Subject: [PATCH 1/3] GitHub Issue 465: Add auditing capabilities for grid
views
---
.../tests/component/GridPanelViewTest.java | 317 +++++++++++++++++-
src/org/labkey/test/util/AuditLogHelper.java | 1 +
2 files changed, 303 insertions(+), 15 deletions(-)
diff --git a/src/org/labkey/test/tests/component/GridPanelViewTest.java b/src/org/labkey/test/tests/component/GridPanelViewTest.java
index ae805c71a0..c50733139c 100644
--- a/src/org/labkey/test/tests/component/GridPanelViewTest.java
+++ b/src/org/labkey/test/tests/component/GridPanelViewTest.java
@@ -5,7 +5,12 @@
import org.junit.Test;
import org.junit.experimental.categories.Category;
import org.labkey.remoteapi.CommandException;
+import org.labkey.remoteapi.Connection;
+import org.labkey.remoteapi.query.ContainerFilter;
import org.labkey.remoteapi.query.Filter;
+import org.labkey.remoteapi.query.SelectRowsCommand;
+import org.labkey.remoteapi.query.SelectRowsResponse;
+import org.labkey.remoteapi.query.Sort;
import org.labkey.test.Locator;
import org.labkey.test.SortDirection;
import org.labkey.test.categories.Daily;
@@ -22,8 +27,10 @@
import org.labkey.test.params.FieldDefinition;
import org.labkey.test.params.FieldKey;
import org.labkey.test.params.experiment.SampleTypeDefinition;
+import org.labkey.test.WebTestHelper;
import org.labkey.test.util.APIUserHelper;
import org.labkey.test.util.ApiPermissionsHelper;
+import org.labkey.test.util.AuditLogHelper;
import org.labkey.test.util.DataRegionTable;
import org.labkey.test.util.PermissionsHelper;
import org.labkey.test.util.SampleTypeHelper;
@@ -76,6 +83,8 @@ public class GridPanelViewTest extends GridPanelBaseTest
private static final List stringSetMembers = Arrays.asList("A", "B", "C");
private static List stringSets = new ArrayList<>();
+ private static final String AUDIT_TEST_VIEW = "Audit_Test_View";
+
private static final String EDITED_ALERT = "EDITED";
private static final String UPDATED_ALERT = "UPDATED";
@@ -85,6 +94,8 @@ public class GridPanelViewTest extends GridPanelBaseTest
// Using the core-components.view adds 'GridPanel - ' to the panel header. Need to take that into account .
private static final String PANEL_VIEW_NAME_PREFIX = "GridPanel - %s";
+ private final AuditLogHelper _auditLogHelper = new AuditLogHelper(this);
+
// Tests that need to be written:
// Validate "Save As..." from the grid save button.
// Validate views that are locked, or in some other way, cannot be updates in the manage views dialog.
@@ -179,7 +190,7 @@ private void createSampleType(String sampleTypeName, String samplePrefix, int nu
* @param sampleTypeName Name of the sample type with the default view to change.
* @param columns The columns to show in the default view. Will be added in the order of the list.
*/
- private void resetDefaultView(String sampleTypeName, List columns)
+ private void resetDefaultView(String sampleTypeName, List columns) throws Exception
{
log(String.format("Set the default view for '%s' to have these columns: '%s'", sampleTypeName, columns));
@@ -207,9 +218,34 @@ private void resetDefaultView(String sampleTypeName, List columns)
cv.addColumn(columnName);
}
+ log("Get baseline audit row ID before saving the shared default view.");
+ Integer defaultViewBaselineRowId = _auditLogHelper.getLatestAuditRowId("GridViewAuditEvent");
+
// Save as default view for everyone.
cv.saveCustomView("", true);
+ log("Verify audit event for shared default view save.");
+ List
*/
@Test
- public void testMyDefaultView()
+ public void testMyDefaultView() throws Exception
{
String screenShotID = "testMyDefaultView";
@@ -256,9 +292,34 @@ public void testMyDefaultView()
CustomizeView cv = drtSamples.openCustomizeGrid();
cv.removeColumn(columnToRemove);
+ log("Get baseline audit row ID before saving personal default view.");
+ Integer personalDefaultBaselineRowId = _auditLogHelper.getLatestAuditRowId("GridViewAuditEvent");
+
log("Do not share this default view with everyone.");
cv.saveCustomView("", false);
+ log("Verify audit event for personal default view save.");
+ List