Skip to content

Commit 6c352e3

Browse files
committed
new function: getHeadObjectFromS3; tested
1 parent 16ebfbf commit 6c352e3

2 files changed

Lines changed: 35 additions & 1 deletion

File tree

src/S3Management.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,13 @@ export async function s3FileExists(bucket: string, key: string, s3Client?: S3Cli
115115
}
116116
}
117117

118+
export async function getHeadObjectFromS3(bucket: string, key: string, s3Client?: S3Client) {
119+
s3Client ??= getS3Client();
120+
return await s3Client.send(
121+
new HeadObjectCommand({ Bucket: bucket, Key: key })
122+
);
123+
}
124+
118125
// For tests
119126
export function resetS3Client() {
120127
s3Client = undefined;

test/S3Management.test.js

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import {
66
resetS3Client,
77
getListObjectsFromS3,
88
s3FileExists,
9+
getHeadObjectFromS3,
910
} from "../src/S3Management.ts";
1011
import { S3Client } from "@aws-sdk/client-s3";
1112
import { createS3Client } from "mock-aws-s3-v3";
@@ -45,7 +46,7 @@ describe("putFileToS3(bucket, key, file, s3Client?)", () => {
4546
let thrown = false;
4647
try {
4748
await putFileToS3("dev", "put_test/test.xml", file);
48-
} catch (err) {
49+
} catch {
4950
thrown = true;
5051
}
5152
expect(thrown).to.be(true);
@@ -160,3 +161,29 @@ describe("s3FileExists(bucket, key)", () => {
160161
);
161162
});
162163
});
164+
165+
describe("getHeadObjectFromS3(bucket, key, s3Client?)", () => {
166+
const mockClient = createS3Client({
167+
localDirectory: "./test/s3_mock",
168+
bucket: "dev",
169+
});
170+
it("Should return HeadObject of the existing file", async () => {
171+
const res = await getHeadObjectFromS3(
172+
"dev",
173+
"get_test/test.xml",
174+
mockClient,
175+
);
176+
expect(res).to.not.be(undefined);
177+
expect(res.Key).to.be("get_test/test.xml");
178+
expect(res.ContentLength).to.be(4542);
179+
});
180+
it("Should throw an error trying to fetch the head of a non-existing object", async () => {
181+
let thrown = false;
182+
try {
183+
await getHeadObjectFromS3("dev", "put_test/test.xml", mockClient);
184+
} catch {
185+
thrown = true;
186+
}
187+
expect(thrown).to.be(true);
188+
});
189+
});

0 commit comments

Comments
 (0)