Skip to content

Commit ff37a21

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

File tree

4 files changed

+60
-1
lines changed

4 files changed

+60
-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: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
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+
jest.setTimeout(45_000);
12+
13+
describe("@aws-sdk/lib-storage", () => {
14+
let Key = ``;
15+
const data = randomBytes(20_240_000);
16+
const dataString = data.toString();
17+
18+
const client = new S3({
19+
region,
20+
credentials,
21+
});
22+
23+
describe("Upload", () => {
24+
beforeAll(() => {
25+
Key = `multi-part-file-${Date.now()}`;
26+
});
27+
afterAll(async () => {
28+
await client.deleteObject({ Bucket, Key });
29+
});
30+
31+
for (const body of [data, dataString, Readable.from(data)]) {
32+
it("should upload in parts for input type " + body.constructor.name, async () => {
33+
const s3Upload = new Upload({
34+
client,
35+
params: {
36+
Bucket,
37+
Key,
38+
Body: body,
39+
},
40+
});
41+
await s3Upload.done();
42+
43+
const object = await client.getObject({
44+
Bucket,
45+
Key,
46+
});
47+
48+
expect(await object.Body?.transformToString()).toEqual(dataString);
49+
});
50+
}
51+
});
52+
});

0 commit comments

Comments
 (0)