refactor(router): introduce app navigation manager
This commit is contained in:
@@ -0,0 +1,32 @@
|
||||
import { describe, expect, it } from "vitest";
|
||||
|
||||
import { getRouteAccess, isInternalRoute } from "../route-meta";
|
||||
import { ROUTES } from "../routes";
|
||||
|
||||
describe("route meta", () => {
|
||||
it("classifies static routes by access level", () => {
|
||||
expect(getRouteAccess(ROUTES.splash)).toBe("authOnly");
|
||||
expect(getRouteAccess(ROUTES.auth)).toBe("authOnly");
|
||||
expect(getRouteAccess(ROUTES.chat)).toBe("session");
|
||||
expect(getRouteAccess(ROUTES.sidebar)).toBe("session");
|
||||
expect(getRouteAccess(ROUTES.subscription)).toBe("realUser");
|
||||
expect(getRouteAccess(ROUTES.coinsRules)).toBe("public");
|
||||
});
|
||||
|
||||
it("classifies known dynamic chat routes", () => {
|
||||
expect(getRouteAccess("/chat/image/msg_1")).toBe("session");
|
||||
expect(getRouteAccess("/chat/deviceid/device_1")).toBe("public");
|
||||
});
|
||||
|
||||
it("treats unknown routes as public by default", () => {
|
||||
expect(getRouteAccess("/unknown")).toBe("public");
|
||||
});
|
||||
|
||||
it("accepts only internal redirect targets", () => {
|
||||
expect(isInternalRoute("/chat")).toBe(true);
|
||||
expect(isInternalRoute("/subscription?type=vip")).toBe(true);
|
||||
expect(isInternalRoute("https://example.com/chat")).toBe(false);
|
||||
expect(isInternalRoute("//example.com/chat")).toBe(false);
|
||||
expect(isInternalRoute(null)).toBe(false);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user