mirror of
https://github.com/Dokploy/dokploy.git
synced 2026-06-18 21:55:24 +02:00
62 lines
2.3 KiB
TypeScript
62 lines
2.3 KiB
TypeScript
import { normalizeS3Path } from "@dokploy/server/utils/backups/utils";
|
|
import { describe, expect, test } from "vitest";
|
|
|
|
describe("normalizeS3Path", () => {
|
|
test("should handle empty and whitespace-only prefix", () => {
|
|
expect(normalizeS3Path("")).toBe("");
|
|
expect(normalizeS3Path("/")).toBe("");
|
|
expect(normalizeS3Path(" ")).toBe("");
|
|
expect(normalizeS3Path("\t")).toBe("");
|
|
expect(normalizeS3Path("\n")).toBe("");
|
|
expect(normalizeS3Path(" \n \t ")).toBe("");
|
|
});
|
|
|
|
test("should trim whitespace from prefix", () => {
|
|
expect(normalizeS3Path(" prefix")).toBe("prefix/");
|
|
expect(normalizeS3Path("prefix ")).toBe("prefix/");
|
|
expect(normalizeS3Path(" prefix ")).toBe("prefix/");
|
|
expect(normalizeS3Path("\tprefix\t")).toBe("prefix/");
|
|
expect(normalizeS3Path(" prefix/nested ")).toBe("prefix/nested/");
|
|
});
|
|
|
|
test("should remove leading slashes", () => {
|
|
expect(normalizeS3Path("/prefix")).toBe("prefix/");
|
|
expect(normalizeS3Path("///prefix")).toBe("prefix/");
|
|
});
|
|
|
|
test("should remove trailing slashes", () => {
|
|
expect(normalizeS3Path("prefix/")).toBe("prefix/");
|
|
expect(normalizeS3Path("prefix///")).toBe("prefix/");
|
|
});
|
|
|
|
test("should remove both leading and trailing slashes", () => {
|
|
expect(normalizeS3Path("/prefix/")).toBe("prefix/");
|
|
expect(normalizeS3Path("///prefix///")).toBe("prefix/");
|
|
});
|
|
|
|
test("should handle nested paths", () => {
|
|
expect(normalizeS3Path("prefix/nested")).toBe("prefix/nested/");
|
|
expect(normalizeS3Path("/prefix/nested/")).toBe("prefix/nested/");
|
|
expect(normalizeS3Path("///prefix/nested///")).toBe("prefix/nested/");
|
|
});
|
|
|
|
test("should preserve middle slashes", () => {
|
|
expect(normalizeS3Path("prefix/nested/deep")).toBe("prefix/nested/deep/");
|
|
expect(normalizeS3Path("/prefix/nested/deep/")).toBe("prefix/nested/deep/");
|
|
});
|
|
|
|
test("should handle special characters", () => {
|
|
expect(normalizeS3Path("prefix-with-dashes")).toBe("prefix-with-dashes/");
|
|
expect(normalizeS3Path("prefix_with_underscores")).toBe(
|
|
"prefix_with_underscores/",
|
|
);
|
|
expect(normalizeS3Path("prefix.with.dots")).toBe("prefix.with.dots/");
|
|
});
|
|
|
|
test("should handle the cases from the bug report", () => {
|
|
expect(normalizeS3Path("instance-backups/")).toBe("instance-backups/");
|
|
expect(normalizeS3Path("/instance-backups/")).toBe("instance-backups/");
|
|
expect(normalizeS3Path("instance-backups")).toBe("instance-backups/");
|
|
});
|
|
});
|