Skip to content

Commit affed04

Browse files
committed
test(client-s3): integration tests for flexible checksum (#70)
1 parent ec3cc1e commit affed04

File tree

1 file changed

+59
-0
lines changed

1 file changed

+59
-0
lines changed
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
/// <reference types="mocha" />
2+
import { ChecksumAlgorithm } from "@aws-sdk/middleware-flexible-checksums";
3+
import { HttpRequest } from "@aws-sdk/protocol-http";
4+
import { FinalizeRequestMiddleware } from "@aws-sdk/types";
5+
import chai from "chai";
6+
import chaiAsPromised from "chai-as-promised";
7+
8+
import { S3 } from "../src/S3";
9+
10+
chai.use(chaiAsPromised);
11+
const { expect } = chai;
12+
13+
describe("Flexible Checksums", () => {
14+
describe("putObject", () => {
15+
[
16+
["", ChecksumAlgorithm.CRC32, "AAAAAA=="],
17+
["abc", ChecksumAlgorithm.CRC32, "NSRBwg=="],
18+
["Hello world", ChecksumAlgorithm.CRC32, "i9aeUg=="],
19+
20+
["", ChecksumAlgorithm.CRC32C, "AAAAAA=="],
21+
["abc", ChecksumAlgorithm.CRC32C, "Nks/tw=="],
22+
["Hello world", ChecksumAlgorithm.CRC32C, "crUfeA=="],
23+
24+
["", ChecksumAlgorithm.SHA1, "2jmj7l5rSw0yVb/vlWAYkK/YBwk="],
25+
["abc", ChecksumAlgorithm.SHA1, "qZk+NkcGgWq6PiVxeFDCbJzQ2J0="],
26+
["Hello world", ChecksumAlgorithm.SHA1, "e1AsOh9IyGCa4hLN+2Od7jlnP14="],
27+
28+
["", ChecksumAlgorithm.SHA256, "47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU="],
29+
["abc", ChecksumAlgorithm.SHA256, "ungWv48Bz+pBQUDeXa4iI7ADYaOWF3qctBD/YfIAFa0="],
30+
["Hello world", ChecksumAlgorithm.SHA256, "ZOyIygCyaOW6GjVnihtTFtIS9PNmskdyMlNKiuyjfzw="],
31+
].forEach(([body, checksumAlgorithm, checksumValue]) => {
32+
const checksumHeader = `x-amz-checksum-${checksumAlgorithm.toLowerCase()}`;
33+
34+
it(`sets ${checksumHeader}="${checksumValue}"" for checksum="${checksumAlgorithm}"`, async () => {
35+
const checksumValidator: FinalizeRequestMiddleware<any, any> = (next) => (args) => {
36+
// middleware intercept the request and return it early
37+
const request = args.request as HttpRequest;
38+
const { headers } = request;
39+
expect(headers["x-amz-sdk-checksum-algorithm"]).to.equal(checksumAlgorithm);
40+
expect(headers[checksumHeader]).to.equal(checksumValue);
41+
return Promise.resolve({ output: {} as any, response: {} as any });
42+
};
43+
44+
const client = new S3({});
45+
client.middlewareStack.addRelativeTo(checksumValidator, {
46+
relation: "after",
47+
toMiddleware: "flexibleChecksumsMiddleware",
48+
});
49+
50+
return await client.putObject({
51+
Bucket: "bucket",
52+
Key: "key",
53+
Body: body,
54+
ChecksumAlgorithm: checksumAlgorithm,
55+
});
56+
});
57+
});
58+
});
59+
});

0 commit comments

Comments
 (0)