mirror of
https://github.com/oven-sh/bun
synced 2026-02-02 15:08:46 +00:00
Co-authored-by: Claude Bot <claude-bot@bun.sh> Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: jarred-sumner-bot <220441119+jarred-sumner-bot@users.noreply.github.com> Co-authored-by: Jarred Sumner <jarred@jarredsumner.com>
37 lines
1.1 KiB
TypeScript
37 lines
1.1 KiB
TypeScript
import { S3Client } from "bun";
|
|
import { expect, test } from "bun:test";
|
|
|
|
test("S3 presigned URL should have correct query parameter order", () => {
|
|
const s3 = new S3Client({
|
|
accessKeyId: "test-key",
|
|
secretAccessKey: "test-secret",
|
|
endpoint: "https://s3.example.com",
|
|
bucket: "test-bucket",
|
|
});
|
|
|
|
const url = s3.presign("test-file.txt", {
|
|
method: "PUT",
|
|
acl: "public-read",
|
|
expiresIn: 300,
|
|
});
|
|
|
|
// Parse the URL to get query parameters
|
|
const urlObj = new URL(url);
|
|
const params = Array.from(urlObj.searchParams.keys());
|
|
|
|
console.log("Query parameters order:", params);
|
|
|
|
// Verify alphabetical order (after URL decoding)
|
|
const expected = params.slice().sort();
|
|
expect(params).toEqual(expected);
|
|
|
|
// Verify that required AWS SigV4 parameters are present
|
|
expect(params).toContain("X-Amz-Algorithm");
|
|
expect(params).toContain("X-Amz-Credential");
|
|
expect(params).toContain("X-Amz-Date");
|
|
expect(params).toContain("X-Amz-Expires");
|
|
expect(params).toContain("X-Amz-SignedHeaders");
|
|
expect(params).toContain("X-Amz-Signature");
|
|
expect(params).toContain("X-Amz-Acl");
|
|
});
|