Skip to content

Commit 845af4a

Browse files
committed
test(lib-storage): add e2e tests
1 parent 483a27a commit 845af4a

File tree

4 files changed

+58
-1
lines changed

4 files changed

+58
-1
lines changed

lib/lib-storage/jest.config.e2e.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
module.exports = {
2+
preset: "ts-jest",
3+
testMatch: ["**/*.e2e.spec.ts"],
4+
bail: true,
5+
};

lib/lib-storage/package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@
1414
"build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4",
1515
"clean": "rimraf ./dist-* && rimraf *.tsbuildinfo",
1616
"extract:docs": "api-extractor run --local",
17-
"test": "jest"
17+
"test": "jest",
18+
"test:e2e": "jest -c jest.config.e2e.js"
1819
},
1920
"engines": {
2021
"node": ">=14.0.0"

lib/lib-storage/src/chunks/getChunkStream.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ export async function* getChunkStream<T>(
3737
partNumber += 1;
3838
}
3939
}
40+
4041
yield {
4142
partNumber,
4243
data: currentBuffer.chunks.length !== 1 ? Buffer.concat(currentBuffer.chunks) : currentBuffer.chunks[0],
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
import { S3 } from "@aws-sdk/client-s3";
2+
import { Upload } from "@aws-sdk/lib-storage";
3+
import type { AwsCredentialIdentity } from "@smithy/types";
4+
import { randomBytes } from "crypto";
5+
import { Readable } from "stream";
6+
7+
const region: string | undefined = process?.env?.AWS_SMOKE_TEST_REGION;
8+
const credentials: AwsCredentialIdentity | undefined = (globalThis as any).credentials || undefined;
9+
const Bucket = process?.env?.AWS_SMOKE_TEST_BUCKET;
10+
11+
describe("@aws-sdk/lib-storage", () => {
12+
let Key = ``;
13+
const data = randomBytes(20_240_000);
14+
const dataString = data.toString();
15+
16+
const client = new S3({
17+
region,
18+
credentials,
19+
});
20+
21+
describe("Upload", () => {
22+
beforeAll(() => {
23+
Key = `multi-part-file-${Date.now()}`;
24+
});
25+
afterAll(async () => {
26+
await client.deleteObject({ Bucket, Key });
27+
});
28+
29+
for (const body of [data, dataString, Readable.from(data)]) {
30+
it("should upload in parts for input type " + body.constructor.name, async () => {
31+
const s3Upload = new Upload({
32+
client,
33+
params: {
34+
Bucket,
35+
Key,
36+
Body: body,
37+
},
38+
});
39+
await s3Upload.done();
40+
41+
const object = await client.getObject({
42+
Bucket,
43+
Key,
44+
});
45+
46+
expect(await object.Body?.transformToString()).toEqual(dataString);
47+
});
48+
}
49+
});
50+
});

0 commit comments

Comments
 (0)