diff --git a/src/integration/java/org/jlab/epics2web/ConsoleTest.java b/src/integration/java/org/jlab/epics2web/ConsoleTest.java new file mode 100644 index 0000000..6120114 --- /dev/null +++ b/src/integration/java/org/jlab/epics2web/ConsoleTest.java @@ -0,0 +1,62 @@ +package org.jlab.epics2web; + +import static org.junit.Assert.assertTrue; + +import java.net.URI; +import java.net.http.HttpClient; +import java.net.http.HttpRequest; +import java.net.http.HttpResponse; +import java.net.http.WebSocket; +import java.util.regex.Pattern; +import org.junit.Test; + +/** Tests the /console page. */ +public class ConsoleTest { + + private static final HttpClient HTTP = HttpClient.newHttpClient(); + + /** + * A request without Accept-Language, such as from a script, gets the console's time format, not + * Date.toString(), which JSTL falls back to when it finds no locale. HttpClient sends no + * Accept-Language. + */ + @Test + public void timesAreFormattedWithoutAcceptLanguage() throws Exception { + WebSocket socket = + HTTP.newWebSocketBuilder() + .buildAsync( + URI.create("ws://localhost:8080/epics2web/monitor?clientName=console-test"), + new WebSocket.Listener() {}) + .join(); + + try { + socket.sendText("{\"type\": \"monitor\", \"pvs\": [\"channel1\"]}", true).join(); + + // Monitor row cells: PV, state, last update ("MMM dd yyyy HH:mm:ss - value") + Pattern formatted = + Pattern.compile( + "