From d6e4181cd07f4db0a493d97cdfcf1fc68df7c57c Mon Sep 17 00:00:00 2001 From: Vladimir Kotal Date: Tue, 23 Sep 2025 17:50:29 +0200 Subject: [PATCH 1/2] set more projects to test project separator --- .../src/test/java/org/opengrok/web/PageConfigTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/opengrok-web/src/test/java/org/opengrok/web/PageConfigTest.java b/opengrok-web/src/test/java/org/opengrok/web/PageConfigTest.java index bc31529a3c6..cb68df729c6 100644 --- a/opengrok-web/src/test/java/org/opengrok/web/PageConfigTest.java +++ b/opengrok-web/src/test/java/org/opengrok/web/PageConfigTest.java @@ -816,7 +816,7 @@ public String getParameter(String name) { @Override public String[] getParameterValues(String name) { if (name.equals(QueryBuilder.PROJECT)) { - return List.of("").toArray(new String[0]); + return new String[]{"", "project2"}; } return null; @@ -827,7 +827,7 @@ public String[] getParameterValues(String name) { assertEquals("<foo bar> (full), <symbol1> (definition), " + "<symbol2> (reference), <path1> (path), " + "<c6f8b2553cb6bf280acb986b741792d55373de4e> (history) " + - "in projects: <project1>" + + "in projects: <project1>,project2" + " - OpenGrok search results", cfg.getSearchTitle()); } From 39be262027674f76ebc13fa1e669afc083682075 Mon Sep 17 00:00:00 2001 From: Vladimir Kotal Date: Tue, 23 Sep 2025 18:52:01 +0200 Subject: [PATCH 2/2] add tests for PageConfig#getSortOrder() --- .../org/opengrok/indexer/web/SortOrder.java | 7 +-- .../java/org/opengrok/web/PageConfig.java | 5 ++- .../java/org/opengrok/web/PageConfigTest.java | 43 +++++++++++++++++++ 3 files changed, 51 insertions(+), 4 deletions(-) diff --git a/opengrok-indexer/src/main/java/org/opengrok/indexer/web/SortOrder.java b/opengrok-indexer/src/main/java/org/opengrok/indexer/web/SortOrder.java index 806175341b1..4cd13e67065 100644 --- a/opengrok-indexer/src/main/java/org/opengrok/indexer/web/SortOrder.java +++ b/opengrok-indexer/src/main/java/org/opengrok/indexer/web/SortOrder.java @@ -19,7 +19,7 @@ /* * Copyright (c) 2011, Jens Elkner. - * Copyright (c) 2011, 2019, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2025, Oracle and/or its affiliates. All rights reserved. */ package org.opengrok.indexer.web; @@ -37,6 +37,7 @@ public enum SortOrder { RELEVANCY("relevancy", "relevance"), /** sort by path. */ BY_PATH("fullpath", "path"); + private final String name; private final String desc; @@ -53,7 +54,7 @@ public enum SortOrder { * @see #toString() */ public static SortOrder get(String name) { - if (name == null || name.length() == 0) { + if (name == null || name.isEmpty()) { return null; } for (SortOrder s : values()) { @@ -74,7 +75,7 @@ public String toString() { } /** - * A more user friendly description (UI name) of the sort order. + * A more user-friendly description (UI name) of the sort order. * @return a very short description. */ public String getDesc() { diff --git a/opengrok-web/src/main/java/org/opengrok/web/PageConfig.java b/opengrok-web/src/main/java/org/opengrok/web/PageConfig.java index f527e95ee1a..b1543cad7c2 100644 --- a/opengrok-web/src/main/java/org/opengrok/web/PageConfig.java +++ b/opengrok-web/src/main/java/org/opengrok/web/PageConfig.java @@ -129,6 +129,9 @@ public class PageConfig { private static final String HISTORY_JSP_ATTR_NAME = "history.jsp-hist"; + @VisibleForTesting + static final String SORTING_COOKIE_NAME = "OpenGrokSorting"; + // query parameters static final String PROJECT_PARAM_NAME = "project"; static final String GROUP_PARAM_NAME = "group"; @@ -627,7 +630,7 @@ public List getSortOrder() { } } if (sort.isEmpty()) { - vals = getCookieVals("OpenGrokSorting"); + vals = getCookieVals(SORTING_COOKIE_NAME); for (String s : vals) { SortOrder so = SortOrder.get(s); if (so != null) { diff --git a/opengrok-web/src/test/java/org/opengrok/web/PageConfigTest.java b/opengrok-web/src/test/java/org/opengrok/web/PageConfigTest.java index cb68df729c6..6d7ace258b6 100644 --- a/opengrok-web/src/test/java/org/opengrok/web/PageConfigTest.java +++ b/opengrok-web/src/test/java/org/opengrok/web/PageConfigTest.java @@ -38,6 +38,7 @@ import java.util.stream.Collectors; import java.util.stream.Stream; +import jakarta.servlet.http.Cookie; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import jakarta.ws.rs.core.HttpHeaders; @@ -66,6 +67,7 @@ import org.opengrok.indexer.util.TestRepository; import org.opengrok.indexer.web.DummyHttpServletRequest; import org.opengrok.indexer.web.QueryParameters; +import org.opengrok.indexer.web.SortOrder; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; @@ -831,4 +833,45 @@ public String[] getParameterValues(String name) { " - OpenGrok search results", cfg.getSearchTitle()); } + + @Test + void testGetSortOrderParameter() { + HttpServletRequest req = new DummyHttpServletRequest() { + @Override + public String getPathInfo() { + return "path"; + } + + @Override + public String[] getParameterValues(String name) { + if (name.equals(QueryParameters.SORT_PARAM)) { + return new String[]{SortOrder.LASTMODIFIED.toString(), "invalid"}; + } + + return null; + } + }; + + PageConfig cfg = PageConfig.get(req); + assertEquals(List.of(SortOrder.LASTMODIFIED), cfg.getSortOrder()); + } + + @Test + void testGetSortOrderCookie() { + HttpServletRequest req = new DummyHttpServletRequest() { + @Override + public String getPathInfo() { + return "path"; + } + + @Override + public Cookie[] getCookies() { + return new Cookie[]{new Cookie(PageConfig.SORTING_COOKIE_NAME, SortOrder.LASTMODIFIED.toString()), + new Cookie(PageConfig.SORTING_COOKIE_NAME, "invalid")}; + } + }; + + PageConfig cfg = PageConfig.get(req); + assertEquals(List.of(SortOrder.LASTMODIFIED), cfg.getSortOrder()); + } }