endpoint-path-normalization.test.ts 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. import { describe, expect, test } from "vitest";
  2. import { isRawPassthroughEndpointPath } from "@/app/v1/_lib/proxy/endpoint-policy";
  3. import {
  4. isCountTokensEndpointPath,
  5. isResponseCompactEndpointPath,
  6. } from "@/app/v1/_lib/proxy/endpoint-paths";
  7. import { ProxySession } from "@/app/v1/_lib/proxy/session";
  8. const countTokensVariants = [
  9. "/v1/messages/count_tokens",
  10. "/v1/messages/count_tokens/",
  11. "/V1/MESSAGES/COUNT_TOKENS",
  12. ];
  13. const compactVariants = [
  14. "/v1/responses/compact",
  15. "/v1/responses/compact/",
  16. "/V1/RESPONSES/COMPACT",
  17. ];
  18. function isCountTokensRequestWithEndpoint(pathname: string | null): boolean {
  19. const sessionLike = {
  20. getEndpoint: () => pathname,
  21. } as Pick<ProxySession, "getEndpoint">;
  22. return ProxySession.prototype.isCountTokensRequest.call(sessionLike as ProxySession);
  23. }
  24. describe("endpoint path normalization", () => {
  25. test.each(countTokensVariants)("count_tokens stays classified for variant %s", (pathname) => {
  26. expect(isCountTokensEndpointPath(pathname)).toBe(true);
  27. expect(isRawPassthroughEndpointPath(pathname)).toBe(true);
  28. expect(isCountTokensRequestWithEndpoint(pathname)).toBe(true);
  29. });
  30. test.each(compactVariants)("responses/compact stays classified for variant %s", (pathname) => {
  31. expect(isResponseCompactEndpointPath(pathname)).toBe(true);
  32. expect(isRawPassthroughEndpointPath(pathname)).toBe(true);
  33. });
  34. test.each([
  35. "/v1/messages",
  36. "/v1/responses",
  37. "/v1/messages/count",
  38. "/v1/responses/mini",
  39. ])("non-target path is not misclassified for %s", (pathname) => {
  40. expect(isCountTokensEndpointPath(pathname)).toBe(false);
  41. expect(isResponseCompactEndpointPath(pathname)).toBe(false);
  42. expect(isRawPassthroughEndpointPath(pathname)).toBe(false);
  43. expect(isCountTokensRequestWithEndpoint(pathname)).toBe(false);
  44. });
  45. test("session count_tokens detection handles null endpoint", () => {
  46. expect(isCountTokensRequestWithEndpoint(null)).toBe(false);
  47. });
  48. });