Files
Flash5/flash/src/test/java/dev/relism/routing/PathUtilsTest.java
T

65 lines
1.9 KiB
Java

package dev.relism.routing;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
class PathUtilsTest {
// --- sanitize ---
@Test
void sanitize_nullOrBlank_returnsRoot() {
assertEquals("/", PathUtils.sanitize(null));
assertEquals("/", PathUtils.sanitize(""));
assertEquals("/", PathUtils.sanitize(" "));
assertEquals("/", PathUtils.sanitize("/"));
}
@Test
void sanitize_trimsWhitespaceAndEnsuresLeadingSlash() {
assertEquals("/users", PathUtils.sanitize(" users "));
assertEquals("/api", PathUtils.sanitize("api"));
}
@Test
void sanitize_removesTrailingSlash() {
assertEquals("/users", PathUtils.sanitize("/users/"));
assertEquals("/api/v1", PathUtils.sanitize("/api/v1/"));
}
@Test
void sanitize_collapsesMultipleSlashes() {
assertEquals("/a/b/c", PathUtils.sanitize("//a///b//c/"));
}
// --- join ---
@Test
void join_withRootBase_returnsSanitizedPath() {
assertEquals("/users", PathUtils.join("/", "/users/"));
assertEquals("/users", PathUtils.join("/", "users"));
assertEquals("/blogs", PathUtils.join("/", "/blogs"));
}
@Test
void join_withRootPath_returnsSanitizedBase() {
assertEquals("/api", PathUtils.join("/api/", "/"));
assertEquals("/api", PathUtils.join("api", ""));
}
@Test
void join_preventsDoubleNamespace() {
// Path already starts with base
assertEquals("/api/users", PathUtils.join("/api", "/api/users"));
assertEquals("/api/users", PathUtils.join("/api/", "/api/users/"));
}
@Test
void join_concatenatesProperly() {
assertEquals("/api/users", PathUtils.join("/api", "users"));
assertEquals("/api/users", PathUtils.join("/api", "/users"));
assertEquals("/api/users", PathUtils.join("api", "users"));
}
}