package com.evsuite.abrp; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import org.junit.Test; /** What the Server tab and the config import accept — pure JVM. */ public class ServerConfigTest { @Test public void urlIsTrimmedAndLosesTrailingSlashes() { assertEquals("https://car.example.com", ServerConfig.normalizeUrl(" https://car.example.com// ")); assertEquals("https://car.example.com/base", ServerConfig.normalizeUrl("https://car.example.com/base/")); } @Test public void plainHttpAndJunkAreRefused() { // The token travels in a header; over plain http anyone on the hotspot could read it. assertNull(ServerConfig.normalizeUrl("http://car.example.com")); assertNull(ServerConfig.normalizeUrl("car.example.com")); assertNull(ServerConfig.normalizeUrl("https://")); assertNull(ServerConfig.normalizeUrl("https:///path")); assertNull(ServerConfig.normalizeUrl("https://user@car.example.com")); assertNull(ServerConfig.normalizeUrl("https://car.example.com/?x=1")); assertNull(ServerConfig.normalizeUrl(null)); } @Test public void tokenMustMeetTheServersMinimum() { assertTrue(ServerConfig.isValidToken("0123456789abcdef01234567")); assertFalse(ServerConfig.isValidToken("too-short")); assertFalse(ServerConfig.isValidToken("0123456789abcdef 01234567")); assertFalse(ServerConfig.isValidToken(null)); } @Test public void installationIdMustBeAUuidTheServerAccepts() { assertTrue(ServerConfig.isValidInstallationId("6f1a2b3c-4d5e-4f60-8a9b-0c1d2e3f4a5b")); assertTrue(ServerConfig.isValidInstallationId(java.util.UUID.randomUUID().toString())); assertFalse(ServerConfig.isValidInstallationId("6f1a2b3c-4d5e-0f60-8a9b-0c1d2e3f4a5b")); // version 0 assertFalse(ServerConfig.isValidInstallationId("not-a-uuid")); assertFalse(ServerConfig.isValidInstallationId("")); } @Test public void theInstallationIdFollowsTheHeadUnit() { String id = ServerConfig.installationIdFor("a1b2c3d4e5f60718"); assertTrue(id, ServerConfig.isValidInstallationId(id)); // The same head unit gets the same id after a reinstall; another gets another. assertEquals(id, ServerConfig.installationIdFor(" A1B2C3D4E5F60718 ")); assertFalse(id.equals(ServerConfig.installationIdFor("0000000000000001"))); assertFalse(id.contains("a1b2c3d4e5f60718")); } @Test public void noUsableAndroidIdMeansNoDerivedId() { assertNull(ServerConfig.installationIdFor(null)); assertNull(ServerConfig.installationIdFor("")); assertNull(ServerConfig.installationIdFor("9774d56d682e549c")); } }