Compare commits

...

4 Commits

Author SHA1 Message Date
Ciro Spaciari
29a41530b9 static methods 2025-02-06 16:42:44 -08:00
Ciro Spaciari
988ffae899 cleanup 2025-02-06 16:40:08 -08:00
Ciro Spaciari
4b22fff944 example 2025-02-06 16:38:26 -08:00
Ciro Spaciari
3440e86234 example 2025-02-06 16:38:13 -08:00
2 changed files with 86 additions and 0 deletions

View File

@@ -0,0 +1,64 @@
import { S3Client, s3, randomUUIDv7 } from "bun";
import { expect } from "bun:test";
{
// custom client
const s3Client = new S3Client({
sessionToken: null,
});
const filename = randomUUIDv7().replaceAll("-", "");
const s3file = s3Client.file(filename);
await s3file.write("content");
expect(s3file.text()).toBe("content");
await s3file.unlink();
}
{
// default client
const filename = randomUUIDv7().replaceAll("-", "");
const s3file = await s3.file(filename, {
sessionToken: null,
});
await s3file.write("content");
expect(s3file.text()).toBe("content");
await s3file.unlink();
}
{
// default client but in the methods
const filename = randomUUIDv7().replaceAll("-", "");
const s3file = await s3.file(filename);
await s3file.write("content", {
sessionToken: null,
});
expect(
s3file.text({
sessionToken: null,
}),
).toBe("content");
await s3file.unlink({
sessionToken: null,
});
}
{
// static methods
const filename = randomUUIDv7().replaceAll("-", "");
await S3Client.write(filename, "content", {
sessionToken: null,
});
expect(
await S3Client.file(filename, {
sessionToken: null,
}).text(),
).toBe("content");
await S3Client.unlink(filename, {
sessionToken: null,
});
}

View File

@@ -102,6 +102,28 @@ for (let credentials of allCredentials) {
// less than 5 MiB
const bigishPayload = makePayLoadFrom("Bun is the best runtime ever", 1 * 1024 * 1024);
describe.skipIf(!s3Options.accessKeyId)("s3", () => {
it("should be able to override sessionToken", async () => {
const dir = tempDirWithFiles("s3-sessionToken-fixture", {
"s3-sessionToken-fixture.js": await Bun.file(path.join(import.meta.dir, "s3-sessionToken-fixture.js")).text(),
});
const { exitCode, stderr } = Bun.spawnSync([bunExe(), "--smol", path.join(dir, "s3-sessionToken-fixture.js")], {
env: {
...bunEnv,
AWS_ACCESS_KEY_ID: s3Options.accessKeyId,
AWS_SECRET_ACCESS_KEY: s3Options.secretAccessKey,
AWS_ENDPOINT: s3Options.endpoint,
AWS_BUCKET: S3Bucket,
// invalid session token
AWS_SESSION_TOKEN: "1234567890",
},
stderr: "pipe",
stdout: "inherit",
stdin: "ignore",
});
expect(exitCode).toBe(0);
expect(stderr.toString()).toBe("");
});
for (let bucketInName of [true, false]) {
describe("fetch", () => {
describe(bucketInName ? "bucket in path" : "bucket in options", () => {