65 lines
1.9 KiB
Java
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"));
|
|
}
|
|
}
|