mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-09-21 21:25:38 +00:00
bug5353: event base URL with trailing slash no longer leads to incorrect race viewer URLs;
also, race name and regatta name are now properly URL encoded for link construction
This commit is contained in:
+34
-11
@@ -1,6 +1,7 @@
|
||||
package com.sap.sailing.server.test;
|
||||
|
||||
import static org.junit.Assert.assertFalse;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
@@ -9,6 +10,7 @@ import java.net.URL;
|
||||
import java.util.Locale;
|
||||
import java.util.UUID;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
import com.sap.sailing.domain.base.Event;
|
||||
@@ -19,19 +21,40 @@ import com.sap.sailing.domain.tracking.TrackedRace;
|
||||
import com.sap.sailing.server.util.RaceBoardLinkFactory;
|
||||
|
||||
public class TrailingSlashInEventBaseNameTest {
|
||||
private TrackedRace trackedRace;
|
||||
private Leaderboard leaderboard;
|
||||
private Event event;
|
||||
private LeaderboardGroup leaderboardGroup;
|
||||
private static final String raceboardMode = "PLAYER";
|
||||
private static final String eventBaseUrlWithoutTrailingSlash = "https://myevent.example.com";
|
||||
|
||||
@Before
|
||||
public void setUp() throws MalformedURLException {
|
||||
trackedRace = mock(TrackedRace.class);
|
||||
when(trackedRace.getRaceIdentifier()).thenReturn(new RegattaNameAndRaceName("Regatta with spaces", "Race with spaces"));
|
||||
leaderboard = mock(Leaderboard.class);
|
||||
when(leaderboard.getName()).thenReturn("Leaderboard");
|
||||
event = mock(Event.class);
|
||||
when(event.getId()).thenReturn(UUID.randomUUID());
|
||||
leaderboardGroup = mock(LeaderboardGroup.class);
|
||||
when(leaderboardGroup.getId()).thenReturn(UUID.randomUUID());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testTrailingSlashInEventBaseNameCausesNoHarmInRaceBoardLinks() throws MalformedURLException {
|
||||
final TrackedRace trackedRace = mock(TrackedRace.class);
|
||||
when(trackedRace.getRaceIdentifier()).thenReturn(new RegattaNameAndRaceName("Regatta", "Race"));
|
||||
final Leaderboard leaderboard = mock(Leaderboard.class);
|
||||
when(leaderboard.getName()).thenReturn("Leaderboard");
|
||||
final Event event = mock(Event.class);
|
||||
when(event.getId()).thenReturn(UUID.randomUUID());
|
||||
when(event.getBaseURL()).thenReturn(new URL("https://myevent.example.com/"));
|
||||
final LeaderboardGroup leaderboardGroup = mock(LeaderboardGroup.class);
|
||||
when(leaderboardGroup.getId()).thenReturn(UUID.randomUUID());
|
||||
final String raceboardMode = "PLAYER";
|
||||
when(event.getBaseURL()).thenReturn(new URL(eventBaseUrlWithoutTrailingSlash+"/"));
|
||||
final String link = RaceBoardLinkFactory.createRaceBoardLink(trackedRace, leaderboard, event, leaderboardGroup, raceboardMode, Locale.US);
|
||||
assertFalse(link.contains("//"));
|
||||
assertTrue(link.contains(eventBaseUrlWithoutTrailingSlash+"/"));
|
||||
assertFalse(link.contains(eventBaseUrlWithoutTrailingSlash+"//"));
|
||||
assertFalse(link.contains(" "));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testNoTrailingSlashInEventBaseNameCausesNoHarmInRaceBoardLinks() throws MalformedURLException {
|
||||
when(event.getBaseURL()).thenReturn(new URL(eventBaseUrlWithoutTrailingSlash));
|
||||
final String link = RaceBoardLinkFactory.createRaceBoardLink(trackedRace, leaderboard, event, leaderboardGroup, raceboardMode, Locale.US);
|
||||
assertTrue(link.contains(eventBaseUrlWithoutTrailingSlash+"/"));
|
||||
assertFalse(link.contains(eventBaseUrlWithoutTrailingSlash+"//"));
|
||||
assertFalse(link.contains(" "));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user