From 607206dca2da162ec0ce935714f99c07b32ec691 Mon Sep 17 00:00:00 2001 From: Adam Rauch Date: Mon, 24 Aug 2026 13:09:04 -0700 Subject: [PATCH] Disable email recording when verifying timeouts (#3167) ## Rationale `AdminConsoleTest.testEmailTimeoutSettings()` started failing intermittently in 26.8+, showing that the timeout settings were not always present. This test is passing regularly in 26.7. I believe a small MailHelper refactor in 26.8 caused a change in behavior; now, when email recording is on, the "test email" page shows the dumbster configuration (which lacks timeout properties) instead of the application.properties configuration (which includes them by default). This is likely the behavior we want in the "test email" page, so this changes the test to shut off email recording if it's on. And then restores it after verifying. The change is not technically needed for 26.7, but it doesn't hurt to disable/re-enable there. Also, "admin" is not a module, so remove that reference from `AbstractAdminConsoleTest.java`. ## Related Pull Requests - https://github.com/LabKey/platform/pull/7848 - https://github.com/LabKey/testAutomation/pull/3150 --- src/org/labkey/test/LabKeySiteWrapper.java | 15 +++++++++++++-- src/org/labkey/test/WebTest.java | 4 +++- .../test/tests/AbstractAdminConsoleTest.java | 3 +-- src/org/labkey/test/tests/AdminConsoleTest.java | 7 +++++++ 4 files changed, 24 insertions(+), 5 deletions(-) diff --git a/src/org/labkey/test/LabKeySiteWrapper.java b/src/org/labkey/test/LabKeySiteWrapper.java index 26d3eb52f3..12deb158fa 100644 --- a/src/org/labkey/test/LabKeySiteWrapper.java +++ b/src/org/labkey/test/LabKeySiteWrapper.java @@ -1300,10 +1300,21 @@ public void setMiniProfilerEnabled(boolean enabled) @LogMethod(quiet = true) public void enableEmailRecorder() + { + setEmailRecord(true); + } + + @LogMethod(quiet = true) + public void disableEmailRecorder() + { + setEmailRecord(false); + } + + private void setEmailRecord(boolean record) { assumeTestModules(); - int responseCode = getHttpResponse(buildURL("dumbster", "setRecordEmail", Maps.of("record", "true")), "POST").getResponseCode(); - assertEquals("Failed to enable email recording", HttpStatus.SC_OK, responseCode); + int responseCode = getHttpResponse(buildURL("dumbster", "setRecordEmail", Maps.of("record", String.valueOf(record))), "POST").getResponseCode(); + assertEquals("Failed to " + (record ? "enable" : "disable") + " email recording", HttpStatus.SC_OK, responseCode); } public EmailRecordTable goToEmailRecord() diff --git a/src/org/labkey/test/WebTest.java b/src/org/labkey/test/WebTest.java index e2e13e8c9e..68e3298ab2 100644 --- a/src/org/labkey/test/WebTest.java +++ b/src/org/labkey/test/WebTest.java @@ -16,6 +16,8 @@ package org.labkey.test; +import org.jetbrains.annotations.Nullable; + import java.net.MalformedURLException; import java.net.URL; import java.util.List; @@ -32,5 +34,5 @@ public interface WebTest */ long beginAt(String url); URL getURL() throws MalformedURLException; - List getAssociatedModules(); + @Nullable List getAssociatedModules(); } diff --git a/src/org/labkey/test/tests/AbstractAdminConsoleTest.java b/src/org/labkey/test/tests/AbstractAdminConsoleTest.java index 8d894d5c46..2f7d79978d 100644 --- a/src/org/labkey/test/tests/AbstractAdminConsoleTest.java +++ b/src/org/labkey/test/tests/AbstractAdminConsoleTest.java @@ -21,7 +21,6 @@ import org.labkey.test.util.ApiPermissionsHelper; import org.labkey.test.util.PermissionsHelper; -import java.util.Arrays; import java.util.List; import static org.labkey.test.util.PermissionsHelper.APP_ADMIN_ROLE; @@ -41,7 +40,7 @@ public String getProjectName() @Override public List getAssociatedModules() { - return Arrays.asList("admin"); + return null; } @Override diff --git a/src/org/labkey/test/tests/AdminConsoleTest.java b/src/org/labkey/test/tests/AdminConsoleTest.java index 399d458b40..bf9de2302c 100644 --- a/src/org/labkey/test/tests/AdminConsoleTest.java +++ b/src/org/labkey/test/tests/AdminConsoleTest.java @@ -24,6 +24,7 @@ import org.labkey.remoteapi.SimplePostCommand; import org.labkey.test.BaseWebDriverTest; import org.labkey.test.Locator; +import org.labkey.test.TestProperties; import org.labkey.test.WebDriverWrapper; import org.labkey.test.WebTestHelper; import org.labkey.test.util.OptionalFeatureHelper; @@ -46,6 +47,7 @@ import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; +import static org.labkey.test.WebTestHelper.buildURL; import static org.labkey.test.util.PermissionsHelper.APP_ADMIN_ROLE; import static org.labkey.test.util.PermissionsHelper.READER_ROLE; @@ -451,8 +453,13 @@ private void verifyOptionalFeatures(String linkText, List featureIds, Op @Test public void testEmailTimeoutSettings() { + // Ensure email recording is disabled, otherwise we won't see the default timeout properties + disableEmailRecorder(); log("Verifying that default email timeout properties are set"); goToAdminConsole().clickTestEmailConfiguration(); assertTextPresent("mail.smtp.writetimeout", "mail.smtp.timeout", "mail.smtp.connectiontimeout"); + + // No need to restore the email recording setting. Any test that cares about capturing emails needs to call + // enableEmailRecorder to clear out the email record. } }