mirror of
https://github.com/Dokploy/dokploy
synced 2025-06-26 18:27:59 +00:00
- Added normalizeS3Path function to standardize S3 path formatting by trimming whitespace and removing leading/trailing slashes. - Updated backup-related modules (MySQL, MongoDB, PostgreSQL, MariaDB, and web server) to utilize normalizeS3Path for consistent S3 path handling. - Introduced unit tests for normalizeS3Path to ensure correct functionality across various input scenarios.
62 lines
2.3 KiB
TypeScript
62 lines
2.3 KiB
TypeScript
import { describe, expect, test } from "vitest";
|
|
import { normalizeS3Path } from "@dokploy/server/utils/backups/utils";
|
|
|
|
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/");
|
|
});
|
|
});
|