From 926e4f1d21e151dbe65343f50df06042cd9f6944 Mon Sep 17 00:00:00 2001 From: Adam Rauch Date: Fri, 17 Jan 2025 21:31:10 -0800 Subject: [PATCH] Teach test to expect mailto: links --- .../announcements/ModeratorReviewTest.java | 24 +++++++++++++------ 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/src/org/labkey/test/tests/announcements/ModeratorReviewTest.java b/src/org/labkey/test/tests/announcements/ModeratorReviewTest.java index 1b80c24d67..426db41806 100644 --- a/src/org/labkey/test/tests/announcements/ModeratorReviewTest.java +++ b/src/org/labkey/test/tests/announcements/ModeratorReviewTest.java @@ -35,11 +35,9 @@ import java.util.Arrays; import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; -/** - * User: tgaluhn - * Date: 4/30/2018 - */ @Category({Daily.class}) @BaseWebDriverTest.ClassTimeout(minutes = 5) public class ModeratorReviewTest extends BaseWebDriverTest @@ -163,14 +161,16 @@ private String addResponse(String user, String title, boolean expectAutoApproved .setBody(response) .submit(); - boolean responseAdded = isTextPresent(response); + // commonmark-java auto-linking turns all email addresses into mailto: links + String formattedResponse = replaceEmailAddressesWithMailToLinks(response); + boolean responseAdded = isTextPresent(formattedResponse); if (expectAutoApproved && !responseAdded) { - checker().fatal().error(String.format("Expected response '%s' was not present on the thread page.", response)); + checker().fatal().error(String.format("Expected response '%s' was not present on the thread page.", formattedResponse)); } else if (!expectAutoApproved && responseAdded) { - checker().fatal().error(String.format("Response '%s' was present on the thread page. It should not be", response)); + checker().fatal().error(String.format("Response '%s' was present on the thread page. It should not be", formattedResponse)); } stopImpersonating(); @@ -179,6 +179,16 @@ else if (!expectAutoApproved && responseAdded) return expectAutoApproved ? responseTitle : title; // New title if the response was posted successfully } + private String replaceEmailAddressesWithMailToLinks(String s) + { + // A very primitive regex, but it's good enough to match our test email addresses + Matcher matcher = Pattern.compile("[0-9A-Za-z+_.-]+@[0-9A-Za-z.-]+").matcher(s); + return matcher.replaceAll(match -> { + String email = match.group(); + return "" + email + ""; + }); + } + @Test public void testAll() {