diff --git a/clients/client-cognito-identity/karma.conf.js b/clients/client-cognito-identity/karma.conf.js
deleted file mode 100644
index edb2dfe72215..000000000000
--- a/clients/client-cognito-identity/karma.conf.js
+++ /dev/null
@@ -1,71 +0,0 @@
-// Set up following binaries before running the test:
-// CHROME_BIN: path to Chromium browser
-const webpack = require("webpack");
-
-module.exports = function (config) {
- config.set({
- basePath: "",
- frameworks: ["mocha", "chai"],
- files: ["test/e2e/**/*.ispec.ts"],
- processKillTimeout: 5000,
- preprocessors: {
- "test/e2e/**/*.ispec.ts": ["webpack", "sourcemap", "credentials", "env"],
- },
- webpackMiddleware: {
- stats: "minimal",
- },
- webpack: {
- resolve: {
- extensions: [".ts", ".js"],
- },
- mode: "development",
- module: {
- rules: [
- {
- test: /\.tsx?$/,
- use: [
- {
- loader: "ts-loader",
- options: {
- configFile: "tsconfig.json",
- compilerOptions: {
- rootDir: "./",
- },
- },
- },
- ],
- exclude: /node_modules/,
- },
- ],
- },
- plugins: [new webpack.NormalModuleReplacementPlugin(/\.\/runtimeConfig$/, "./runtimeConfig.browser")],
- devtool: "inline-source-map",
- },
- envPreprocessor: ["AWS_SMOKE_TEST_REGION", "AWS_SMOKE_TEST_IDENTITY_POOL_ID"],
- plugins: [
- "@aws-sdk/karma-credential-loader",
- "karma-chrome-launcher",
- "karma-mocha",
- "karma-chai",
- "karma-webpack",
- "karma-coverage",
- "karma-sourcemap-loader",
- "karma-env-preprocessor",
- ],
- reporters: ["progress"],
- port: 9876,
- colors: true,
- logLevel: config.LOG_WARN,
- autoWatch: false,
- browsers: ["ChromeHeadlessNoSandbox"],
- customLaunchers: {
- ChromeHeadlessNoSandbox: {
- base: "ChromeHeadless",
- flags: ["--no-sandbox"],
- },
- },
- singleRun: true,
- concurrency: Infinity,
- exclude: ["**/*.d.ts", "*.spec.ts"],
- });
-};
diff --git a/clients/client-cognito-identity/package.json b/clients/client-cognito-identity/package.json
index f145d6874db2..885f4a2218b3 100644
--- a/clients/client-cognito-identity/package.json
+++ b/clients/client-cognito-identity/package.json
@@ -12,7 +12,8 @@
"clean": "rimraf ./dist-* && rimraf *.tsbuildinfo",
"extract:docs": "api-extractor run --local",
"generate:client": "node ../../scripts/generate-clients/single-service --solo cognito-identity",
- "test:e2e": "ts-mocha test/**/*.ispec.ts && karma start karma.conf.js"
+ "test:e2e": "vitest run -c vitest.config.e2e.ts",
+ "test:e2e:watch": "vitest watch -c vitest.config.e2e.ts"
},
"main": "./dist-cjs/index.js",
"types": "./dist-types/index.d.ts",
diff --git a/clients/client-cognito-identity/test/e2e/CognitoIdentity.ispec.ts b/clients/client-cognito-identity/test/e2e/CognitoIdentity.e2e.spec.ts
similarity index 51%
rename from clients/client-cognito-identity/test/e2e/CognitoIdentity.ispec.ts
rename to clients/client-cognito-identity/test/e2e/CognitoIdentity.e2e.spec.ts
index 5a0eb9b8d99f..836bb76119f0 100644
--- a/clients/client-cognito-identity/test/e2e/CognitoIdentity.ispec.ts
+++ b/clients/client-cognito-identity/test/e2e/CognitoIdentity.e2e.spec.ts
@@ -1,21 +1,25 @@
-///
-/**
- * This is the integration test that make sure the client can make request cross-platform-ly
- * in NodeJS, Chromium and Firefox. This test is written in mocha.
- */
-import { expect } from "chai";
+import { beforeAll, describe, expect, test as it } from "vitest";
+import { getIntegTestResources } from "../../../../tests/e2e/get-integ-test-resources";
import { CognitoIdentity } from "../../src/index";
-// There will be default values of defaultRegion, credentials, and isBrowser variable in browser tests.
-// Define the values for Node.js tests
-const region: string | undefined = (globalThis as any).defaultRegion || process?.env?.AWS_SMOKE_TEST_REGION;
-const IdentityPoolId =
- (globalThis as any)?.window?.__env__?.AWS_SMOKE_TEST_IDENTITY_POOL_ID ||
- process?.env?.AWS_SMOKE_TEST_IDENTITY_POOL_ID;
-describe("@aws-sdk/client-cognito-identity", function () {
- const unAuthClient = new CognitoIdentity({
- region,
+describe("@aws-sdk/client-cognito-identity", () => {
+ let unAuthClient: CognitoIdentity;
+ let region: string;
+ let IdentityPoolId: string;
+
+ beforeAll(async () => {
+ const integTestResourcesEnv = await getIntegTestResources();
+ Object.assign(process.env, integTestResourcesEnv);
+
+ region = process?.env?.AWS_SMOKE_TEST_REGION as string;
+ IdentityPoolId =
+ (globalThis as any)?.window?.__env__?.AWS_SMOKE_TEST_IDENTITY_POOL_ID ||
+ process?.env?.AWS_SMOKE_TEST_IDENTITY_POOL_ID;
+
+ unAuthClient = new CognitoIdentity({
+ region,
+ });
});
it("should successfully fetch Id and get credentials", async () => {
diff --git a/clients/client-cognito-identity/tsconfig.json b/clients/client-cognito-identity/tsconfig.json
index e7f5ec56b742..bae83b8420ee 100644
--- a/clients/client-cognito-identity/tsconfig.json
+++ b/clients/client-cognito-identity/tsconfig.json
@@ -9,5 +9,5 @@
"rootDir": "src",
"useUnknownInCatchVariables": false
},
- "exclude": ["test/"]
+ "exclude": ["test/", "vitest.*.ts"]
}
diff --git a/clients/client-cognito-identity/vitest.config.e2e.ts b/clients/client-cognito-identity/vitest.config.e2e.ts
new file mode 100644
index 000000000000..a08a0dfa31c3
--- /dev/null
+++ b/clients/client-cognito-identity/vitest.config.e2e.ts
@@ -0,0 +1,8 @@
+import { defineConfig } from "vitest/config";
+
+export default defineConfig({
+ test: {
+ include: ["**/*.e2e.spec.ts"],
+ environment: "happy-dom",
+ },
+});
diff --git a/clients/client-kinesis/jest.config.e2e.js b/clients/client-kinesis/jest.config.e2e.js
deleted file mode 100644
index b4d9bee23f48..000000000000
--- a/clients/client-kinesis/jest.config.e2e.js
+++ /dev/null
@@ -1,4 +0,0 @@
-module.exports = {
- preset: "ts-jest",
- testMatch: ["**/*.e2e.spec.ts"],
-};
diff --git a/clients/client-kinesis/package.json b/clients/client-kinesis/package.json
index 4fd7034b7ca6..4eb4160dead9 100644
--- a/clients/client-kinesis/package.json
+++ b/clients/client-kinesis/package.json
@@ -12,7 +12,8 @@
"clean": "rimraf ./dist-* && rimraf *.tsbuildinfo",
"extract:docs": "api-extractor run --local",
"generate:client": "node ../../scripts/generate-clients/single-service --solo kinesis",
- "test:e2e": "jest --config jest.config.e2e.js"
+ "test:e2e": "vitest run -c vitest.config.e2e.ts",
+ "test:e2e:watch": "vitest watch -c vitest.config.e2e.ts"
},
"main": "./dist-cjs/index.js",
"types": "./dist-types/index.d.ts",
diff --git a/clients/client-kinesis/test/Kinesis.e2e.spec.ts b/clients/client-kinesis/test/Kinesis.e2e.spec.ts
index ca22bba08d10..b0bd4e69f688 100644
--- a/clients/client-kinesis/test/Kinesis.e2e.spec.ts
+++ b/clients/client-kinesis/test/Kinesis.e2e.spec.ts
@@ -1,3 +1,5 @@
+import { test as it, describe, expect } from "vitest";
+
import { KinesisClient, ListStreamsCommand } from "../src/index";
describe("@aws-sdk/client-kinesis", () => {
@@ -5,7 +7,7 @@ describe("@aws-sdk/client-kinesis", () => {
const ONE_SECOND = 1 * 1000;
// TODO: not working in CI
- xit(
+ it.skip(
`${ListStreamsCommand.name} should succeed`,
async () => {
const { StreamNames } = await client.send(new ListStreamsCommand({}));
diff --git a/clients/client-kinesis/vitest.config.e2e.ts b/clients/client-kinesis/vitest.config.e2e.ts
new file mode 100644
index 000000000000..92073c6cfcf0
--- /dev/null
+++ b/clients/client-kinesis/vitest.config.e2e.ts
@@ -0,0 +1,8 @@
+import { defineConfig } from "vitest/config";
+
+export default defineConfig({
+ test: {
+ include: ["**/*.e2e.spec.ts"],
+ environment: "node",
+ },
+});
diff --git a/clients/client-s3/.gitignore b/clients/client-s3/.gitignore
index bbc99354973f..965697f0881a 100644
--- a/clients/client-s3/.gitignore
+++ b/clients/client-s3/.gitignore
@@ -8,3 +8,4 @@
*.log
package-lock.json
!karma.conf.js
+/test/browser-build/browser-s3-bundle.js
\ No newline at end of file
diff --git a/clients/client-s3/jest.config.e2e.js b/clients/client-s3/jest.config.e2e.js
deleted file mode 100644
index c3aa6055ef75..000000000000
--- a/clients/client-s3/jest.config.e2e.js
+++ /dev/null
@@ -1,5 +0,0 @@
-module.exports = {
- preset: "ts-jest",
- testMatch: ["**/*.e2e.spec.ts"],
- bail: true,
-};
diff --git a/clients/client-s3/karma.conf.js b/clients/client-s3/karma.conf.js
deleted file mode 100644
index 5f0c811dfd76..000000000000
--- a/clients/client-s3/karma.conf.js
+++ /dev/null
@@ -1,74 +0,0 @@
-// Set up following binaries before running the test:
-// CHROME_BIN: path to Chromium browser
-const webpack = require("webpack");
-
-module.exports = function (config) {
- config.set({
- basePath: "",
- frameworks: ["mocha", "chai", "webpack"],
- files: ["test/e2e/**/*.ispec.ts"],
- processKillTimeout: 5000,
- preprocessors: {
- "test/e2e/**/*.ispec.ts": ["webpack", "sourcemap", "credentials", "env"],
- },
- webpackMiddleware: {
- stats: "minimal",
- },
- webpack: {
- resolve: {
- extensions: [".ts", ".js"],
- fallback: {
- stream: false,
- },
- },
- mode: "development",
- module: {
- rules: [
- {
- test: /\.tsx?$/,
- use: [
- {
- loader: "ts-loader",
- options: {
- configFile: "tsconfig.json",
- compilerOptions: {
- rootDir: "./",
- },
- },
- },
- ],
- exclude: /node_modules/,
- },
- ],
- },
- plugins: [new webpack.NormalModuleReplacementPlugin(/\.\/runtimeConfig$/, "./runtimeConfig.browser")],
- devtool: "inline-source-map",
- },
- envPreprocessor: ["AWS_SMOKE_TEST_REGION", "AWS_SMOKE_TEST_BUCKET", "AWS_SMOKE_TEST_MRAP_ARN"],
- plugins: [
- "@aws-sdk/karma-credential-loader",
- "karma-chrome-launcher",
- "karma-mocha",
- "karma-chai",
- "karma-webpack",
- "karma-coverage",
- "karma-sourcemap-loader",
- "karma-env-preprocessor",
- ],
- reporters: ["progress"],
- port: 9876,
- colors: true,
- logLevel: config.LOG_WARN,
- autoWatch: false,
- browsers: ["ChromeHeadlessNoSandbox"],
- customLaunchers: {
- ChromeHeadlessNoSandbox: {
- base: "ChromeHeadless",
- flags: ["--no-sandbox"],
- },
- },
- singleRun: true,
- concurrency: Infinity,
- exclude: ["**/*.d.ts", "*.spec.ts"],
- });
-};
diff --git a/clients/client-s3/package.json b/clients/client-s3/package.json
index 7a14f5a145bc..8275249d2e1b 100644
--- a/clients/client-s3/package.json
+++ b/clients/client-s3/package.json
@@ -12,11 +12,12 @@
"clean": "rimraf ./dist-* && rimraf *.tsbuildinfo",
"extract:docs": "api-extractor run --local",
"generate:client": "node ../../scripts/generate-clients/single-service --solo s3",
- "test": "yarn test:unit",
- "test:e2e": "yarn test:e2e:node && yarn test:e2e:browser",
- "test:e2e:browser": "ts-mocha test/**/*.browser.ispec.ts && karma start karma.conf.js",
- "test:e2e:node": "jest --c jest.config.e2e.js",
- "test:unit": "ts-mocha test/unit/**/*.spec.ts"
+ "test": "vitest run",
+ "test:watch": "vitest watch",
+ "test:e2e": "vitest run -c vitest.config.e2e.ts && yarn test:browser",
+ "test:e2e:watch": "vitest watch -c vitest.config.e2e.ts",
+ "test:browser": "node ./test/browser-build/esbuild && vitest run -c vitest.config.browser.ts",
+ "test:browser:watch": "node ./test/browser-build/esbuild && vitest watch -c vitest.config.browser.ts"
},
"main": "./dist-cjs/index.js",
"types": "./dist-types/index.d.ts",
diff --git a/clients/client-s3/test/browser-build/esbuild.js b/clients/client-s3/test/browser-build/esbuild.js
new file mode 100644
index 000000000000..0babfa49b561
--- /dev/null
+++ b/clients/client-s3/test/browser-build/esbuild.js
@@ -0,0 +1,20 @@
+const esbuild = require("esbuild");
+const path = require("path");
+
+const buildOptions = {
+ platform: "browser",
+ target: ["chrome120"],
+ bundle: true,
+ format: "esm",
+ mainFields: ["module", "browser", "main"],
+ allowOverwrite: true,
+ entryPoints: [path.join(__dirname, "..", "..", "dist-es", "index.js")],
+ supported: {
+ "dynamic-import": false,
+ },
+ outfile: path.join(__dirname, "browser-s3-bundle.js"),
+ // packages: "external",
+ external: [],
+};
+
+esbuild.build(buildOptions);
diff --git a/clients/client-s3/test/e2e/S3.browser.ispec.ts b/clients/client-s3/test/e2e/S3.browser.e2e.spec.ts
similarity index 60%
rename from clients/client-s3/test/e2e/S3.browser.ispec.ts
rename to clients/client-s3/test/e2e/S3.browser.e2e.spec.ts
index 9cfd2f4d047a..eaf180e11394 100644
--- a/clients/client-s3/test/e2e/S3.browser.ispec.ts
+++ b/clients/client-s3/test/e2e/S3.browser.e2e.spec.ts
@@ -1,46 +1,64 @@
-///
/**
* This is the integration test that make sure the client can make request cross-platform-ly
- * in NodeJS, Chromium and Firefox. This test is written in mocha.
+ * in NodeJS and browsers.
*/
-import { Credentials } from "@aws-sdk/types";
-import chai from "chai";
-import chaiAsPromised from "chai-as-promised";
+import type { S3, SelectObjectContentEventStream } from "@aws-sdk/client-s3";
+import { fromNodeProviderChain } from "@aws-sdk/credential-providers";
+import { FetchHttpHandler } from "@smithy/fetch-http-handler";
+import { afterEach, beforeAll, beforeEach, describe, expect, test as it } from "vitest";
-import { S3, SelectObjectContentEventStream } from "../../src/index";
+import { getIntegTestResources } from "../../../../tests/e2e/get-integ-test-resources";
+import { getRuntimeConfig } from "../../src/runtimeConfig.browser";
+import { S3 as S3Impl } from "../browser-build/browser-s3-bundle";
import { createBuffer } from "./helpers";
-chai.use(chaiAsPromised);
-const { expect } = chai;
-const region: string | undefined = (globalThis as any).defaultRegion || process?.env?.AWS_SMOKE_TEST_REGION;
-const credentials: Credentials | undefined = (globalThis as any).credentials || undefined;
-const isBrowser: boolean | undefined = (globalThis as any).isBrowser || false;
-const Bucket = (globalThis as any)?.window?.__env__?.AWS_SMOKE_TEST_BUCKET || process?.env?.AWS_SMOKE_TEST_BUCKET;
-const mrapArn = (globalThis as any)?.window?.__env__?.AWS_SMOKE_TEST_MRAP_ARN || process?.env?.AWS_SMOKE_TEST_MRAP_ARN;
+describe("@aws-sdk/client-s3", () => {
+ let client: S3;
+ let Bucket: string;
+ let region: string;
+ let mrapArn: string;
+ let Key = `${Date.now()}`;
-let Key = `${Date.now()}`;
+ beforeAll(async () => {
+ const integTestResourcesEnv = await getIntegTestResources();
+ Object.assign(process.env, integTestResourcesEnv);
-(isBrowser ? describe : xdescribe)("@aws-sdk/client-s3", () => {
- const client = new S3({
- region: region,
- credentials,
+ region = process?.env?.AWS_SMOKE_TEST_REGION as string;
+ Bucket = process?.env?.AWS_SMOKE_TEST_BUCKET as string;
+ mrapArn = (globalThis as any)?.window?.__env__?.AWS_SMOKE_TEST_MRAP_ARN || process?.env?.AWS_SMOKE_TEST_MRAP_ARN;
+
+ client = new S3Impl(
+ getRuntimeConfig({
+ region,
+ credentials: fromNodeProviderChain(),
+ requestHandler: new FetchHttpHandler(),
+ })
+ ) as S3;
});
describe("PutObject", () => {
- before(() => {
+ beforeEach(() => {
Key = `${Date.now()}`;
});
- after(async () => {
+
+ afterEach(async () => {
await client.deleteObject({ Bucket, Key });
});
+
const buf = createBuffer("1KB");
- it("should succeed with blob body", async () => {
+
+ // TODO(vitest)
+ // Caused by: RequestContentLengthMismatchError: Request body length does not match content-length header
+ // only in vitest + happy-dom.
+ it.skip("should succeed with blob body", async () => {
+ const blob = new Blob([buf]);
const result = await client.putObject({
Bucket,
Key,
- Body: new Blob([buf]),
+ Body: blob,
+ ContentLength: blob.size,
});
- expect(result.$metadata.httpStatusCode).to.equal(200);
+ expect(result.$metadata.httpStatusCode).toEqual(200);
});
it("should succeed with TypedArray body", async () => {
@@ -49,13 +67,10 @@ let Key = `${Date.now()}`;
Key,
Body: buf,
});
- expect(result.$metadata.httpStatusCode).to.equal(200);
+ expect(result.$metadata.httpStatusCode).toEqual(200);
});
- // todo: fix needed
- // todo: TypeError: Failed to construct 'Request': The `duplex` member must
- // todo: be specified for a request with a streaming body
- it.skip("should succeed with ReadableStream body", async () => {
+ it("should succeed with ReadableStream body", async () => {
const length = 10 * 1000; // 10KB
const chunkSize = 10;
const readableStream = new ReadableStream({
@@ -75,18 +90,18 @@ let Key = `${Date.now()}`;
Bucket,
Key,
Body: readableStream,
+ ContentLength: length,
});
- expect(result.$metadata.httpStatusCode).to.equal(200);
+ expect(result.$metadata.httpStatusCode).toEqual(200);
});
});
describe("GetObject", function () {
- this.timeout(10 * 1000);
- before(async () => {
+ beforeEach(async () => {
Key = `${Date.now()}`;
});
- after(async () => {
+ afterEach(async () => {
await client.deleteObject({ Bucket, Key });
});
@@ -109,36 +124,37 @@ let Key = `${Date.now()}`;
throw e;
}
- expect(result.$metadata.httpStatusCode).to.equal(200);
- expect(result.Body).to.be.instanceOf(ReadableStream);
+ expect(result.$metadata.httpStatusCode).toEqual(200);
+ expect(result.Body).toBeInstanceOf(ReadableStream);
});
- });
+ }, 10_000);
describe("ListObjects", () => {
- before(async () => {
+ beforeEach(async () => {
Key = `${Date.now()}`;
await client.putObject({ Bucket, Key, Body: "foo" });
});
- after(async () => {
+ afterEach(async () => {
await client.deleteObject({ Bucket, Key });
});
it("should succeed with valid bucket", async () => {
const result = await client.listObjects({
Bucket,
});
- expect(result.$metadata.httpStatusCode).to.equal(200);
- expect(result.Contents).to.be.instanceOf(Array);
+ expect(result.$metadata.httpStatusCode).toEqual(200);
+ expect(result.Contents).toBeInstanceOf(Array);
});
- it("should throw with invalid bucket", () =>
- expect(client.listObjects({ Bucket: "invalid-bucket" })).to.eventually.be.rejected.and.be.an.instanceOf(Error));
+ it("should throw with invalid bucket", () => {
+ expect(() => client.listObjects({ Bucket: "invalid-bucket" })).rejects.toThrow();
+ });
});
describe("MultipartUpload", () => {
let UploadId: string;
let Etag: string;
const multipartObjectKey = `${Key}-multipart`;
- before(() => {
+ beforeEach(() => {
Key = `${Date.now()}`;
});
afterEach(async () => {
@@ -161,8 +177,8 @@ let Key = `${Date.now()}`;
Bucket,
Key: multipartObjectKey,
});
- expect(createResult.$metadata.httpStatusCode).to.equal(200);
- expect(typeof createResult.UploadId).to.equal("string");
+ expect(createResult.$metadata.httpStatusCode).toEqual(200);
+ expect(typeof createResult.UploadId).toEqual("string");
UploadId = createResult.UploadId as string;
//upload part
@@ -173,8 +189,8 @@ let Key = `${Date.now()}`;
PartNumber: 1,
Body: createBuffer("1KB"),
});
- expect(uploadResult.$metadata.httpStatusCode).to.equal(200);
- expect(typeof uploadResult.ETag).to.equal("string");
+ expect(uploadResult.$metadata.httpStatusCode).toEqual(200);
+ expect(typeof uploadResult.ETag).toEqual("string");
Etag = uploadResult.ETag as string;
//list parts
@@ -183,9 +199,9 @@ let Key = `${Date.now()}`;
Key: multipartObjectKey,
UploadId,
});
- expect(listPartsResult.$metadata.httpStatusCode).to.equal(200);
- expect(listPartsResult.Parts?.length).to.equal(1);
- expect(listPartsResult.Parts?.[0].ETag).to.equal(Etag);
+ expect(listPartsResult.$metadata.httpStatusCode).toEqual(200);
+ expect(listPartsResult.Parts?.length).toEqual(1);
+ expect(listPartsResult.Parts?.[0].ETag).toEqual(Etag);
//complete multipart upload
const completeResult = await client.completeMultipartUpload({
@@ -194,14 +210,14 @@ let Key = `${Date.now()}`;
UploadId,
MultipartUpload: { Parts: [{ ETag: Etag, PartNumber: 1 }] },
});
- expect(completeResult.$metadata.httpStatusCode).to.equal(200);
+ expect(completeResult.$metadata.httpStatusCode).toEqual(200);
//validate the object is uploaded
const headResult = await client.headObject({
Bucket,
Key: multipartObjectKey,
});
- expect(headResult.$metadata.httpStatusCode).to.equal(200);
+ expect(headResult.$metadata.httpStatusCode).toEqual(200);
});
it("should successfully create, abort, and list upload", async () => {
@@ -210,9 +226,9 @@ let Key = `${Date.now()}`;
Bucket,
Key: multipartObjectKey,
});
- expect(createResult.$metadata.httpStatusCode).to.equal(200);
+ expect(createResult.$metadata.httpStatusCode).toEqual(200);
const toAbort = createResult.UploadId;
- expect(typeof toAbort).to.equal("string");
+ expect(typeof toAbort).toEqual("string");
//abort multipart upload
const abortResult = await client.abortMultipartUpload({
@@ -220,14 +236,14 @@ let Key = `${Date.now()}`;
Key: multipartObjectKey,
UploadId: toAbort,
});
- expect(abortResult.$metadata.httpStatusCode).to.equal(204);
+ expect(abortResult.$metadata.httpStatusCode).toEqual(204);
//validate multipart upload is aborted
const listUploadsResult = await client.listMultipartUploads({
Bucket,
});
- expect(listUploadsResult.$metadata.httpStatusCode).to.equal(200);
- expect((listUploadsResult.Uploads || []).map((upload) => upload.UploadId)).not.to.contain(toAbort);
+ expect(listUploadsResult.$metadata.httpStatusCode).toEqual(200);
+ expect((listUploadsResult.Uploads || []).map((upload) => upload.UploadId)).not.toContain(toAbort);
});
});
@@ -236,11 +252,11 @@ let Key = `${Date.now()}`;
jsrocks,13
node4life,22
esfuture,29`;
- before(async () => {
+ beforeEach(async () => {
Key = `${Date.now()}`;
await client.putObject({ Bucket, Key, Body: csvFile });
});
- after(async () => {
+ afterEach(async () => {
await client.deleteObject({ Bucket, Key });
});
it("should succeed", async () => {
@@ -264,26 +280,26 @@ esfuture,29`;
for await (const event of Payload!) {
events.push(event);
}
- expect(events.length).to.equal(3);
- expect(new TextDecoder().decode(events[0].Records?.Payload)).to.equal("node4life\nesfuture\n");
- expect(events[1].Stats?.Details).to.be.exist;
- expect(events[2].End).to.be.exist;
+ expect(events.length).toEqual(3);
+ expect(new TextDecoder().decode(events[0].Records?.Payload)).toEqual("node4life\nesfuture\n");
+ expect(events[1].Stats?.Details).toBeDefined();
+ expect(events[2].End).toBeDefined();
});
});
describe("Multi-region access point", () => {
- before(async () => {
+ beforeEach(async () => {
Key = `${Date.now()}`;
});
- after(async () => {});
+ afterEach(async () => {});
it("should throw for aws-crt no available in browser", async () => {
try {
await client.listObjects({
Bucket: mrapArn,
});
- expect.fail("MRAP call in browser should throw");
+ throw new Error("MRAP call in browser should throw");
} catch (e) {
- expect(e.message).include("only available in Node.js");
+ expect(e.message).toContain("only available in Node.js");
}
});
});
diff --git a/clients/client-s3/test/e2e/S3.e2e.spec.ts b/clients/client-s3/test/e2e/S3.e2e.spec.ts
index 6d1e01eed08e..b38870fa1e0b 100644
--- a/clients/client-s3/test/e2e/S3.e2e.spec.ts
+++ b/clients/client-s3/test/e2e/S3.e2e.spec.ts
@@ -1,21 +1,36 @@
import "@aws-sdk/signature-v4-crt";
-import { Credentials } from "@aws-sdk/types";
+import { S3, SelectObjectContentEventStream } from "@aws-sdk/client-s3";
+import { AwsCredentialIdentity } from "@aws-sdk/types";
+import { afterAll, afterEach, beforeAll, describe, expect, test as it } from "vitest";
-import { S3, SelectObjectContentEventStream } from "../../src/index";
+import { getIntegTestResources } from "../../../../tests/e2e/get-integ-test-resources";
import { createBuffer } from "./helpers";
-const region: string | undefined = (globalThis as any).defaultRegion || process?.env?.AWS_SMOKE_TEST_REGION;
-const credentials: Credentials | undefined = (globalThis as any).credentials || undefined;
-const Bucket = (globalThis as any)?.window?.__env__?.AWS_SMOKE_TEST_BUCKET || process?.env?.AWS_SMOKE_TEST_BUCKET;
-const mrapArn = (globalThis as any)?.window?.__env__?.AWS_SMOKE_TEST_MRAP_ARN || process?.env?.AWS_SMOKE_TEST_MRAP_ARN;
-
let Key = `${Date.now()}`;
describe("@aws-sdk/client-s3", () => {
- const client = new S3({
- region: region,
- credentials,
+ let client: S3;
+ let Bucket: string;
+ let region: string;
+ let credentials: AwsCredentialIdentity;
+ let mrapArn: string;
+
+ beforeAll(async () => {
+ const integTestResourcesEnv = await getIntegTestResources();
+ Object.assign(process.env, integTestResourcesEnv);
+
+ region = process?.env?.AWS_SMOKE_TEST_REGION as string;
+ credentials = (globalThis as any).credentials || undefined;
+ Bucket = process?.env?.AWS_SMOKE_TEST_BUCKET as string;
+ mrapArn = (globalThis as any)?.window?.__env__?.AWS_SMOKE_TEST_MRAP_ARN || process?.env?.AWS_SMOKE_TEST_MRAP_ARN;
+
+ Key = ``;
+
+ client = new S3({
+ region,
+ credentials,
+ });
});
describe("PutObject", () => {
@@ -54,8 +69,7 @@ describe("@aws-sdk/client-s3", () => {
});
});
- describe("GetObject", function () {
- jest.setTimeout(10 * 1000);
+ describe("GetObject", () => {
beforeAll(async () => {
Key = `${Date.now()}`;
});
@@ -87,7 +101,7 @@ describe("@aws-sdk/client-s3", () => {
const { Readable } = require("stream");
expect(result.Body).toBeInstanceOf(Readable);
});
- });
+ }, 10_000);
describe("ListObjects", () => {
beforeAll(async () => {
diff --git a/clients/client-s3/test/unit/S3.spec.ts b/clients/client-s3/test/unit/S3.spec.ts
index 70bb865f208f..bb201b3f8c86 100644
--- a/clients/client-s3/test/unit/S3.spec.ts
+++ b/clients/client-s3/test/unit/S3.spec.ts
@@ -1,15 +1,10 @@
-///
import { HttpHandler, HttpRequest, HttpResponse } from "@smithy/protocol-http";
import { BuildMiddleware, FinalizeRequestMiddleware, SerializeMiddleware } from "@smithy/types";
-import chai from "chai";
-import chaiAsPromised from "chai-as-promised";
import { PassThrough, Readable } from "stream";
+import { beforeEach, describe, expect, test as it } from "vitest";
import { S3 } from "../../src/S3";
-chai.use(chaiAsPromised);
-const { expect } = chai;
-
describe("endpoint", () => {
it("users can override endpoint from client.", async () => {
//use s3 here but all the clients are generated similarly
@@ -178,19 +173,15 @@ describe("Throw 200 response", () => {
});
it("should throw if CopyObject() return with 200 and empty payload", async () => {
- return expect(client.copyObject(params)).to.eventually.be.rejectedWith(errorMsg);
+ return expect(client.copyObject(params)).rejects.toThrowError(errorMsg);
});
it("should throw if UploadPartCopy() return with 200 and empty payload", async () => {
- return expect(client.uploadPartCopy({ ...params, UploadId: "id", PartNumber: 1 })).to.eventually.be.rejectedWith(
- errorMsg
- );
+ return expect(client.uploadPartCopy({ ...params, UploadId: "id", PartNumber: 1 })).rejects.toThrowError(errorMsg);
});
it("should throw if CompleteMultipartUpload() return with 200 and empty payload", async () => {
- return expect(client.completeMultipartUpload({ ...params, UploadId: "id" })).to.eventually.be.rejectedWith(
- errorMsg
- );
+ return expect(client.completeMultipartUpload({ ...params, UploadId: "id" })).rejects.toThrowError(errorMsg);
});
});
@@ -209,19 +200,15 @@ describe("Throw 200 response", () => {
});
it("should throw if CopyObject() return with 200 and error preamble", async () => {
- return expect(client.copyObject(params)).to.eventually.be.rejectedWith(errorMsg);
+ return expect(client.copyObject(params)).rejects.toThrowError(errorMsg);
});
it("should throw if UploadPartCopy() return with 200 and error preamble", async () => {
- return expect(client.uploadPartCopy({ ...params, UploadId: "id", PartNumber: 1 })).to.eventually.be.rejectedWith(
- errorMsg
- );
+ return expect(client.uploadPartCopy({ ...params, UploadId: "id", PartNumber: 1 })).rejects.toThrowError(errorMsg);
});
it("should throw if CompleteMultipartUpload() return with 200 and error preamble", async () => {
- return expect(client.completeMultipartUpload({ ...params, UploadId: "id" })).to.eventually.be.rejectedWith(
- errorMsg
- );
+ return expect(client.completeMultipartUpload({ ...params, UploadId: "id" })).rejects.toThrowError(errorMsg);
});
});
});
@@ -270,6 +257,10 @@ describe("signing", () => {
expect(request.path).to.equal("/some%20file.txt");
return { response: new HttpResponse({ statusCode: 200 }) };
},
+ updateHttpClientConfig(key: keyof any, value: any[typeof key]): void {},
+ httpHandlerConfigs(): any {
+ return {} as any;
+ },
};
const client = new S3({ requestHandler });
diff --git a/clients/client-s3/test/unit/dotSegmentInUriLabel.spec.ts b/clients/client-s3/test/unit/dotSegmentInUriLabel.spec.ts
index e34075bc35ba..8179a6d4b686 100644
--- a/clients/client-s3/test/unit/dotSegmentInUriLabel.spec.ts
+++ b/clients/client-s3/test/unit/dotSegmentInUriLabel.spec.ts
@@ -1,12 +1,8 @@
-///
+import { test as it, describe, expect } from "vitest";
+
import { HttpHandler, HttpRequest, HttpResponse } from "@smithy/protocol-http";
import { HttpHandlerOptions } from "@smithy/types";
import { S3 } from "../../src/S3";
-import chai from "chai";
-import chaiAsPromised from "chai-as-promised";
-
-chai.use(chaiAsPromised);
-const { expect } = chai;
/**
* Throws an expected exception that contains the serialized request.
@@ -39,10 +35,10 @@ describe("Dot Segment in URI Label", () => {
Bucket: "mybucket",
Key: "../key.txt",
});
- fail("Expected an EXPECTED_REQUEST_SERIALIZATION_ERROR to be thrown");
+ throw new Error("Expected an EXPECTED_REQUEST_SERIALIZATION_ERROR to be thrown");
} catch (err) {
if (!(err instanceof ExpectedRequestSerializationError)) {
- fail(err);
+ throw new Error(err);
}
const r = err.request;
expect(r.method).to.eql("GET");
@@ -56,10 +52,10 @@ describe("Dot Segment in URI Label", () => {
Bucket: "mybucket",
Key: "foo/../key.txt",
});
- fail("Expected an EXPECTED_REQUEST_SERIALIZATION_ERROR to be thrown");
+ throw new Error("Expected an EXPECTED_REQUEST_SERIALIZATION_ERROR to be thrown");
} catch (err) {
if (!(err instanceof ExpectedRequestSerializationError)) {
- fail(err);
+ throw new Error(err);
}
const r = err.request;
expect(r.method).to.eql("GET");
diff --git a/clients/client-s3/test/unit/flexibleChecksums.spec.ts b/clients/client-s3/test/unit/flexibleChecksums.spec.ts
index ec0d7f02545d..c7093245006c 100644
--- a/clients/client-s3/test/unit/flexibleChecksums.spec.ts
+++ b/clients/client-s3/test/unit/flexibleChecksums.spec.ts
@@ -1,15 +1,11 @@
-///
+import { test as it, describe, expect } from "vitest";
+
import { ChecksumAlgorithm } from "@aws-sdk/middleware-flexible-checksums";
import { HttpRequest } from "@smithy/protocol-http";
import { BuildMiddleware } from "@smithy/types";
-import chai from "chai";
-import chaiAsPromised from "chai-as-promised";
import { Readable } from "stream";
-import { S3 } from "../../src/S3";
-
-chai.use(chaiAsPromised);
-const { expect } = chai;
+import { S3, ChecksumAlgorithm as Algo } from "../../src/index";
describe("Flexible Checksums", () => {
const testCases = [
@@ -69,11 +65,11 @@ describe("Flexible Checksums", () => {
Bucket: "bucket",
Key: "key",
Body: body,
- ChecksumAlgorithm: checksumAlgorithm,
+ ChecksumAlgorithm: checksumAlgorithm as Algo,
});
});
- it(`when body is sent as a stream`, (done) => {
+ it(`when body is sent as a stream`, async () => {
const requestChecksumValidator: BuildMiddleware = (next) => async (args) => {
// middleware intercept the request and return it early
const request = args.request as HttpRequest;
@@ -88,7 +84,6 @@ describe("Flexible Checksums", () => {
if (stringValue.startsWith(checksumHeader)) {
const receivedChecksum = stringValue.replace("\r\n", "").split(":")[1];
expect(receivedChecksum).to.equal(checksumValue);
- done();
}
});
return { output: {} as any, response: {} as any };
@@ -101,11 +96,11 @@ describe("Flexible Checksums", () => {
});
const bodyStream = getBodyAsReadableStream(body);
- client.putObject({
+ await client.putObject({
Bucket: "bucket",
Key: "key",
Body: bodyStream,
- ChecksumAlgorithm: checksumAlgorithm,
+ ChecksumAlgorithm: checksumAlgorithm as Algo,
});
});
});
diff --git a/clients/client-s3/tsconfig.json b/clients/client-s3/tsconfig.json
index e7f5ec56b742..bae83b8420ee 100644
--- a/clients/client-s3/tsconfig.json
+++ b/clients/client-s3/tsconfig.json
@@ -9,5 +9,5 @@
"rootDir": "src",
"useUnknownInCatchVariables": false
},
- "exclude": ["test/"]
+ "exclude": ["test/", "vitest.*.ts"]
}
diff --git a/clients/client-s3/tsconfig.types.json b/clients/client-s3/tsconfig.types.json
index 4c3dfa7b3d25..8b7606a2c091 100644
--- a/clients/client-s3/tsconfig.types.json
+++ b/clients/client-s3/tsconfig.types.json
@@ -6,5 +6,5 @@
"declarationDir": "dist-types",
"emitDeclarationOnly": true
},
- "exclude": ["test/**/*", "dist-types/**/*"]
+ "exclude": ["test/**/*", "dist-types/**/*", "vitest.*.ts"]
}
diff --git a/clients/client-s3/vitest.config.browser.ts b/clients/client-s3/vitest.config.browser.ts
new file mode 100644
index 000000000000..cdc198649d30
--- /dev/null
+++ b/clients/client-s3/vitest.config.browser.ts
@@ -0,0 +1,8 @@
+import { defineConfig } from "vitest/config";
+
+export default defineConfig({
+ test: {
+ include: ["**/*.browser.e2e.spec.ts", "test/unit/**/*.spec.ts"],
+ environment: "happy-dom",
+ },
+});
diff --git a/clients/client-s3/vitest.config.e2e.ts b/clients/client-s3/vitest.config.e2e.ts
new file mode 100644
index 000000000000..13bf99384530
--- /dev/null
+++ b/clients/client-s3/vitest.config.e2e.ts
@@ -0,0 +1,9 @@
+import { defineConfig } from "vitest/config";
+
+export default defineConfig({
+ test: {
+ exclude: ["**/*.{integ,browser}.spec.ts"],
+ include: ["**/*.e2e.spec.ts"],
+ environment: "node",
+ },
+});
diff --git a/clients/client-s3/vitest.config.ts b/clients/client-s3/vitest.config.ts
new file mode 100644
index 000000000000..4e46707824a5
--- /dev/null
+++ b/clients/client-s3/vitest.config.ts
@@ -0,0 +1,9 @@
+import { defineConfig } from "vitest/config";
+
+export default defineConfig({
+ test: {
+ exclude: ["**/*.{integ,e2e,browser}.spec.ts"],
+ include: ["**/*.spec.ts"],
+ environment: "node",
+ },
+});
diff --git a/clients/client-sts/jest.config.js b/clients/client-sts/jest.config.js
deleted file mode 100644
index a8d1c2e49912..000000000000
--- a/clients/client-sts/jest.config.js
+++ /dev/null
@@ -1,5 +0,0 @@
-const base = require("../../jest.config.base.js");
-
-module.exports = {
- ...base,
-};
diff --git a/clients/client-sts/package.json b/clients/client-sts/package.json
index df82b65a7b6b..a51a73cc1bf8 100644
--- a/clients/client-sts/package.json
+++ b/clients/client-sts/package.json
@@ -12,8 +12,8 @@
"clean": "rimraf ./dist-* && rimraf *.tsbuildinfo",
"extract:docs": "api-extractor run --local",
"generate:client": "node ../../scripts/generate-clients/single-service --solo sts",
- "test": "yarn test:unit",
- "test:unit": "jest"
+ "test": "vitest run",
+ "test:watch": "vitest watch"
},
"main": "./dist-cjs/index.js",
"types": "./dist-types/index.d.ts",
diff --git a/clients/client-sts/test/defaultRoleAssumers.spec.ts b/clients/client-sts/test/defaultRoleAssumers.spec.ts
index f1c369b01260..fce6dde584b2 100644
--- a/clients/client-sts/test/defaultRoleAssumers.spec.ts
+++ b/clients/client-sts/test/defaultRoleAssumers.spec.ts
@@ -3,18 +3,19 @@
import { NodeHttp2Handler, NodeHttpHandler, streamCollector } from "@smithy/node-http-handler";
import { HttpResponse } from "@smithy/protocol-http";
import { Readable } from "stream";
+import { beforeAll, beforeEach, describe, expect, test as it, vi } from "vitest";
import type { AssumeRoleCommandInput } from "../src/commands/AssumeRoleCommand";
import { AssumeRoleWithWebIdentityCommandInput } from "../src/commands/AssumeRoleWithWebIdentityCommand";
import { getDefaultRoleAssumer, getDefaultRoleAssumerWithWebIdentity } from "../src/defaultRoleAssumers";
-const mockHandle = jest.fn().mockResolvedValue({
+const mockHandle = vi.fn().mockResolvedValue({
response: new HttpResponse({
statusCode: 200,
body: Readable.from([""]),
}),
});
-jest.mock("@smithy/node-http-handler", () => {
+vi.mock("@smithy/node-http-handler", () => {
class MockNodeHttpHandler {
static create(instanceOrOptions?: any) {
if (typeof instanceOrOptions?.handle === "function") {
@@ -41,18 +42,26 @@ jest.mock("@smithy/node-http-handler", () => {
return {
NodeHttpHandler: MockNodeHttpHandler,
NodeHttp2Handler: MockNodeHttp2Handler,
- streamCollector: jest.fn(),
+ streamCollector: vi.fn(),
};
});
-const mockConstructorInput = jest.fn();
-jest.mock("../src/STSClient", () => ({
- STSClient: function (params: any) {
- mockConstructorInput(params);
- //@ts-ignore
- return new (jest.requireActual("../src/STSClient").STSClient)(params);
- },
-}));
+const STSCtor = vi.fn();
+
+vi.mock("../src/STSClient", async () => {
+ const actual: any = await vi.importActual("../src/STSClient");
+
+ const pkg = {
+ ...actual,
+ STSClient: class STSClient extends actual.STSClient {
+ constructor(...args: any[]) {
+ super(...args);
+ STSCtor(...args);
+ }
+ },
+ };
+ return pkg;
+});
describe("getDefaultRoleAssumer", () => {
const assumeRoleResponse = `
@@ -74,11 +83,11 @@ describe("getDefaultRoleAssumer", () => {
`;
beforeAll(() => {
- (streamCollector as jest.Mock).mockImplementation(async () => Buffer.from(assumeRoleResponse));
+ vi.mocked(streamCollector).mockImplementation(async () => Buffer.from(assumeRoleResponse));
});
beforeEach(() => {
- jest.clearAllMocks();
+ vi.clearAllMocks();
});
it("should use supplied source credentials", async () => {
@@ -134,8 +143,8 @@ describe("getDefaultRoleAssumer", () => {
};
const sourceCred = { accessKeyId: "key", secretAccessKey: "secret" };
await roleAssumer(sourceCred, params);
- expect(mockConstructorInput).toHaveBeenCalledTimes(1);
- expect(mockConstructorInput.mock.calls[0][0]).toMatchObject({
+ expect(vi.mocked(STSCtor)).toHaveBeenCalledTimes(1);
+ expect(vi.mocked(STSCtor).mock.calls[0][0]).toMatchObject({
logger,
requestHandler: handler,
region,
@@ -159,8 +168,8 @@ describe("getDefaultRoleAssumer", () => {
};
const sourceCred = { accessKeyId: "key", secretAccessKey: "secret" };
await roleAssumer(sourceCred, params);
- expect(mockConstructorInput).toHaveBeenCalledTimes(1);
- expect(mockConstructorInput.mock.calls[0][0]).toMatchObject({
+ expect(vi.mocked(STSCtor)).toHaveBeenCalledTimes(1);
+ expect(vi.mocked(STSCtor).mock.calls[0][0]).toMatchObject({
logger,
requestHandler: handler,
region,
@@ -184,8 +193,8 @@ describe("getDefaultRoleAssumer", () => {
};
const sourceCred = { accessKeyId: "key", secretAccessKey: "secret" };
await roleAssumer(sourceCred, params);
- expect(mockConstructorInput).toHaveBeenCalledTimes(1);
- expect(mockConstructorInput.mock.calls[0][0]).toMatchObject({
+ expect(vi.mocked(STSCtor)).toHaveBeenCalledTimes(1);
+ expect(vi.mocked(STSCtor).mock.calls[0][0]).toMatchObject({
logger,
requestHandler: undefined,
region,
@@ -193,7 +202,7 @@ describe("getDefaultRoleAssumer", () => {
});
it("should use the STS client middleware", async () => {
- const customMiddlewareFunction = jest.fn();
+ const customMiddlewareFunction = vi.fn();
const roleAssumer = getDefaultRoleAssumer({}, [
{
applyToStack: (stack) => {
@@ -233,11 +242,11 @@ describe("getDefaultRoleAssumerWithWebIdentity", () => {
`;
beforeAll(() => {
- (streamCollector as jest.Mock).mockImplementation(async () => Buffer.from(assumeRoleResponse));
+ vi.mocked(streamCollector).mockImplementation(async () => Buffer.from(assumeRoleResponse));
});
beforeEach(() => {
- jest.clearAllMocks();
+ vi.clearAllMocks();
});
it("should use the STS client config", async () => {
@@ -255,8 +264,8 @@ describe("getDefaultRoleAssumerWithWebIdentity", () => {
WebIdentityToken: "token",
};
await roleAssumerWithWebIdentity(params);
- expect(mockConstructorInput).toHaveBeenCalledTimes(1);
- expect(mockConstructorInput.mock.calls[0][0]).toMatchObject({
+ expect(vi.mocked(STSCtor)).toHaveBeenCalledTimes(1);
+ expect(vi.mocked(STSCtor).mock.calls[0][0]).toMatchObject({
logger,
requestHandler: handler,
region,
@@ -275,7 +284,7 @@ describe("getDefaultRoleAssumerWithWebIdentity", () => {
});
it("should use the STS client middleware", async () => {
- const customMiddlewareFunction = jest.fn();
+ const customMiddlewareFunction = vi.fn();
const roleAssumerWithWebIdentity = getDefaultRoleAssumerWithWebIdentity({}, [
{
applyToStack: (stack) => {
diff --git a/clients/client-sts/tsconfig.json b/clients/client-sts/tsconfig.json
index e7f5ec56b742..bae83b8420ee 100644
--- a/clients/client-sts/tsconfig.json
+++ b/clients/client-sts/tsconfig.json
@@ -9,5 +9,5 @@
"rootDir": "src",
"useUnknownInCatchVariables": false
},
- "exclude": ["test/"]
+ "exclude": ["test/", "vitest.*.ts"]
}
diff --git a/clients/client-sts/vitest.config.ts b/clients/client-sts/vitest.config.ts
new file mode 100644
index 000000000000..4e46707824a5
--- /dev/null
+++ b/clients/client-sts/vitest.config.ts
@@ -0,0 +1,9 @@
+import { defineConfig } from "vitest/config";
+
+export default defineConfig({
+ test: {
+ exclude: ["**/*.{integ,e2e,browser}.spec.ts"],
+ include: ["**/*.spec.ts"],
+ environment: "node",
+ },
+});
diff --git a/clients/client-transcribe-streaming/.gitignore b/clients/client-transcribe-streaming/.gitignore
index 08d359af39e7..8aa820805c0c 100644
--- a/clients/client-transcribe-streaming/.gitignore
+++ b/clients/client-transcribe-streaming/.gitignore
@@ -7,4 +7,4 @@
*.tgz
*.log
package-lock.json
-!jest*.config.js
+!vite*.ts
diff --git a/clients/client-transcribe-streaming/jest.config.e2e.js b/clients/client-transcribe-streaming/jest.config.e2e.js
deleted file mode 100644
index b4d9bee23f48..000000000000
--- a/clients/client-transcribe-streaming/jest.config.e2e.js
+++ /dev/null
@@ -1,4 +0,0 @@
-module.exports = {
- preset: "ts-jest",
- testMatch: ["**/*.e2e.spec.ts"],
-};
diff --git a/clients/client-transcribe-streaming/package.json b/clients/client-transcribe-streaming/package.json
index 3529ffc40006..6b62b7b40516 100644
--- a/clients/client-transcribe-streaming/package.json
+++ b/clients/client-transcribe-streaming/package.json
@@ -12,7 +12,8 @@
"clean": "rimraf ./dist-* && rimraf *.tsbuildinfo",
"extract:docs": "api-extractor run --local",
"generate:client": "node ../../scripts/generate-clients/single-service --solo transcribe-streaming",
- "test:e2e": "jest --config jest.config.e2e.js"
+ "test:e2e": "vitest run -c vitest.config.e2e.ts",
+ "test:e2e:watch": "vitest watch -c vitest.config.e2e.ts"
},
"main": "./dist-cjs/index.js",
"types": "./dist-types/index.d.ts",
diff --git a/clients/client-transcribe-streaming/test/index.e2e.spec.ts b/clients/client-transcribe-streaming/test/index.e2e.spec.ts
index abc5a05e8147..dbcc8f3f36ab 100644
--- a/clients/client-transcribe-streaming/test/index.e2e.spec.ts
+++ b/clients/client-transcribe-streaming/test/index.e2e.spec.ts
@@ -1,3 +1,5 @@
+import { test as it, afterAll, describe, expect } from "vitest";
+
import { createReadStream } from "fs";
import { join } from "path";
@@ -11,7 +13,7 @@ describe("TranscribeStream client", () => {
});
// TODO: not working in Node.js with HTTP2 handler?
- xit("should stream the transcript", async () => {
+ it.skip("should stream the transcript", async () => {
const LanguageCode = "en-GB";
const MediaEncoding = "pcm";
const MediaSampleRateHertz = 44100;
diff --git a/clients/client-transcribe-streaming/vitest.config.e2e.ts b/clients/client-transcribe-streaming/vitest.config.e2e.ts
new file mode 100644
index 000000000000..92073c6cfcf0
--- /dev/null
+++ b/clients/client-transcribe-streaming/vitest.config.e2e.ts
@@ -0,0 +1,8 @@
+import { defineConfig } from "vitest/config";
+
+export default defineConfig({
+ test: {
+ include: ["**/*.e2e.spec.ts"],
+ environment: "node",
+ },
+});
diff --git a/codegen/smithy-aws-typescript-codegen/src/main/resources/software/amazon/smithy/aws/typescript/codegen/sts-client-defaultRoleAssumers.spec.ts b/codegen/smithy-aws-typescript-codegen/src/main/resources/software/amazon/smithy/aws/typescript/codegen/sts-client-defaultRoleAssumers.spec.ts
index 13eb424242ad..34acdcf8a35b 100644
--- a/codegen/smithy-aws-typescript-codegen/src/main/resources/software/amazon/smithy/aws/typescript/codegen/sts-client-defaultRoleAssumers.spec.ts
+++ b/codegen/smithy-aws-typescript-codegen/src/main/resources/software/amazon/smithy/aws/typescript/codegen/sts-client-defaultRoleAssumers.spec.ts
@@ -1,18 +1,19 @@
import { NodeHttp2Handler, NodeHttpHandler, streamCollector } from "@smithy/node-http-handler";
import { HttpResponse } from "@smithy/protocol-http";
import { Readable } from "stream";
+import { beforeAll, beforeEach, describe, expect, test as it, vi } from "vitest";
import type { AssumeRoleCommandInput } from "../src/commands/AssumeRoleCommand";
import { AssumeRoleWithWebIdentityCommandInput } from "../src/commands/AssumeRoleWithWebIdentityCommand";
import { getDefaultRoleAssumer, getDefaultRoleAssumerWithWebIdentity } from "../src/defaultRoleAssumers";
-const mockHandle = jest.fn().mockResolvedValue({
+const mockHandle = vi.fn().mockResolvedValue({
response: new HttpResponse({
statusCode: 200,
body: Readable.from([""]),
}),
});
-jest.mock("@smithy/node-http-handler", () => {
+vi.mock("@smithy/node-http-handler", () => {
class MockNodeHttpHandler {
static create(instanceOrOptions?: any) {
if (typeof instanceOrOptions?.handle === "function") {
@@ -23,20 +24,42 @@ jest.mock("@smithy/node-http-handler", () => {
destroy() {}
handle = mockHandle;
}
+ class MockNodeHttp2Handler {
+ public metadata = {
+ handlerProtocol: "h2",
+ };
+ static create(instanceOrOptions?: any) {
+ if (typeof instanceOrOptions?.handle === "function") {
+ return instanceOrOptions;
+ }
+ return new MockNodeHttp2Handler();
+ }
+ destroy() {}
+ handle = mockHandle;
+ }
return {
NodeHttpHandler: MockNodeHttpHandler,
- streamCollector: jest.fn(),
+ NodeHttp2Handler: MockNodeHttp2Handler,
+ streamCollector: vi.fn(),
};
});
-const mockConstructorInput = jest.fn();
-jest.mock("../src/STSClient", () => ({
- STSClient: function (params: any) {
- mockConstructorInput(params);
- //@ts-ignore
- return new (jest.requireActual("../src/STSClient").STSClient)(params);
- },
-}));
+const STSCtor = vi.fn();
+
+vi.mock("../src/STSClient", async () => {
+ const actual: any = await vi.importActual("../src/STSClient");
+
+ const pkg = {
+ ...actual,
+ STSClient: class STSClient extends actual.STSClient {
+ constructor(...args: any[]) {
+ super(...args);
+ STSCtor(...args);
+ }
+ },
+ };
+ return pkg;
+});
describe("getDefaultRoleAssumer", () => {
const assumeRoleResponse = `
@@ -58,11 +81,11 @@ describe("getDefaultRoleAssumer", () => {
`;
beforeAll(() => {
- (streamCollector as jest.Mock).mockImplementation(async () => Buffer.from(assumeRoleResponse));
+ vi.mocked(streamCollector).mockImplementation(async () => Buffer.from(assumeRoleResponse));
});
beforeEach(() => {
- jest.clearAllMocks();
+ vi.clearAllMocks();
});
it("should use supplied source credentials", async () => {
@@ -118,8 +141,8 @@ describe("getDefaultRoleAssumer", () => {
};
const sourceCred = { accessKeyId: "key", secretAccessKey: "secret" };
await roleAssumer(sourceCred, params);
- expect(mockConstructorInput).toHaveBeenCalledTimes(1);
- expect(mockConstructorInput.mock.calls[0][0]).toMatchObject({
+ expect(vi.mocked(STSCtor)).toHaveBeenCalledTimes(1);
+ expect(vi.mocked(STSCtor).mock.calls[0][0]).toMatchObject({
logger,
requestHandler: handler,
region,
@@ -143,8 +166,8 @@ describe("getDefaultRoleAssumer", () => {
};
const sourceCred = { accessKeyId: "key", secretAccessKey: "secret" };
await roleAssumer(sourceCred, params);
- expect(mockConstructorInput).toHaveBeenCalledTimes(1);
- expect(mockConstructorInput.mock.calls[0][0]).toMatchObject({
+ expect(vi.mocked(STSCtor)).toHaveBeenCalledTimes(1);
+ expect(vi.mocked(STSCtor).mock.calls[0][0]).toMatchObject({
logger,
requestHandler: handler,
region,
@@ -168,8 +191,8 @@ describe("getDefaultRoleAssumer", () => {
};
const sourceCred = { accessKeyId: "key", secretAccessKey: "secret" };
await roleAssumer(sourceCred, params);
- expect(mockConstructorInput).toHaveBeenCalledTimes(1);
- expect(mockConstructorInput.mock.calls[0][0]).toMatchObject({
+ expect(vi.mocked(STSCtor)).toHaveBeenCalledTimes(1);
+ expect(vi.mocked(STSCtor).mock.calls[0][0]).toMatchObject({
logger,
requestHandler: undefined,
region,
@@ -177,7 +200,7 @@ describe("getDefaultRoleAssumer", () => {
});
it("should use the STS client middleware", async () => {
- const customMiddlewareFunction = jest.fn();
+ const customMiddlewareFunction = vi.fn();
const roleAssumer = getDefaultRoleAssumer({}, [
{
applyToStack: (stack) => {
@@ -217,11 +240,11 @@ describe("getDefaultRoleAssumerWithWebIdentity", () => {
`;
beforeAll(() => {
- (streamCollector as jest.Mock).mockImplementation(async () => Buffer.from(assumeRoleResponse));
+ vi.mocked(streamCollector).mockImplementation(async () => Buffer.from(assumeRoleResponse));
});
beforeEach(() => {
- jest.clearAllMocks();
+ vi.clearAllMocks();
});
it("should use the STS client config", async () => {
@@ -239,8 +262,8 @@ describe("getDefaultRoleAssumerWithWebIdentity", () => {
WebIdentityToken: "token",
};
await roleAssumerWithWebIdentity(params);
- expect(mockConstructorInput).toHaveBeenCalledTimes(1);
- expect(mockConstructorInput.mock.calls[0][0]).toMatchObject({
+ expect(vi.mocked(STSCtor)).toHaveBeenCalledTimes(1);
+ expect(vi.mocked(STSCtor).mock.calls[0][0]).toMatchObject({
logger,
requestHandler: handler,
region,
@@ -259,7 +282,7 @@ describe("getDefaultRoleAssumerWithWebIdentity", () => {
});
it("should use the STS client middleware", async () => {
- const customMiddlewareFunction = jest.fn();
+ const customMiddlewareFunction = vi.fn();
const roleAssumerWithWebIdentity = getDefaultRoleAssumerWithWebIdentity({}, [
{
applyToStack: (stack) => {
diff --git a/lib/lib-dynamodb/vitest.config.e2e.ts b/lib/lib-dynamodb/vitest.config.e2e.ts
index 8e3e8ccc5726..92073c6cfcf0 100644
--- a/lib/lib-dynamodb/vitest.config.e2e.ts
+++ b/lib/lib-dynamodb/vitest.config.e2e.ts
@@ -2,7 +2,7 @@ import { defineConfig } from "vitest/config";
export default defineConfig({
test: {
- include: ["**/*.e2e.spec.{ts,js}"],
+ include: ["**/*.e2e.spec.ts"],
environment: "node",
},
});
diff --git a/lib/lib-dynamodb/vitest.config.ts b/lib/lib-dynamodb/vitest.config.ts
index f360902f18aa..4e46707824a5 100644
--- a/lib/lib-dynamodb/vitest.config.ts
+++ b/lib/lib-dynamodb/vitest.config.ts
@@ -2,8 +2,8 @@ import { defineConfig } from "vitest/config";
export default defineConfig({
test: {
- exclude: ["**/*.{integ,e2e,browser}.spec.{ts,js}"],
- include: ["**/*.spec.{ts,js}"],
+ exclude: ["**/*.{integ,e2e,browser}.spec.ts"],
+ include: ["**/*.spec.ts"],
environment: "node",
},
});
diff --git a/lib/lib-storage/vitest.config.e2e.ts b/lib/lib-storage/vitest.config.e2e.ts
index 8e3e8ccc5726..92073c6cfcf0 100644
--- a/lib/lib-storage/vitest.config.e2e.ts
+++ b/lib/lib-storage/vitest.config.e2e.ts
@@ -2,7 +2,7 @@ import { defineConfig } from "vitest/config";
export default defineConfig({
test: {
- include: ["**/*.e2e.spec.{ts,js}"],
+ include: ["**/*.e2e.spec.ts"],
environment: "node",
},
});
diff --git a/lib/lib-storage/vitest.config.ts b/lib/lib-storage/vitest.config.ts
index f360902f18aa..4e46707824a5 100644
--- a/lib/lib-storage/vitest.config.ts
+++ b/lib/lib-storage/vitest.config.ts
@@ -2,8 +2,8 @@ import { defineConfig } from "vitest/config";
export default defineConfig({
test: {
- exclude: ["**/*.{integ,e2e,browser}.spec.{ts,js}"],
- include: ["**/*.spec.{ts,js}"],
+ exclude: ["**/*.{integ,e2e,browser}.spec.ts"],
+ include: ["**/*.spec.ts"],
environment: "node",
},
});
diff --git a/package.json b/package.json
index 1261ba08c124..e44073302bbb 100644
--- a/package.json
+++ b/package.json
@@ -34,11 +34,11 @@
"local-publish": "node ./scripts/verdaccio-publish/index.js",
"test:all": "yarn build:all && jest --coverage --passWithNoTests && lerna run test --scope '@aws-sdk/{fetch-http-handler,hash-blob-browser}' && yarn test:versions && yarn test:integration",
"test:ci": "lerna run test --since origin/main",
- "test:e2e": "node ./tests/e2e/index.js && node ./tests/canary/canary",
+ "test:e2e": "node ./scripts/turbo test:e2e && node ./tests/canary/canary",
"test:e2e:legacy": "cucumber-js --fail-fast",
"test:e2e:legacy:preview": "./tests/e2e-legacy/preview.mjs",
"test:e2e:legacy:since:release": "./tests/e2e-legacy/since-release.mjs",
- "test:functional": "jest --passWithNoTests --config tests/functional/jest.config.js && lerna run test:unit --scope \"@aws-sdk/client-*\"",
+ "test:functional": "jest --passWithNoTests --config tests/functional/jest.config.js && lerna run test --scope \"@aws-sdk/client-*\"",
"test:integration": "node ./scripts/turbo test:integration",
"test:integration:legacy": "yarn test:e2e:legacy",
"test:integration:legacy:since:release": "yarn test:e2e:legacy:since:release",
diff --git a/packages/body-checksum-browser/vitest.config.ts b/packages/body-checksum-browser/vitest.config.ts
index 93500dad24d6..44808064872c 100644
--- a/packages/body-checksum-browser/vitest.config.ts
+++ b/packages/body-checksum-browser/vitest.config.ts
@@ -2,8 +2,8 @@ import { defineConfig } from "vitest/config";
export default defineConfig({
test: {
- exclude: ["**/*.{integ,e2e}.spec.{ts,js}"],
- include: ["**/*.spec.{ts,js}"],
+ exclude: ["**/*.{integ,e2e}.spec.ts"],
+ include: ["**/*.spec.ts"],
environment: "happy-dom",
},
});
diff --git a/packages/body-checksum-node/vitest.config.ts b/packages/body-checksum-node/vitest.config.ts
index f360902f18aa..4e46707824a5 100644
--- a/packages/body-checksum-node/vitest.config.ts
+++ b/packages/body-checksum-node/vitest.config.ts
@@ -2,8 +2,8 @@ import { defineConfig } from "vitest/config";
export default defineConfig({
test: {
- exclude: ["**/*.{integ,e2e,browser}.spec.{ts,js}"],
- include: ["**/*.spec.{ts,js}"],
+ exclude: ["**/*.{integ,e2e,browser}.spec.ts"],
+ include: ["**/*.spec.ts"],
environment: "node",
},
});
diff --git a/packages/chunked-stream-reader-node/vitest.config.ts b/packages/chunked-stream-reader-node/vitest.config.ts
index f360902f18aa..4e46707824a5 100644
--- a/packages/chunked-stream-reader-node/vitest.config.ts
+++ b/packages/chunked-stream-reader-node/vitest.config.ts
@@ -2,8 +2,8 @@ import { defineConfig } from "vitest/config";
export default defineConfig({
test: {
- exclude: ["**/*.{integ,e2e,browser}.spec.{ts,js}"],
- include: ["**/*.spec.{ts,js}"],
+ exclude: ["**/*.{integ,e2e,browser}.spec.ts"],
+ include: ["**/*.spec.ts"],
environment: "node",
},
});
diff --git a/packages/cloudfront-signer/vitest.config.ts b/packages/cloudfront-signer/vitest.config.ts
index f360902f18aa..4e46707824a5 100644
--- a/packages/cloudfront-signer/vitest.config.ts
+++ b/packages/cloudfront-signer/vitest.config.ts
@@ -2,8 +2,8 @@ import { defineConfig } from "vitest/config";
export default defineConfig({
test: {
- exclude: ["**/*.{integ,e2e,browser}.spec.{ts,js}"],
- include: ["**/*.spec.{ts,js}"],
+ exclude: ["**/*.{integ,e2e,browser}.spec.ts"],
+ include: ["**/*.spec.ts"],
environment: "node",
},
});
diff --git a/packages/core/vitest.config.integ.ts b/packages/core/vitest.config.integ.ts
index 35e2b17c4f3d..5802db1ac64a 100644
--- a/packages/core/vitest.config.integ.ts
+++ b/packages/core/vitest.config.integ.ts
@@ -2,7 +2,7 @@ import { defineConfig } from "vitest/config";
export default defineConfig({
test: {
- include: ["**/*.integ.spec.{ts,js}"],
+ include: ["**/*.integ.spec.ts"],
environment: "node",
},
});
diff --git a/packages/core/vitest.config.ts b/packages/core/vitest.config.ts
index f360902f18aa..4e46707824a5 100644
--- a/packages/core/vitest.config.ts
+++ b/packages/core/vitest.config.ts
@@ -2,8 +2,8 @@ import { defineConfig } from "vitest/config";
export default defineConfig({
test: {
- exclude: ["**/*.{integ,e2e,browser}.spec.{ts,js}"],
- include: ["**/*.spec.{ts,js}"],
+ exclude: ["**/*.{integ,e2e,browser}.spec.ts"],
+ include: ["**/*.spec.ts"],
environment: "node",
},
});
diff --git a/packages/credential-provider-cognito-identity/vitest.config.ts b/packages/credential-provider-cognito-identity/vitest.config.ts
index f360902f18aa..4e46707824a5 100644
--- a/packages/credential-provider-cognito-identity/vitest.config.ts
+++ b/packages/credential-provider-cognito-identity/vitest.config.ts
@@ -2,8 +2,8 @@ import { defineConfig } from "vitest/config";
export default defineConfig({
test: {
- exclude: ["**/*.{integ,e2e,browser}.spec.{ts,js}"],
- include: ["**/*.spec.{ts,js}"],
+ exclude: ["**/*.{integ,e2e,browser}.spec.ts"],
+ include: ["**/*.spec.ts"],
environment: "node",
},
});
diff --git a/packages/credential-provider-env/vitest.config.ts b/packages/credential-provider-env/vitest.config.ts
index f360902f18aa..4e46707824a5 100644
--- a/packages/credential-provider-env/vitest.config.ts
+++ b/packages/credential-provider-env/vitest.config.ts
@@ -2,8 +2,8 @@ import { defineConfig } from "vitest/config";
export default defineConfig({
test: {
- exclude: ["**/*.{integ,e2e,browser}.spec.{ts,js}"],
- include: ["**/*.spec.{ts,js}"],
+ exclude: ["**/*.{integ,e2e,browser}.spec.ts"],
+ include: ["**/*.spec.ts"],
environment: "node",
},
});
diff --git a/packages/credential-provider-http/vitest.config.ts b/packages/credential-provider-http/vitest.config.ts
index f360902f18aa..4e46707824a5 100644
--- a/packages/credential-provider-http/vitest.config.ts
+++ b/packages/credential-provider-http/vitest.config.ts
@@ -2,8 +2,8 @@ import { defineConfig } from "vitest/config";
export default defineConfig({
test: {
- exclude: ["**/*.{integ,e2e,browser}.spec.{ts,js}"],
- include: ["**/*.spec.{ts,js}"],
+ exclude: ["**/*.{integ,e2e,browser}.spec.ts"],
+ include: ["**/*.spec.ts"],
environment: "node",
},
});
diff --git a/packages/credential-provider-ini/vitest.config.ts b/packages/credential-provider-ini/vitest.config.ts
index f360902f18aa..4e46707824a5 100644
--- a/packages/credential-provider-ini/vitest.config.ts
+++ b/packages/credential-provider-ini/vitest.config.ts
@@ -2,8 +2,8 @@ import { defineConfig } from "vitest/config";
export default defineConfig({
test: {
- exclude: ["**/*.{integ,e2e,browser}.spec.{ts,js}"],
- include: ["**/*.spec.{ts,js}"],
+ exclude: ["**/*.{integ,e2e,browser}.spec.ts"],
+ include: ["**/*.spec.ts"],
environment: "node",
},
});
diff --git a/packages/credential-provider-node/vitest.config.integ.ts b/packages/credential-provider-node/vitest.config.integ.ts
index 35e2b17c4f3d..5802db1ac64a 100644
--- a/packages/credential-provider-node/vitest.config.integ.ts
+++ b/packages/credential-provider-node/vitest.config.integ.ts
@@ -2,7 +2,7 @@ import { defineConfig } from "vitest/config";
export default defineConfig({
test: {
- include: ["**/*.integ.spec.{ts,js}"],
+ include: ["**/*.integ.spec.ts"],
environment: "node",
},
});
diff --git a/packages/credential-provider-node/vitest.config.ts b/packages/credential-provider-node/vitest.config.ts
index f360902f18aa..4e46707824a5 100644
--- a/packages/credential-provider-node/vitest.config.ts
+++ b/packages/credential-provider-node/vitest.config.ts
@@ -2,8 +2,8 @@ import { defineConfig } from "vitest/config";
export default defineConfig({
test: {
- exclude: ["**/*.{integ,e2e,browser}.spec.{ts,js}"],
- include: ["**/*.spec.{ts,js}"],
+ exclude: ["**/*.{integ,e2e,browser}.spec.ts"],
+ include: ["**/*.spec.ts"],
environment: "node",
},
});
diff --git a/packages/credential-provider-process/vitest.config.ts b/packages/credential-provider-process/vitest.config.ts
index f360902f18aa..4e46707824a5 100644
--- a/packages/credential-provider-process/vitest.config.ts
+++ b/packages/credential-provider-process/vitest.config.ts
@@ -2,8 +2,8 @@ import { defineConfig } from "vitest/config";
export default defineConfig({
test: {
- exclude: ["**/*.{integ,e2e,browser}.spec.{ts,js}"],
- include: ["**/*.spec.{ts,js}"],
+ exclude: ["**/*.{integ,e2e,browser}.spec.ts"],
+ include: ["**/*.spec.ts"],
environment: "node",
},
});
diff --git a/packages/credential-provider-sso/vitest.config.ts b/packages/credential-provider-sso/vitest.config.ts
index f360902f18aa..4e46707824a5 100644
--- a/packages/credential-provider-sso/vitest.config.ts
+++ b/packages/credential-provider-sso/vitest.config.ts
@@ -2,8 +2,8 @@ import { defineConfig } from "vitest/config";
export default defineConfig({
test: {
- exclude: ["**/*.{integ,e2e,browser}.spec.{ts,js}"],
- include: ["**/*.spec.{ts,js}"],
+ exclude: ["**/*.{integ,e2e,browser}.spec.ts"],
+ include: ["**/*.spec.ts"],
environment: "node",
},
});
diff --git a/packages/credential-provider-web-identity/vitest.config.ts b/packages/credential-provider-web-identity/vitest.config.ts
index f360902f18aa..4e46707824a5 100644
--- a/packages/credential-provider-web-identity/vitest.config.ts
+++ b/packages/credential-provider-web-identity/vitest.config.ts
@@ -2,8 +2,8 @@ import { defineConfig } from "vitest/config";
export default defineConfig({
test: {
- exclude: ["**/*.{integ,e2e,browser}.spec.{ts,js}"],
- include: ["**/*.spec.{ts,js}"],
+ exclude: ["**/*.{integ,e2e,browser}.spec.ts"],
+ include: ["**/*.spec.ts"],
environment: "node",
},
});
diff --git a/packages/credential-providers/vitest.config.integ.ts b/packages/credential-providers/vitest.config.integ.ts
index 35e2b17c4f3d..5802db1ac64a 100644
--- a/packages/credential-providers/vitest.config.integ.ts
+++ b/packages/credential-providers/vitest.config.integ.ts
@@ -2,7 +2,7 @@ import { defineConfig } from "vitest/config";
export default defineConfig({
test: {
- include: ["**/*.integ.spec.{ts,js}"],
+ include: ["**/*.integ.spec.ts"],
environment: "node",
},
});
diff --git a/packages/credential-providers/vitest.config.ts b/packages/credential-providers/vitest.config.ts
index f360902f18aa..4e46707824a5 100644
--- a/packages/credential-providers/vitest.config.ts
+++ b/packages/credential-providers/vitest.config.ts
@@ -2,8 +2,8 @@ import { defineConfig } from "vitest/config";
export default defineConfig({
test: {
- exclude: ["**/*.{integ,e2e,browser}.spec.{ts,js}"],
- include: ["**/*.spec.{ts,js}"],
+ exclude: ["**/*.{integ,e2e,browser}.spec.ts"],
+ include: ["**/*.spec.ts"],
environment: "node",
},
});
diff --git a/packages/ec2-metadata-service/vitest.config.e2e.ts b/packages/ec2-metadata-service/vitest.config.e2e.ts
index 8e3e8ccc5726..92073c6cfcf0 100644
--- a/packages/ec2-metadata-service/vitest.config.e2e.ts
+++ b/packages/ec2-metadata-service/vitest.config.e2e.ts
@@ -2,7 +2,7 @@ import { defineConfig } from "vitest/config";
export default defineConfig({
test: {
- include: ["**/*.e2e.spec.{ts,js}"],
+ include: ["**/*.e2e.spec.ts"],
environment: "node",
},
});
diff --git a/packages/ec2-metadata-service/vitest.config.ts b/packages/ec2-metadata-service/vitest.config.ts
index f360902f18aa..4e46707824a5 100644
--- a/packages/ec2-metadata-service/vitest.config.ts
+++ b/packages/ec2-metadata-service/vitest.config.ts
@@ -2,8 +2,8 @@ import { defineConfig } from "vitest/config";
export default defineConfig({
test: {
- exclude: ["**/*.{integ,e2e,browser}.spec.{ts,js}"],
- include: ["**/*.spec.{ts,js}"],
+ exclude: ["**/*.{integ,e2e,browser}.spec.ts"],
+ include: ["**/*.spec.ts"],
environment: "node",
},
});
diff --git a/packages/endpoint-cache/vitest.config.ts b/packages/endpoint-cache/vitest.config.ts
index f360902f18aa..4e46707824a5 100644
--- a/packages/endpoint-cache/vitest.config.ts
+++ b/packages/endpoint-cache/vitest.config.ts
@@ -2,8 +2,8 @@ import { defineConfig } from "vitest/config";
export default defineConfig({
test: {
- exclude: ["**/*.{integ,e2e,browser}.spec.{ts,js}"],
- include: ["**/*.spec.{ts,js}"],
+ exclude: ["**/*.{integ,e2e,browser}.spec.ts"],
+ include: ["**/*.spec.ts"],
environment: "node",
},
});
diff --git a/packages/eventstream-handler-node/vitest.config.ts b/packages/eventstream-handler-node/vitest.config.ts
index f360902f18aa..4e46707824a5 100644
--- a/packages/eventstream-handler-node/vitest.config.ts
+++ b/packages/eventstream-handler-node/vitest.config.ts
@@ -2,8 +2,8 @@ import { defineConfig } from "vitest/config";
export default defineConfig({
test: {
- exclude: ["**/*.{integ,e2e,browser}.spec.{ts,js}"],
- include: ["**/*.spec.{ts,js}"],
+ exclude: ["**/*.{integ,e2e,browser}.spec.ts"],
+ include: ["**/*.spec.ts"],
environment: "node",
},
});
diff --git a/packages/karma-credential-loader/jest.config.js b/packages/karma-credential-loader/jest.config.js
deleted file mode 100644
index a8d1c2e49912..000000000000
--- a/packages/karma-credential-loader/jest.config.js
+++ /dev/null
@@ -1,5 +0,0 @@
-const base = require("../../jest.config.base.js");
-
-module.exports = {
- ...base,
-};
diff --git a/packages/karma-credential-loader/package.json b/packages/karma-credential-loader/package.json
index 4af49ec3a2dd..7f63b6aa914a 100644
--- a/packages/karma-credential-loader/package.json
+++ b/packages/karma-credential-loader/package.json
@@ -10,7 +10,7 @@
"build:types": "tsc -p tsconfig.types.json",
"build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4",
"clean": "rimraf ./dist-* && rimraf *.tsbuildinfo",
- "test": "jest --passWithNoTests"
+ "test": "(exit 0)"
},
"main": "./dist-cjs/index.js",
"module": "./dist-es/index.js",
diff --git a/packages/middleware-api-key/jest.config.js b/packages/middleware-api-key/jest.config.js
deleted file mode 100644
index a8d1c2e49912..000000000000
--- a/packages/middleware-api-key/jest.config.js
+++ /dev/null
@@ -1,5 +0,0 @@
-const base = require("../../jest.config.base.js");
-
-module.exports = {
- ...base,
-};
diff --git a/packages/middleware-api-key/package.json b/packages/middleware-api-key/package.json
index 96a3c519339b..c22e695665f6 100644
--- a/packages/middleware-api-key/package.json
+++ b/packages/middleware-api-key/package.json
@@ -9,7 +9,8 @@
"build:types": "tsc -p tsconfig.types.json",
"build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4",
"clean": "rimraf ./dist-* && rimraf *.tsbuildinfo",
- "test": "jest --passWithNoTests"
+ "test": "vitest run",
+ "test:watch": "vitest watch"
},
"main": "./dist-cjs/index.js",
"module": "./dist-es/index.js",
diff --git a/packages/middleware-api-key/src/apiKeyConfiguration.spec.ts b/packages/middleware-api-key/src/apiKeyConfiguration.spec.ts
index 8744be19c842..d67bae14a948 100644
--- a/packages/middleware-api-key/src/apiKeyConfiguration.spec.ts
+++ b/packages/middleware-api-key/src/apiKeyConfiguration.spec.ts
@@ -1,3 +1,5 @@
+import { describe, expect, test as it } from "vitest";
+
import { resolveApiKeyConfig } from "./index";
describe("ApiKeyConfig", () => {
diff --git a/packages/middleware-api-key/src/apiKeyMiddleware.spec.ts b/packages/middleware-api-key/src/apiKeyMiddleware.spec.ts
index 5bc8b5319c20..4273057e93f6 100644
--- a/packages/middleware-api-key/src/apiKeyMiddleware.spec.ts
+++ b/packages/middleware-api-key/src/apiKeyMiddleware.spec.ts
@@ -1,5 +1,6 @@
import { HttpRequest } from "@smithy/protocol-http";
import { HttpAuthLocation, MiddlewareStack } from "@smithy/types";
+import { beforeEach, describe, expect, test as it, vi } from "vitest";
import { apiKeyMiddleware, getApiKeyPlugin } from "./index";
@@ -14,8 +15,8 @@ describe("getApiKeyPlugin", () => {
name: "key",
}
);
- const mockApplied = jest.fn();
- const mockOther = jest.fn();
+ const mockApplied = vi.fn();
+ const mockOther = vi.fn();
// TODO there's got to be a better way to do this mocking
plugin.applyToStack({
@@ -39,10 +40,10 @@ describe("getApiKeyPlugin", () => {
describe(apiKeyMiddleware.name, () => {
describe("returned middleware function", () => {
- const mockNextHandler = jest.fn();
+ const mockNextHandler = vi.fn();
beforeEach(() => {
- jest.clearAllMocks();
+ vi.clearAllMocks();
});
it("should set the query parameter if the location is `query`", async () => {
diff --git a/packages/middleware-api-key/vitest.config.ts b/packages/middleware-api-key/vitest.config.ts
new file mode 100644
index 000000000000..4e46707824a5
--- /dev/null
+++ b/packages/middleware-api-key/vitest.config.ts
@@ -0,0 +1,9 @@
+import { defineConfig } from "vitest/config";
+
+export default defineConfig({
+ test: {
+ exclude: ["**/*.{integ,e2e,browser}.spec.ts"],
+ include: ["**/*.spec.ts"],
+ environment: "node",
+ },
+});
diff --git a/packages/middleware-bucket-endpoint/jest.config.js b/packages/middleware-bucket-endpoint/jest.config.js
deleted file mode 100644
index a8d1c2e49912..000000000000
--- a/packages/middleware-bucket-endpoint/jest.config.js
+++ /dev/null
@@ -1,5 +0,0 @@
-const base = require("../../jest.config.base.js");
-
-module.exports = {
- ...base,
-};
diff --git a/packages/middleware-bucket-endpoint/package.json b/packages/middleware-bucket-endpoint/package.json
index f7698f16f83f..ad2d9c6f22f0 100644
--- a/packages/middleware-bucket-endpoint/package.json
+++ b/packages/middleware-bucket-endpoint/package.json
@@ -10,7 +10,8 @@
"build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4",
"clean": "rimraf ./dist-* && rimraf *.tsbuildinfo",
"extract:docs": "api-extractor run --local",
- "test": "jest"
+ "test": "vitest run",
+ "test:watch": "vitest watch"
},
"main": "./dist-cjs/index.js",
"module": "./dist-es/index.js",
diff --git a/packages/middleware-bucket-endpoint/src/NodeDisableMultiregionAccessPointConfigOptions.spec.ts b/packages/middleware-bucket-endpoint/src/NodeDisableMultiregionAccessPointConfigOptions.spec.ts
index 4115b970128f..53925437b6e2 100644
--- a/packages/middleware-bucket-endpoint/src/NodeDisableMultiregionAccessPointConfigOptions.spec.ts
+++ b/packages/middleware-bucket-endpoint/src/NodeDisableMultiregionAccessPointConfigOptions.spec.ts
@@ -1,4 +1,5 @@
import { booleanSelector, SelectorType } from "@smithy/util-config-provider";
+import { afterEach, describe, expect, test as it, vi } from "vitest";
import {
NODE_DISABLE_MULTIREGION_ACCESS_POINT_CONFIG_OPTIONS,
@@ -6,23 +7,23 @@ import {
NODE_DISABLE_MULTIREGION_ACCESS_POINT_INI_NAME,
} from "./NodeDisableMultiregionAccessPointConfigOptions";
-jest.mock("@smithy/util-config-provider");
+vi.mock("@smithy/util-config-provider");
describe("NODE_USE_ARN_REGION_CONFIG_OPTIONS", () => {
afterEach(() => {
- jest.clearAllMocks();
+ vi.clearAllMocks();
});
const test = (func: Function, obj: Record, key: string, type: SelectorType) => {
it.each([true, false, undefined])("returns %s", (output) => {
- (booleanSelector as jest.Mock).mockReturnValueOnce(output);
+ vi.mocked(booleanSelector).mockReturnValueOnce(output);
expect(func(obj)).toEqual(output);
expect(booleanSelector).toBeCalledWith(obj, key, type);
});
it("throws error", () => {
const mockError = new Error("error");
- (booleanSelector as jest.Mock).mockImplementationOnce(() => {
+ vi.mocked(booleanSelector).mockImplementationOnce(() => {
throw mockError;
});
expect(() => {
diff --git a/packages/middleware-bucket-endpoint/src/NodeUseArnRegionConfigOptions.spec.ts b/packages/middleware-bucket-endpoint/src/NodeUseArnRegionConfigOptions.spec.ts
index 927bf6999923..08116c56647e 100644
--- a/packages/middleware-bucket-endpoint/src/NodeUseArnRegionConfigOptions.spec.ts
+++ b/packages/middleware-bucket-endpoint/src/NodeUseArnRegionConfigOptions.spec.ts
@@ -1,4 +1,5 @@
import { booleanSelector, SelectorType } from "@smithy/util-config-provider";
+import { afterEach, describe, expect, test as it, vi } from "vitest";
import {
NODE_USE_ARN_REGION_CONFIG_OPTIONS,
@@ -6,23 +7,23 @@ import {
NODE_USE_ARN_REGION_INI_NAME,
} from "./NodeUseArnRegionConfigOptions";
-jest.mock("@smithy/util-config-provider");
+vi.mock("@smithy/util-config-provider");
describe("NODE_USE_ARN_REGION_CONFIG_OPTIONS", () => {
afterEach(() => {
- jest.clearAllMocks();
+ vi.clearAllMocks();
});
const test = (func: Function, obj: Record, key: string, type: SelectorType) => {
it.each([true, false, undefined])("returns %s", (output) => {
- (booleanSelector as jest.Mock).mockReturnValueOnce(output);
+ vi.mocked(booleanSelector).mockReturnValueOnce(output);
expect(func(obj)).toEqual(output);
expect(booleanSelector).toBeCalledWith(obj, key, type);
});
it("throws error", () => {
const mockError = new Error("error");
- (booleanSelector as jest.Mock).mockImplementationOnce(() => {
+ vi.mocked(booleanSelector).mockImplementationOnce(() => {
throw mockError;
});
expect(() => {
diff --git a/packages/middleware-bucket-endpoint/src/bucketEndpointMiddleware.spec.ts b/packages/middleware-bucket-endpoint/src/bucketEndpointMiddleware.spec.ts
index 5b96767bc852..fcb52d46a609 100644
--- a/packages/middleware-bucket-endpoint/src/bucketEndpointMiddleware.spec.ts
+++ b/packages/middleware-bucket-endpoint/src/bucketEndpointMiddleware.spec.ts
@@ -1,20 +1,23 @@
import { HttpRequest } from "@smithy/protocol-http";
+import { afterEach, beforeEach, describe, expect, test as it, vi } from "vitest";
import { resolveBucketEndpointConfig } from "./configurations";
-const mockBucketHostname = jest.fn();
-jest.mock("./bucketHostname", () => ({
- bucketHostname: mockBucketHostname,
-}));
const mockBucketArn = "an ARN structure";
-const mockArnParse = jest.fn().mockReturnValue(mockBucketArn);
-const mockArnValidation = jest.fn();
-jest.mock("@aws-sdk/util-arn-parser", () => ({
- parse: mockArnParse,
- validate: mockArnValidation,
+
+vi.mock("./bucketHostname", () => ({
+ bucketHostname: vi.fn(),
}));
+vi.mock("@aws-sdk/util-arn-parser", () => ({
+ parse: vi.fn().mockReturnValue("an ARN structure"),
+ validate: vi.fn(),
+}));
+
+import { parse, validate } from "@aws-sdk/util-arn-parser";
+
import { bucketEndpointMiddleware } from "./bucketEndpointMiddleware";
+import { bucketHostname } from "./bucketHostname";
describe("bucketEndpointMiddleware", () => {
const input = { Bucket: "bucket" };
@@ -26,26 +29,26 @@ describe("bucketEndpointMiddleware", () => {
hostname: "s3.us-west-2.amazonaws.com",
path: "/bucket",
};
- const next = jest.fn();
+ const next = vi.fn();
const previouslyResolvedConfig = {
isCustomEndpoint: false,
- region: jest.fn().mockResolvedValue(mockRegion),
- regionInfoProvider: jest
+ region: vi.fn().mockResolvedValue(mockRegion),
+ regionInfoProvider: vi
.fn()
.mockResolvedValue({ hostname: "foo.us-foo-2.amazonaws.com", partition: "aws-foo", signingRegion: mockRegion }),
- useArnRegion: jest.fn().mockResolvedValue(false),
+ useArnRegion: vi.fn().mockResolvedValue(false),
useFipsEndpoint: () => Promise.resolve(false),
useDualstackEndpoint: () => Promise.resolve(false),
};
afterEach(() => {
- mockArnValidation.mockClear();
- mockBucketHostname.mockClear();
+ vi.mocked(validate).mockClear();
+ vi.mocked(bucketHostname).mockClear();
});
describe("with regular bucket name", () => {
beforeEach(() => {
- mockBucketHostname.mockReturnValue({
+ vi.mocked(bucketHostname).mockReturnValue({
bucketEndpoint: true,
hostname: "bucket.s3.us-west-2.amazonaws.com",
});
@@ -53,15 +56,15 @@ describe("bucketEndpointMiddleware", () => {
it("should supply default parameters to bucket hostname constructor", async () => {
const request = new HttpRequest(requestInput);
- mockArnValidation.mockReturnValue(false);
+ vi.mocked(validate).mockReturnValue(false);
const handler = bucketEndpointMiddleware(
resolveBucketEndpointConfig({
...previouslyResolvedConfig,
})
)(next, {} as any);
await handler({ input, request });
- expect(mockBucketHostname).toBeCalled();
- const param = mockBucketHostname.mock.calls[0][0];
+ expect(vi.mocked(bucketHostname)).toBeCalled();
+ const param = vi.mocked(bucketHostname).mock.calls[0][0];
expect(param).toEqual({
bucketName: input.Bucket,
baseHostname: requestInput.hostname,
@@ -77,7 +80,7 @@ describe("bucketEndpointMiddleware", () => {
it("should relay parameters to bucket hostname constructor", async () => {
const request = new HttpRequest({ ...requestInput, protocol: "http:" });
- mockArnValidation.mockReturnValue(false);
+ vi.mocked(validate).mockReturnValue(false);
const handler = bucketEndpointMiddleware(
resolveBucketEndpointConfig({
...previouslyResolvedConfig,
@@ -88,8 +91,8 @@ describe("bucketEndpointMiddleware", () => {
})
)(next, {} as any);
await handler({ input, request });
- expect(mockBucketHostname).toBeCalled();
- const param = mockBucketHostname.mock.calls[0][0];
+ expect(vi.mocked(bucketHostname)).toBeCalled();
+ const param = vi.mocked(bucketHostname).mock.calls[0][0];
expect(param).toEqual({
bucketName: input.Bucket,
baseHostname: requestInput.hostname,
@@ -106,8 +109,8 @@ describe("bucketEndpointMiddleware", () => {
describe("allows bucket name to be an ARN", () => {
beforeEach(() => {
- mockArnValidation.mockReturnValue(true);
- mockBucketHostname.mockReturnValue({
+ vi.mocked(validate).mockReturnValue(true);
+ vi.mocked(bucketHostname).mockReturnValue({
bucketEndpoint: true,
hostname: "myendpoint-123456789012.s3-accesspoint.us-west-2.amazonaws.com",
});
@@ -124,8 +127,8 @@ describe("bucketEndpointMiddleware", () => {
input: { Bucket: "myendpoint-123456789012.s3-accesspoint.us-west-2.amazonaws.com" },
request,
});
- expect(mockBucketHostname).toBeCalled();
- const param = mockBucketHostname.mock.calls[0][0];
+ expect(vi.mocked(bucketHostname)).toBeCalled();
+ const param = vi.mocked(bucketHostname).mock.calls[0][0];
expect(param).toEqual({
bucketName: mockBucketArn,
baseHostname: requestInput.hostname,
@@ -173,14 +176,14 @@ describe("bucketEndpointMiddleware", () => {
input: { Bucket: "myendpoint-123456789012.s3-accesspoint.us-west-2.amazonaws.com" },
request,
});
- expect(mockBucketHostname).toBeCalled();
- expect(mockBucketHostname.mock.calls[0][0].bucketName).toBe(mockBucketArn);
- expect(mockArnParse).toBeCalled();
- expect(mockArnValidation).toBeCalled();
+ expect(vi.mocked(bucketHostname)).toBeCalled();
+ expect(vi.mocked(bucketHostname).mock.calls[0][0].bucketName).toBe(mockBucketArn);
+ expect(vi.mocked(parse)).toBeCalled();
+ expect(vi.mocked(validate)).toBeCalled();
});
it("should set signing_region to middleware context if the request will use region from ARN", async () => {
- mockBucketHostname.mockReturnValue({
+ vi.mocked(bucketHostname).mockReturnValue({
bucketEndpoint: true,
hostname: "myendpoint-123456789012.s3-accesspoint.us-west-2.amazonaws.com",
signingService: "s3-foo",
diff --git a/packages/middleware-bucket-endpoint/src/bucketHostname.spec.ts b/packages/middleware-bucket-endpoint/src/bucketHostname.spec.ts
index 9b73384978ca..1eb2f733b48b 100644
--- a/packages/middleware-bucket-endpoint/src/bucketHostname.spec.ts
+++ b/packages/middleware-bucket-endpoint/src/bucketHostname.spec.ts
@@ -1,4 +1,5 @@
import { parse as parseArn } from "@aws-sdk/util-arn-parser";
+import { describe, expect, expect, test as it } from "vitest";
import { bucketHostname } from "./bucketHostname";
diff --git a/packages/middleware-bucket-endpoint/src/index.spec.ts b/packages/middleware-bucket-endpoint/src/index.spec.ts
index a01c01ba9175..7940a4a494b2 100644
--- a/packages/middleware-bucket-endpoint/src/index.spec.ts
+++ b/packages/middleware-bucket-endpoint/src/index.spec.ts
@@ -1,3 +1,5 @@
+import { describe, expect, test as it } from "vitest";
+
import { bucketEndpointMiddleware, getBucketEndpointPlugin, resolveBucketEndpointConfig } from "./index";
describe("middleware-bucket-endpoint package exports", () => {
diff --git a/packages/middleware-bucket-endpoint/vitest.config.ts b/packages/middleware-bucket-endpoint/vitest.config.ts
new file mode 100644
index 000000000000..4e46707824a5
--- /dev/null
+++ b/packages/middleware-bucket-endpoint/vitest.config.ts
@@ -0,0 +1,9 @@
+import { defineConfig } from "vitest/config";
+
+export default defineConfig({
+ test: {
+ exclude: ["**/*.{integ,e2e,browser}.spec.ts"],
+ include: ["**/*.spec.ts"],
+ environment: "node",
+ },
+});
diff --git a/packages/middleware-endpoint-discovery/jest.config.integ.js b/packages/middleware-endpoint-discovery/jest.config.integ.js
deleted file mode 100644
index d09aba7398c7..000000000000
--- a/packages/middleware-endpoint-discovery/jest.config.integ.js
+++ /dev/null
@@ -1,4 +0,0 @@
-module.exports = {
- preset: "ts-jest",
- testMatch: ["**/*.integ.spec.ts"],
-};
diff --git a/packages/middleware-endpoint-discovery/jest.config.js b/packages/middleware-endpoint-discovery/jest.config.js
deleted file mode 100644
index a8d1c2e49912..000000000000
--- a/packages/middleware-endpoint-discovery/jest.config.js
+++ /dev/null
@@ -1,5 +0,0 @@
-const base = require("../../jest.config.base.js");
-
-module.exports = {
- ...base,
-};
diff --git a/packages/middleware-endpoint-discovery/package.json b/packages/middleware-endpoint-discovery/package.json
index c8339ebd7ef7..fca1ea530dcc 100644
--- a/packages/middleware-endpoint-discovery/package.json
+++ b/packages/middleware-endpoint-discovery/package.json
@@ -9,8 +9,10 @@
"build:types": "tsc -p tsconfig.types.json",
"build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4",
"clean": "rimraf ./dist-* && rimraf *.tsbuildinfo",
- "test": "jest",
- "test:integration": "jest -c jest.config.integ.js"
+ "test": "vitest run",
+ "test:integration": "vitest run -c vitest.config.integ.ts",
+ "test:watch": "vitest watch",
+ "test:integration:watch": "vitest watch -c vitest.config.integ.ts"
},
"main": "./dist-cjs/index.js",
"module": "./dist-es/index.js",
diff --git a/packages/middleware-endpoint-discovery/src/configurations.spec.ts b/packages/middleware-endpoint-discovery/src/configurations.spec.ts
index da8312948040..570cf10e6430 100644
--- a/packages/middleware-endpoint-discovery/src/configurations.spec.ts
+++ b/packages/middleware-endpoint-discovery/src/configurations.spec.ts
@@ -1,3 +1,5 @@
+import { afterEach, beforeEach, describe, expect, test as it } from "vitest";
+
import { NODE_ENDPOINT_DISCOVERY_CONFIG_OPTIONS } from "./configurations";
const {
diff --git a/packages/middleware-endpoint-discovery/src/endpointDiscoveryMiddleware.spec.ts b/packages/middleware-endpoint-discovery/src/endpointDiscoveryMiddleware.spec.ts
index 340450e0fe71..4e071d2d6a80 100644
--- a/packages/middleware-endpoint-discovery/src/endpointDiscoveryMiddleware.spec.ts
+++ b/packages/middleware-endpoint-discovery/src/endpointDiscoveryMiddleware.spec.ts
@@ -1,27 +1,28 @@
import { EndpointCache } from "@aws-sdk/endpoint-cache";
import { HttpRequest } from "@smithy/protocol-http";
import { BuildHandlerArguments, MiddlewareStack } from "@smithy/types";
+import { afterEach, beforeEach, describe, expect, test as it, vi } from "vitest";
import { endpointDiscoveryMiddleware } from "./endpointDiscoveryMiddleware";
import { getCacheKey } from "./getCacheKey";
import { updateDiscoveredEndpointInCache } from "./updateDiscoveredEndpointInCache";
-jest.mock("./updateDiscoveredEndpointInCache");
-jest.mock("./getCacheKey");
-jest.mock("@smithy/protocol-http");
+vi.mock("./updateDiscoveredEndpointInCache");
+vi.mock("./getCacheKey");
+vi.mock("@smithy/protocol-http");
describe(endpointDiscoveryMiddleware.name, () => {
const cacheKey = "cacheKey";
const endpoint = "endpoint";
- const getEndpoint = jest.fn().mockReturnValue(endpoint);
+ const getEndpoint = vi.fn().mockReturnValue(endpoint);
const mockConfig = {
- credentials: jest.fn(),
+ credentials: vi.fn(),
endpointCache: {
getEndpoint,
} as unknown as EndpointCache,
- endpointDiscoveryEnabled: jest.fn().mockResolvedValue(undefined),
- endpointDiscoveryEnabledProvider: jest.fn(),
- endpointDiscoveryCommandCtor: jest.fn(),
+ endpointDiscoveryEnabled: vi.fn().mockResolvedValue(undefined),
+ endpointDiscoveryEnabledProvider: vi.fn(),
+ endpointDiscoveryCommandCtor: vi.fn(),
isCustomEndpoint: false,
isClientEndpointDiscoveryEnabled: false,
};
@@ -31,7 +32,7 @@ describe(endpointDiscoveryMiddleware.name, () => {
clientStack: {} as MiddlewareStack,
};
- const mockNext = jest.fn();
+ const mockNext = vi.fn();
const mockContext = {
clientName: "ExampleClient",
commandName: "ExampleCommand",
@@ -39,14 +40,14 @@ describe(endpointDiscoveryMiddleware.name, () => {
const mockArgs = { request: {} };
beforeEach(() => {
- (getCacheKey as jest.Mock).mockResolvedValue(cacheKey);
- (updateDiscoveredEndpointInCache as jest.Mock).mockResolvedValue(undefined);
+ vi.mocked(getCacheKey).mockResolvedValue(cacheKey);
+ vi.mocked(updateDiscoveredEndpointInCache).mockResolvedValue(undefined);
const { isInstance } = HttpRequest;
- (isInstance as unknown as jest.Mock).mockReturnValue(true);
+ (isInstance as unknown as any).mockReturnValue(true);
});
afterEach(() => {
- jest.clearAllMocks();
+ vi.clearAllMocks();
});
describe(`isCustomEndpoint=true`, () => {
@@ -75,7 +76,7 @@ describe(endpointDiscoveryMiddleware.name, () => {
mockContext
)(mockArgs as BuildHandlerArguments);
expect(mockNext).toHaveBeenCalledWith(mockArgs);
- expect(updateDiscoveredEndpointInCache as jest.Mock).not.toHaveBeenCalled();
+ expect(vi.mocked(updateDiscoveredEndpointInCache)).not.toHaveBeenCalled();
});
});
diff --git a/packages/middleware-endpoint-discovery/src/getCacheKey.spec.ts b/packages/middleware-endpoint-discovery/src/getCacheKey.spec.ts
index 03d4c72811fd..b42ee40f6c93 100644
--- a/packages/middleware-endpoint-discovery/src/getCacheKey.spec.ts
+++ b/packages/middleware-endpoint-discovery/src/getCacheKey.spec.ts
@@ -1,3 +1,5 @@
+import { describe, expect, test as it } from "vitest";
+
import { getCacheKey } from "./getCacheKey";
describe(getCacheKey.name, () => {
diff --git a/packages/middleware-endpoint-discovery/src/getEndpointDiscoveryPlugin.spec.ts b/packages/middleware-endpoint-discovery/src/getEndpointDiscoveryPlugin.spec.ts
index a85937e5a77b..882c6f9391bb 100644
--- a/packages/middleware-endpoint-discovery/src/getEndpointDiscoveryPlugin.spec.ts
+++ b/packages/middleware-endpoint-discovery/src/getEndpointDiscoveryPlugin.spec.ts
@@ -1,13 +1,15 @@
+import { describe, expect, test as it, vi } from "vitest";
+
import { endpointDiscoveryMiddleware } from "./endpointDiscoveryMiddleware";
import { endpointDiscoveryMiddlewareOptions, getEndpointDiscoveryPlugin } from "./getEndpointDiscoveryPlugin";
-jest.mock("./endpointDiscoveryMiddleware");
+vi.mock("./endpointDiscoveryMiddleware");
describe(getEndpointDiscoveryPlugin.name, () => {
const pluginConfig = {
isCustomEndpoint: false,
- endpointCache: jest.fn(),
- endpointDiscoveryEnabled: jest.fn(),
+ endpointCache: vi.fn(),
+ endpointDiscoveryEnabled: vi.fn(),
isClientEndpointDiscoveryEnabled: false,
};
const middlewareConfig = {
@@ -16,11 +18,11 @@ describe(getEndpointDiscoveryPlugin.name, () => {
it(`applyToStack function adds endpoint discovery middleware`, () => {
const middlewareReturn = {};
- (endpointDiscoveryMiddleware as jest.Mock).mockReturnValueOnce(middlewareReturn);
+ vi.mocked(endpointDiscoveryMiddleware).mockReturnValueOnce(middlewareReturn);
// @ts-ignore
const plugin = getEndpointDiscoveryPlugin(pluginConfig, middlewareConfig);
- const commandStack = { add: jest.fn() };
+ const commandStack = { add: vi.fn() };
// @ts-ignore
plugin.applyToStack(commandStack);
diff --git a/packages/middleware-endpoint-discovery/src/middleware-endpoint-discovery.integ.spec.ts b/packages/middleware-endpoint-discovery/src/middleware-endpoint-discovery.integ.spec.ts
index 91c28b83d59d..362445f95962 100644
--- a/packages/middleware-endpoint-discovery/src/middleware-endpoint-discovery.integ.spec.ts
+++ b/packages/middleware-endpoint-discovery/src/middleware-endpoint-discovery.integ.spec.ts
@@ -1,6 +1,7 @@
import { TimestreamQuery } from "@aws-sdk/client-timestream-query";
import { TimestreamWrite } from "@aws-sdk/client-timestream-write";
import { EndpointCache } from "@aws-sdk/endpoint-cache";
+import { describe, expect, test as it } from "vitest";
import { requireRequestsFrom } from "../../../private/aws-util-test/src";
import { getCacheKey } from "./getCacheKey";
diff --git a/packages/middleware-endpoint-discovery/src/resolveEndpointDiscoveryConfig.spec.ts b/packages/middleware-endpoint-discovery/src/resolveEndpointDiscoveryConfig.spec.ts
index 88a5d92ee2b1..07bb2f9ce32d 100644
--- a/packages/middleware-endpoint-discovery/src/resolveEndpointDiscoveryConfig.spec.ts
+++ b/packages/middleware-endpoint-discovery/src/resolveEndpointDiscoveryConfig.spec.ts
@@ -1,19 +1,20 @@
import { EndpointCache } from "@aws-sdk/endpoint-cache";
+import { afterEach, describe, expect, test as it, vi } from "vitest";
import { resolveEndpointDiscoveryConfig } from "./resolveEndpointDiscoveryConfig";
-jest.mock("@aws-sdk/endpoint-cache");
+vi.mock("@aws-sdk/endpoint-cache");
describe(resolveEndpointDiscoveryConfig.name, () => {
- const endpointDiscoveryCommandCtor = jest.fn();
+ const endpointDiscoveryCommandCtor = vi.fn();
const mockInput = {
isCustomEndpoint: false,
- credentials: jest.fn(),
- endpointDiscoveryEnabledProvider: jest.fn(),
+ credentials: vi.fn(),
+ endpointDiscoveryEnabledProvider: vi.fn(),
};
afterEach(() => {
- jest.clearAllMocks();
+ vi.clearAllMocks();
});
it("assigns endpointDiscoveryCommandCtor in resolvedConfig", () => {
diff --git a/packages/middleware-endpoint-discovery/src/updateDiscoveredEndpointInCache.spec.ts b/packages/middleware-endpoint-discovery/src/updateDiscoveredEndpointInCache.spec.ts
index e5edc6d09802..f98fa6bfe4c3 100644
--- a/packages/middleware-endpoint-discovery/src/updateDiscoveredEndpointInCache.spec.ts
+++ b/packages/middleware-endpoint-discovery/src/updateDiscoveredEndpointInCache.spec.ts
@@ -1,13 +1,15 @@
+import { afterEach, beforeEach, describe, expect, test as it, vi } from "vitest";
+
import { updateDiscoveredEndpointInCache } from "./updateDiscoveredEndpointInCache";
describe(updateDiscoveredEndpointInCache.name, () => {
const cacheKey = "cacheKey";
- const mockGet = jest.fn();
- const mockSet = jest.fn();
- const mockDelete = jest.fn();
+ const mockGet = vi.fn();
+ const mockSet = vi.fn();
+ const mockDelete = vi.fn();
- const mockHandler = jest.fn();
- const mockResolveMiddleware = jest.fn().mockReturnValue(mockHandler);
+ const mockHandler = vi.fn();
+ const mockResolveMiddleware = vi.fn().mockReturnValue(mockHandler);
const mockEndpoints = [{ Address: "mockAddress", CachePeriodInMinutes: 2 }];
const placeholderEndpoints = [{ Address: "", CachePeriodInMinutes: 1 }];
@@ -19,7 +21,7 @@ describe(updateDiscoveredEndpointInCache.name, () => {
const options = {
cacheKey,
commandName: "ExampleCommand",
- endpointDiscoveryCommandCtor: jest.fn().mockReturnValue({ resolveMiddleware: mockResolveMiddleware }),
+ endpointDiscoveryCommandCtor: vi.fn().mockReturnValue({ resolveMiddleware: mockResolveMiddleware }),
isDiscoveredEndpointRequired: false,
identifiers: { key: "value" },
};
@@ -29,7 +31,7 @@ describe(updateDiscoveredEndpointInCache.name, () => {
});
afterEach(() => {
- jest.clearAllMocks();
+ vi.clearAllMocks();
});
it(`returns if endpoints are present in cacheKey`, async () => {
diff --git a/packages/middleware-endpoint-discovery/vitest.config.integ.ts b/packages/middleware-endpoint-discovery/vitest.config.integ.ts
new file mode 100644
index 000000000000..5802db1ac64a
--- /dev/null
+++ b/packages/middleware-endpoint-discovery/vitest.config.integ.ts
@@ -0,0 +1,8 @@
+import { defineConfig } from "vitest/config";
+
+export default defineConfig({
+ test: {
+ include: ["**/*.integ.spec.ts"],
+ environment: "node",
+ },
+});
diff --git a/packages/middleware-endpoint-discovery/vitest.config.ts b/packages/middleware-endpoint-discovery/vitest.config.ts
new file mode 100644
index 000000000000..4e46707824a5
--- /dev/null
+++ b/packages/middleware-endpoint-discovery/vitest.config.ts
@@ -0,0 +1,9 @@
+import { defineConfig } from "vitest/config";
+
+export default defineConfig({
+ test: {
+ exclude: ["**/*.{integ,e2e,browser}.spec.ts"],
+ include: ["**/*.spec.ts"],
+ environment: "node",
+ },
+});
diff --git a/packages/middleware-eventstream/jest.config.integ.js b/packages/middleware-eventstream/jest.config.integ.js
deleted file mode 100644
index d09aba7398c7..000000000000
--- a/packages/middleware-eventstream/jest.config.integ.js
+++ /dev/null
@@ -1,4 +0,0 @@
-module.exports = {
- preset: "ts-jest",
- testMatch: ["**/*.integ.spec.ts"],
-};
diff --git a/packages/middleware-eventstream/package.json b/packages/middleware-eventstream/package.json
index bf810c406372..40143869ad56 100644
--- a/packages/middleware-eventstream/package.json
+++ b/packages/middleware-eventstream/package.json
@@ -10,7 +10,8 @@
"build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4",
"clean": "rimraf ./dist-* && rimraf *.tsbuildinfo",
"test": "exit 0",
- "test:integration": "jest -c jest.config.integ.js"
+ "test:integration": "vitest run -c vitest.config.integ.ts",
+ "test:integration:watch": "vitest watch -c vitest.config.integ.ts"
},
"main": "./dist-cjs/index.js",
"module": "./dist-es/index.js",
diff --git a/packages/middleware-eventstream/src/middleware-eventstream.integ.spec.ts b/packages/middleware-eventstream/src/middleware-eventstream.integ.spec.ts
index b412e9e98c68..781f563e5300 100644
--- a/packages/middleware-eventstream/src/middleware-eventstream.integ.spec.ts
+++ b/packages/middleware-eventstream/src/middleware-eventstream.integ.spec.ts
@@ -1,6 +1,7 @@
import { LexRuntimeV2 } from "@aws-sdk/client-lex-runtime-v2";
import { RekognitionStreaming } from "@aws-sdk/client-rekognitionstreaming";
import { TranscribeStreaming } from "@aws-sdk/client-transcribe-streaming";
+import { describe, expect, test as it } from "vitest";
import { requireRequestsFrom } from "../../../private/aws-util-test/src";
@@ -14,7 +15,7 @@ describe("middleware-eventstream", () => {
};
// TODO: http2 in CI
- xdescribe(LexRuntimeV2.name, () => {
+ describe.skip(LexRuntimeV2.name, () => {
it("should set streaming headers", async () => {
const client = new LexRuntimeV2({ region: "us-west-2", logger });
@@ -61,7 +62,7 @@ describe("middleware-eventstream", () => {
});
// TODO: http2 in CI
- xdescribe(TranscribeStreaming.name, () => {
+ describe.skip(TranscribeStreaming.name, () => {
it("should set streaming headers", async () => {
const client = new TranscribeStreaming({ region: "us-west-2", logger });
diff --git a/packages/middleware-eventstream/vitest.config.integ.ts b/packages/middleware-eventstream/vitest.config.integ.ts
new file mode 100644
index 000000000000..5802db1ac64a
--- /dev/null
+++ b/packages/middleware-eventstream/vitest.config.integ.ts
@@ -0,0 +1,8 @@
+import { defineConfig } from "vitest/config";
+
+export default defineConfig({
+ test: {
+ include: ["**/*.integ.spec.ts"],
+ environment: "node",
+ },
+});
diff --git a/packages/middleware-expect-continue/jest.config.integ.js b/packages/middleware-expect-continue/jest.config.integ.js
deleted file mode 100644
index d09aba7398c7..000000000000
--- a/packages/middleware-expect-continue/jest.config.integ.js
+++ /dev/null
@@ -1,4 +0,0 @@
-module.exports = {
- preset: "ts-jest",
- testMatch: ["**/*.integ.spec.ts"],
-};
diff --git a/packages/middleware-expect-continue/jest.config.js b/packages/middleware-expect-continue/jest.config.js
deleted file mode 100644
index a8d1c2e49912..000000000000
--- a/packages/middleware-expect-continue/jest.config.js
+++ /dev/null
@@ -1,5 +0,0 @@
-const base = require("../../jest.config.base.js");
-
-module.exports = {
- ...base,
-};
diff --git a/packages/middleware-expect-continue/package.json b/packages/middleware-expect-continue/package.json
index b57b600d3456..77e3c3958c4b 100644
--- a/packages/middleware-expect-continue/package.json
+++ b/packages/middleware-expect-continue/package.json
@@ -9,8 +9,10 @@
"build:types": "tsc -p tsconfig.types.json",
"build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4",
"clean": "rimraf ./dist-* && rimraf *.tsbuildinfo",
- "test": "jest",
- "test:integration": "jest -c jest.config.integ.js"
+ "test": "vitest run",
+ "test:integration": "vitest run -c vitest.config.integ.ts",
+ "test:watch": "vitest watch",
+ "test:integration:watch": "vitest watch -c vitest.config.integ.ts"
},
"main": "./dist-cjs/index.js",
"module": "./dist-es/index.js",
diff --git a/packages/middleware-expect-continue/src/index.spec.ts b/packages/middleware-expect-continue/src/index.spec.ts
index 83f863b6ffcd..3baa0f63a62c 100644
--- a/packages/middleware-expect-continue/src/index.spec.ts
+++ b/packages/middleware-expect-continue/src/index.spec.ts
@@ -1,12 +1,13 @@
import { HttpRequest } from "@smithy/protocol-http";
+import { beforeEach, describe, expect, test as it, vi } from "vitest";
import { addExpectContinueMiddleware } from "./index";
describe("addExpectContinueMiddleware", () => {
- const mockNextHandler = jest.fn();
+ const mockNextHandler = vi.fn();
beforeEach(() => {
- jest.clearAllMocks();
+ vi.clearAllMocks();
});
it("sets the Expect header to 100-continue if there is a request body in node runtime", async () => {
diff --git a/packages/middleware-expect-continue/src/middleware-expect-continue.integ.spec.ts b/packages/middleware-expect-continue/src/middleware-expect-continue.integ.spec.ts
index 583b9abb880a..22748f844c08 100644
--- a/packages/middleware-expect-continue/src/middleware-expect-continue.integ.spec.ts
+++ b/packages/middleware-expect-continue/src/middleware-expect-continue.integ.spec.ts
@@ -1,4 +1,5 @@
import { S3 } from "@aws-sdk/client-s3";
+import { describe, expect, test as it } from "vitest";
import { requireRequestsFrom } from "../../../private/aws-util-test/src";
diff --git a/packages/middleware-expect-continue/vitest.config.integ.ts b/packages/middleware-expect-continue/vitest.config.integ.ts
new file mode 100644
index 000000000000..5802db1ac64a
--- /dev/null
+++ b/packages/middleware-expect-continue/vitest.config.integ.ts
@@ -0,0 +1,8 @@
+import { defineConfig } from "vitest/config";
+
+export default defineConfig({
+ test: {
+ include: ["**/*.integ.spec.ts"],
+ environment: "node",
+ },
+});
diff --git a/packages/middleware-expect-continue/vitest.config.ts b/packages/middleware-expect-continue/vitest.config.ts
new file mode 100644
index 000000000000..4e46707824a5
--- /dev/null
+++ b/packages/middleware-expect-continue/vitest.config.ts
@@ -0,0 +1,9 @@
+import { defineConfig } from "vitest/config";
+
+export default defineConfig({
+ test: {
+ exclude: ["**/*.{integ,e2e,browser}.spec.ts"],
+ include: ["**/*.spec.ts"],
+ environment: "node",
+ },
+});
diff --git a/packages/middleware-flexible-checksums/jest.config.integ.js b/packages/middleware-flexible-checksums/jest.config.integ.js
deleted file mode 100644
index d09aba7398c7..000000000000
--- a/packages/middleware-flexible-checksums/jest.config.integ.js
+++ /dev/null
@@ -1,4 +0,0 @@
-module.exports = {
- preset: "ts-jest",
- testMatch: ["**/*.integ.spec.ts"],
-};
diff --git a/packages/middleware-flexible-checksums/jest.config.js b/packages/middleware-flexible-checksums/jest.config.js
deleted file mode 100644
index a8d1c2e49912..000000000000
--- a/packages/middleware-flexible-checksums/jest.config.js
+++ /dev/null
@@ -1,5 +0,0 @@
-const base = require("../../jest.config.base.js");
-
-module.exports = {
- ...base,
-};
diff --git a/packages/middleware-flexible-checksums/package.json b/packages/middleware-flexible-checksums/package.json
index 48caaedec308..0c89806ee9bf 100644
--- a/packages/middleware-flexible-checksums/package.json
+++ b/packages/middleware-flexible-checksums/package.json
@@ -9,8 +9,10 @@
"build:types": "tsc -p tsconfig.types.json",
"build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4",
"clean": "rimraf ./dist-* && rimraf *.tsbuildinfo",
- "test": "jest --coverage",
- "test:integration": "jest -c jest.config.integ.js"
+ "test": "vitest run",
+ "test:integration": "vitest run -c vitest.config.integ.ts",
+ "test:watch": "vitest watch",
+ "test:integration:watch": "vitest watch -c vitest.config.integ.ts"
},
"main": "./dist-cjs/index.js",
"module": "./dist-es/index.js",
diff --git a/packages/middleware-flexible-checksums/src/flexibleChecksumsMiddleware.spec.ts b/packages/middleware-flexible-checksums/src/flexibleChecksumsMiddleware.spec.ts
index 995ae1db5480..a29583f62c35 100644
--- a/packages/middleware-flexible-checksums/src/flexibleChecksumsMiddleware.spec.ts
+++ b/packages/middleware-flexible-checksums/src/flexibleChecksumsMiddleware.spec.ts
@@ -1,5 +1,6 @@
import { HttpRequest } from "@smithy/protocol-http";
import { BuildHandlerArguments } from "@smithy/types";
+import { afterEach, beforeEach, describe, expect, test as it, vi } from "vitest";
import { PreviouslyResolved } from "./configuration";
import { ChecksumAlgorithm } from "./constants";
@@ -11,19 +12,19 @@ import { isStreaming } from "./isStreaming";
import { selectChecksumAlgorithmFunction } from "./selectChecksumAlgorithmFunction";
import { stringHasher } from "./stringHasher";
-jest.mock("@smithy/protocol-http");
-jest.mock("./getChecksumAlgorithmForRequest");
-jest.mock("./getChecksumLocationName");
-jest.mock("./hasHeader");
-jest.mock("./isStreaming");
-jest.mock("./selectChecksumAlgorithmFunction");
-jest.mock("./stringHasher");
+vi.mock("@smithy/protocol-http");
+vi.mock("./getChecksumAlgorithmForRequest");
+vi.mock("./getChecksumLocationName");
+vi.mock("./hasHeader");
+vi.mock("./isStreaming");
+vi.mock("./selectChecksumAlgorithmFunction");
+vi.mock("./stringHasher");
describe(flexibleChecksumsMiddleware.name, () => {
- const mockNext = jest.fn();
+ const mockNext = vi.fn();
const mockChecksum = "mockChecksum";
- const mockChecksumAlgorithmFunction = jest.fn();
+ const mockChecksumAlgorithmFunction = vi.fn();
const mockChecksumLocationName = "mock-checksum-location-name";
const mockInput = {};
@@ -39,23 +40,23 @@ describe(flexibleChecksumsMiddleware.name, () => {
beforeEach(() => {
mockNext.mockResolvedValueOnce(mockResult);
const { isInstance } = HttpRequest;
- (isInstance as unknown as jest.Mock).mockReturnValue(true);
- (getChecksumAlgorithmForRequest as jest.Mock).mockReturnValue(ChecksumAlgorithm.MD5);
- (getChecksumLocationName as jest.Mock).mockReturnValue(mockChecksumLocationName);
- (hasHeader as jest.Mock).mockReturnValue(true);
- (isStreaming as jest.Mock).mockReturnValue(false);
- (selectChecksumAlgorithmFunction as jest.Mock).mockReturnValue(mockChecksumAlgorithmFunction);
+ (isInstance as unknown as any).mockReturnValue(true);
+ vi.mocked(getChecksumAlgorithmForRequest).mockReturnValue(ChecksumAlgorithm.MD5);
+ vi.mocked(getChecksumLocationName).mockReturnValue(mockChecksumLocationName);
+ vi.mocked(hasHeader).mockReturnValue(true);
+ vi.mocked(isStreaming).mockReturnValue(false);
+ vi.mocked(selectChecksumAlgorithmFunction).mockReturnValue(mockChecksumAlgorithmFunction);
});
afterEach(() => {
expect(mockNext).toHaveBeenCalledTimes(1);
- jest.clearAllMocks();
+ vi.clearAllMocks();
});
describe("skips", () => {
it("if not an instance of HttpRequest", async () => {
const { isInstance } = HttpRequest;
- (isInstance as unknown as jest.Mock).mockReturnValue(false);
+ (isInstance as unknown as any).mockReturnValue(false);
const handler = flexibleChecksumsMiddleware(mockConfig, mockMiddlewareConfig)(mockNext, {});
await handler(mockArgs);
expect(getChecksumAlgorithmForRequest).not.toHaveBeenCalled();
@@ -67,7 +68,7 @@ describe(flexibleChecksumsMiddleware.name, () => {
});
it("if checksumAlgorithm is not defined", async () => {
- (getChecksumAlgorithmForRequest as jest.Mock).mockReturnValue(undefined);
+ vi.mocked(getChecksumAlgorithmForRequest).mockReturnValue(undefined);
const handler = flexibleChecksumsMiddleware(mockConfig, mockMiddlewareConfig)(mockNext, {});
await handler(mockArgs);
expect(getChecksumLocationName).not.toHaveBeenCalled();
@@ -99,13 +100,13 @@ describe(flexibleChecksumsMiddleware.name, () => {
});
it("for streaming body", async () => {
- (isStreaming as jest.Mock).mockReturnValue(true);
+ vi.mocked(isStreaming).mockReturnValue(true);
const mockUpdatedBody = { body: "mockUpdatedBody" };
- const mockBase64Encoder = jest.fn();
- const mockStreamHasher = jest.fn();
- const mockBodyLengthChecker = jest.fn();
- const mockGetAwsChunkedEncodingStream = jest.fn().mockReturnValue(mockUpdatedBody);
+ const mockBase64Encoder = vi.fn();
+ const mockStreamHasher = vi.fn();
+ const mockBodyLengthChecker = vi.fn();
+ const mockGetAwsChunkedEncodingStream = vi.fn().mockReturnValue(mockUpdatedBody);
const handler = flexibleChecksumsMiddleware(
{
@@ -146,9 +147,9 @@ describe(flexibleChecksumsMiddleware.name, () => {
it("for non-streaming body", async () => {
const mockRawChecksum = Buffer.from(mockChecksum);
- const mockBase64Encoder = jest.fn().mockReturnValue(mockChecksum);
- (stringHasher as jest.Mock).mockResolvedValue(mockRawChecksum);
- (hasHeader as jest.Mock).mockReturnValue(false);
+ const mockBase64Encoder = vi.fn().mockReturnValue(mockChecksum);
+ vi.mocked(stringHasher).mockResolvedValue(mockRawChecksum);
+ vi.mocked(hasHeader).mockReturnValue(false);
const handler = flexibleChecksumsMiddleware(
{ ...mockConfig, base64Encoder: mockBase64Encoder },
diff --git a/packages/middleware-flexible-checksums/src/flexibleChecksumsResponseMiddleware.spec.ts b/packages/middleware-flexible-checksums/src/flexibleChecksumsResponseMiddleware.spec.ts
index 5dc42ae84836..7f65d998e1fe 100644
--- a/packages/middleware-flexible-checksums/src/flexibleChecksumsResponseMiddleware.spec.ts
+++ b/packages/middleware-flexible-checksums/src/flexibleChecksumsResponseMiddleware.spec.ts
@@ -1,5 +1,6 @@
import { HttpRequest } from "@smithy/protocol-http";
import { DeserializeHandlerArguments } from "@smithy/types";
+import { afterEach, beforeEach, describe, expect, test as it, vi } from "vitest";
import { PreviouslyResolved } from "./configuration";
import { ChecksumAlgorithm } from "./constants";
@@ -10,14 +11,14 @@ import { isChecksumWithPartNumber } from "./isChecksumWithPartNumber";
import { isStreaming } from "./isStreaming";
import { validateChecksumFromResponse } from "./validateChecksumFromResponse";
-jest.mock("@smithy/protocol-http");
-jest.mock("./isChecksumWithPartNumber");
-jest.mock("./isStreaming");
-jest.mock("./getChecksumLocationName");
-jest.mock("./validateChecksumFromResponse");
+vi.mock("@smithy/protocol-http");
+vi.mock("./isChecksumWithPartNumber");
+vi.mock("./isStreaming");
+vi.mock("./getChecksumLocationName");
+vi.mock("./validateChecksumFromResponse");
describe(flexibleChecksumsResponseMiddleware.name, () => {
- const mockNext = jest.fn();
+ const mockNext = vi.fn();
const mockContext = {
clientName: "mockClientName",
commandName: "mockCommandName",
@@ -47,21 +48,21 @@ describe(flexibleChecksumsResponseMiddleware.name, () => {
beforeEach(() => {
mockNext.mockResolvedValueOnce(mockResult);
const { isInstance } = HttpRequest;
- (isInstance as unknown as jest.Mock).mockReturnValue(true);
- (isChecksumWithPartNumber as jest.Mock).mockReturnValue(false);
- (isStreaming as jest.Mock).mockReturnValue(false);
- (getChecksumLocationName as jest.Mock).mockImplementation((algorithm) => algorithm);
+ (isInstance as unknown as any).mockReturnValue(true);
+ vi.mocked(isChecksumWithPartNumber).mockReturnValue(false);
+ vi.mocked(isStreaming).mockReturnValue(false);
+ vi.mocked(getChecksumLocationName).mockImplementation((algorithm) => algorithm);
});
afterEach(() => {
expect(mockNext).toHaveBeenCalledTimes(1);
- jest.clearAllMocks();
+ vi.clearAllMocks();
});
describe("skips", () => {
it("if not an instance of HttpRequest", async () => {
const { isInstance } = HttpRequest;
- (isInstance as unknown as jest.Mock).mockReturnValue(false);
+ (isInstance as unknown as any).mockReturnValue(false);
const handler = flexibleChecksumsResponseMiddleware(mockConfig, mockMiddlewareConfig)(mockNext, mockContext);
await handler(mockArgs);
expect(validateChecksumFromResponse).not.toHaveBeenCalled();
@@ -83,7 +84,7 @@ describe(flexibleChecksumsResponseMiddleware.name, () => {
});
it("if checksum is for S3 whole-object multipart GET", async () => {
- (isChecksumWithPartNumber as jest.Mock).mockReturnValue(true);
+ vi.mocked(isChecksumWithPartNumber).mockReturnValue(true);
const handler = flexibleChecksumsResponseMiddleware(mockConfig, mockMiddlewareConfig)(mockNext, {
clientName: "S3Client",
commandName: "GetObjectCommand",
@@ -108,7 +109,7 @@ describe(flexibleChecksumsResponseMiddleware.name, () => {
});
it("if checksum is for S3 GET without part number", async () => {
- (isChecksumWithPartNumber as jest.Mock).mockReturnValue(false);
+ vi.mocked(isChecksumWithPartNumber).mockReturnValue(false);
const handler = flexibleChecksumsResponseMiddleware(mockConfig, mockMiddlewareConfig)(mockNext, {
clientName: "S3Client",
commandName: "GetObjectCommand",
diff --git a/packages/middleware-flexible-checksums/src/getChecksum.spec.ts b/packages/middleware-flexible-checksums/src/getChecksum.spec.ts
index 187719a67561..2a8b37001468 100644
--- a/packages/middleware-flexible-checksums/src/getChecksum.spec.ts
+++ b/packages/middleware-flexible-checksums/src/getChecksum.spec.ts
@@ -1,15 +1,17 @@
+import { afterEach, beforeEach, describe, expect, test as it, vi } from "vitest";
+
import { getChecksum } from "./getChecksum";
import { isStreaming } from "./isStreaming";
import { stringHasher } from "./stringHasher";
-jest.mock("./isStreaming");
-jest.mock("./stringHasher");
+vi.mock("./isStreaming");
+vi.mock("./stringHasher");
describe(getChecksum.name, () => {
const mockOptions = {
- streamHasher: jest.fn(),
- checksumAlgorithmFn: jest.fn(),
- base64Encoder: jest.fn(),
+ streamHasher: vi.fn(),
+ checksumAlgorithmFn: vi.fn(),
+ base64Encoder: vi.fn(),
};
const mockBody = "mockBody";
@@ -21,11 +23,11 @@ describe(getChecksum.name, () => {
});
afterEach(() => {
- jest.clearAllMocks();
+ vi.clearAllMocks();
});
it("gets checksum from streamHasher if body is streaming", async () => {
- (isStreaming as jest.Mock).mockReturnValue(true);
+ vi.mocked(isStreaming).mockReturnValue(true);
mockOptions.streamHasher.mockResolvedValue(mockRawOutput);
const checksum = await getChecksum(mockBody, mockOptions);
expect(checksum).toEqual(mockOutput);
@@ -34,8 +36,8 @@ describe(getChecksum.name, () => {
});
it("gets checksum from stringHasher if body is not streaming", async () => {
- (isStreaming as jest.Mock).mockReturnValue(false);
- (stringHasher as jest.Mock).mockResolvedValue(mockRawOutput);
+ vi.mocked(isStreaming).mockReturnValue(false);
+ vi.mocked(stringHasher).mockResolvedValue(mockRawOutput);
const checksum = await getChecksum(mockBody, mockOptions);
expect(checksum).toEqual(mockOutput);
expect(mockOptions.streamHasher).not.toHaveBeenCalled();
diff --git a/packages/middleware-flexible-checksums/src/getChecksumAlgorithmForRequest.spec.ts b/packages/middleware-flexible-checksums/src/getChecksumAlgorithmForRequest.spec.ts
index ffefd6efd2b6..f333b56f9d9e 100644
--- a/packages/middleware-flexible-checksums/src/getChecksumAlgorithmForRequest.spec.ts
+++ b/packages/middleware-flexible-checksums/src/getChecksumAlgorithmForRequest.spec.ts
@@ -1,3 +1,5 @@
+import { describe, expect, test as it } from "vitest";
+
import { ChecksumAlgorithm } from "./constants";
import { getChecksumAlgorithmForRequest } from "./getChecksumAlgorithmForRequest";
import { CLIENT_SUPPORTED_ALGORITHMS } from "./types";
diff --git a/packages/middleware-flexible-checksums/src/getChecksumAlgorithmListForResponse.spec.ts b/packages/middleware-flexible-checksums/src/getChecksumAlgorithmListForResponse.spec.ts
index 4084925e827a..572d9abdf9bb 100644
--- a/packages/middleware-flexible-checksums/src/getChecksumAlgorithmListForResponse.spec.ts
+++ b/packages/middleware-flexible-checksums/src/getChecksumAlgorithmListForResponse.spec.ts
@@ -1,3 +1,5 @@
+import { describe, expect, test as it } from "vitest";
+
import { getChecksumAlgorithmListForResponse } from "./getChecksumAlgorithmListForResponse";
import { PRIORITY_ORDER_ALGORITHMS } from "./types";
diff --git a/packages/middleware-flexible-checksums/src/getChecksumLocationName.spec.ts b/packages/middleware-flexible-checksums/src/getChecksumLocationName.spec.ts
index cbd04755c526..26b46fe2b748 100644
--- a/packages/middleware-flexible-checksums/src/getChecksumLocationName.spec.ts
+++ b/packages/middleware-flexible-checksums/src/getChecksumLocationName.spec.ts
@@ -1,3 +1,5 @@
+import { describe, expect, test as it } from "vitest";
+
import { ChecksumAlgorithm } from "./constants";
import { getChecksumLocationName } from "./getChecksumLocationName";
diff --git a/packages/middleware-flexible-checksums/src/hasHeader.spec.ts b/packages/middleware-flexible-checksums/src/hasHeader.spec.ts
index ccd0aade5bad..f14254d08ea0 100644
--- a/packages/middleware-flexible-checksums/src/hasHeader.spec.ts
+++ b/packages/middleware-flexible-checksums/src/hasHeader.spec.ts
@@ -1,4 +1,5 @@
import { HeaderBag } from "@smithy/types";
+import { describe, expect, test as it } from "vitest";
import { hasHeader } from "./hasHeader";
diff --git a/packages/middleware-flexible-checksums/src/isChecksumWithPartNumber.spec.ts b/packages/middleware-flexible-checksums/src/isChecksumWithPartNumber.spec.ts
index 72e6c7fca5e5..816cf4b6df90 100644
--- a/packages/middleware-flexible-checksums/src/isChecksumWithPartNumber.spec.ts
+++ b/packages/middleware-flexible-checksums/src/isChecksumWithPartNumber.spec.ts
@@ -1,3 +1,5 @@
+import { describe, expect, test as it } from "vitest";
+
import { isChecksumWithPartNumber } from "./isChecksumWithPartNumber";
describe(isChecksumWithPartNumber.name, () => {
diff --git a/packages/middleware-flexible-checksums/src/isStreaming.spec.ts b/packages/middleware-flexible-checksums/src/isStreaming.spec.ts
index 339774dcacf4..e47530c6a6e4 100644
--- a/packages/middleware-flexible-checksums/src/isStreaming.spec.ts
+++ b/packages/middleware-flexible-checksums/src/isStreaming.spec.ts
@@ -1,20 +1,21 @@
import { isArrayBuffer } from "@smithy/is-array-buffer";
+import { afterEach, beforeEach, describe, expect, test as it, vi } from "vitest";
import { isStreaming } from "./isStreaming";
-jest.mock("@smithy/is-array-buffer");
+vi.mock("@smithy/is-array-buffer");
describe(isStreaming.name, () => {
beforeEach(() => {
- (isArrayBuffer as unknown as jest.Mock).mockReturnValue(true);
+ (isArrayBuffer as unknown as any).mockReturnValue(true);
});
afterEach(() => {
- jest.clearAllMocks();
+ vi.clearAllMocks();
});
it("returns true when body is a stream", () => {
- (isArrayBuffer as unknown as jest.Mock).mockReturnValue(false);
+ (isArrayBuffer as unknown as any).mockReturnValue(false);
// Mocking {} as a stream
const mockStream = {};
expect(isStreaming(mockStream)).toBe(true);
diff --git a/packages/middleware-flexible-checksums/src/middleware-flexible-checksums.integ.spec.ts b/packages/middleware-flexible-checksums/src/middleware-flexible-checksums.integ.spec.ts
index 40b0d1a045d2..7dae9a2145fb 100644
--- a/packages/middleware-flexible-checksums/src/middleware-flexible-checksums.integ.spec.ts
+++ b/packages/middleware-flexible-checksums/src/middleware-flexible-checksums.integ.spec.ts
@@ -1,5 +1,6 @@
import { ChecksumAlgorithm, S3 } from "@aws-sdk/client-s3";
import { Transform } from "stream";
+import { describe, expect, test as it } from "vitest";
import { requireRequestsFrom } from "../../../private/aws-util-test/src";
diff --git a/packages/middleware-flexible-checksums/src/resolveFlexibleChecksumsConfig.spec.ts b/packages/middleware-flexible-checksums/src/resolveFlexibleChecksumsConfig.spec.ts
index 59d909a607f3..404e3df5ec17 100644
--- a/packages/middleware-flexible-checksums/src/resolveFlexibleChecksumsConfig.spec.ts
+++ b/packages/middleware-flexible-checksums/src/resolveFlexibleChecksumsConfig.spec.ts
@@ -1,4 +1,5 @@
import { normalizeProvider } from "@smithy/util-middleware";
+import { afterEach, beforeEach, describe, expect, test as it, vi } from "vitest";
import {
DEFAULT_REQUEST_CHECKSUM_CALCULATION,
@@ -8,15 +9,15 @@ import {
} from "./constants";
import { resolveFlexibleChecksumsConfig } from "./resolveFlexibleChecksumsConfig";
-jest.mock("@smithy/util-middleware");
+vi.mock("@smithy/util-middleware");
describe(resolveFlexibleChecksumsConfig.name, () => {
beforeEach(() => {
- (normalizeProvider as jest.Mock).mockImplementation((input) => input);
+ vi.mocked(normalizeProvider).mockImplementation((input) => input);
});
afterEach(() => {
- jest.clearAllMocks();
+ vi.clearAllMocks();
});
it("returns default client checksums configuration, if not provided", () => {
diff --git a/packages/middleware-flexible-checksums/src/selectChecksumAlgorithmFunction.spec.ts b/packages/middleware-flexible-checksums/src/selectChecksumAlgorithmFunction.spec.ts
index f26a57242303..b1323228740e 100644
--- a/packages/middleware-flexible-checksums/src/selectChecksumAlgorithmFunction.spec.ts
+++ b/packages/middleware-flexible-checksums/src/selectChecksumAlgorithmFunction.spec.ts
@@ -1,14 +1,15 @@
import { AwsCrc32 } from "@aws-crypto/crc32";
import { AwsCrc32c } from "@aws-crypto/crc32c";
+import { describe, expect, test as it, vi } from "vitest";
import { ChecksumAlgorithm } from "./constants";
import { selectChecksumAlgorithmFunction } from "./selectChecksumAlgorithmFunction";
describe(selectChecksumAlgorithmFunction.name, () => {
const mockConfig = {
- md5: jest.fn(),
- sha1: jest.fn(),
- sha256: jest.fn(),
+ md5: vi.fn(),
+ sha1: vi.fn(),
+ sha256: vi.fn(),
};
it.each([
diff --git a/packages/middleware-flexible-checksums/src/streams/create-read-stream-on-buffer.spec.ts b/packages/middleware-flexible-checksums/src/streams/create-read-stream-on-buffer.spec.ts
index 6b01f5c2515c..ecd2429fce28 100644
--- a/packages/middleware-flexible-checksums/src/streams/create-read-stream-on-buffer.spec.ts
+++ b/packages/middleware-flexible-checksums/src/streams/create-read-stream-on-buffer.spec.ts
@@ -1,5 +1,6 @@
import { streamCollector } from "@smithy/node-http-handler";
import { toUtf8 } from "@smithy/util-utf8";
+import { describe, expect, test as it } from "vitest";
import { createReadStreamOnBuffer } from "./create-read-stream-on-buffer";
diff --git a/packages/middleware-flexible-checksums/src/stringHasher.spec.ts b/packages/middleware-flexible-checksums/src/stringHasher.spec.ts
index f3c8fdde8aad..8aaf233b270a 100644
--- a/packages/middleware-flexible-checksums/src/stringHasher.spec.ts
+++ b/packages/middleware-flexible-checksums/src/stringHasher.spec.ts
@@ -1,12 +1,13 @@
import { toUint8Array } from "@smithy/util-utf8";
+import { afterEach, beforeEach, describe, expect, test as it, vi } from "vitest";
import { stringHasher } from "./stringHasher";
describe(stringHasher.name, () => {
const mockHash = new Uint8Array(Buffer.from("mockHash"));
- const mockUpdate = jest.fn();
- const mockDigest = jest.fn();
- const mockChecksumAlgorithmFn = jest.fn().mockImplementation(() => ({
+ const mockUpdate = vi.fn();
+ const mockDigest = vi.fn();
+ const mockChecksumAlgorithmFn = vi.fn().mockImplementation(() => ({
update: mockUpdate,
digest: mockDigest,
}));
@@ -19,7 +20,7 @@ describe(stringHasher.name, () => {
expect(mockChecksumAlgorithmFn).toHaveBeenCalledTimes(1);
expect(mockUpdate).toHaveBeenCalledTimes(1);
expect(mockDigest).toHaveBeenCalledTimes(1);
- jest.clearAllMocks();
+ vi.clearAllMocks();
});
it("calculates hash of the provided string", async () => {
diff --git a/packages/middleware-flexible-checksums/src/stringUnionSelector.spec.ts b/packages/middleware-flexible-checksums/src/stringUnionSelector.spec.ts
index 6bcfae43b0e8..969c3527f1d9 100644
--- a/packages/middleware-flexible-checksums/src/stringUnionSelector.spec.ts
+++ b/packages/middleware-flexible-checksums/src/stringUnionSelector.spec.ts
@@ -1,3 +1,5 @@
+import { beforeEach, describe, expect, test as it } from "vitest";
+
import { SelectorType, stringUnionSelector } from "./stringUnionSelector";
describe(stringUnionSelector.name, () => {
diff --git a/packages/middleware-flexible-checksums/src/validateChecksumFromResponse.spec.ts b/packages/middleware-flexible-checksums/src/validateChecksumFromResponse.spec.ts
index 4a74aae269ca..8a8944bbe9a2 100644
--- a/packages/middleware-flexible-checksums/src/validateChecksumFromResponse.spec.ts
+++ b/packages/middleware-flexible-checksums/src/validateChecksumFromResponse.spec.ts
@@ -1,4 +1,5 @@
import { HttpResponse } from "@smithy/protocol-http";
+import { afterEach, beforeEach, describe, expect, test as it, vi } from "vitest";
import { PreviouslyResolved } from "./configuration";
import { ChecksumAlgorithm } from "./constants";
@@ -8,15 +9,15 @@ import { getChecksumLocationName } from "./getChecksumLocationName";
import { selectChecksumAlgorithmFunction } from "./selectChecksumAlgorithmFunction";
import { validateChecksumFromResponse } from "./validateChecksumFromResponse";
-jest.mock("./getChecksum");
-jest.mock("./getChecksumLocationName");
-jest.mock("./getChecksumAlgorithmListForResponse");
-jest.mock("./selectChecksumAlgorithmFunction");
+vi.mock("./getChecksum");
+vi.mock("./getChecksumLocationName");
+vi.mock("./getChecksumAlgorithmListForResponse");
+vi.mock("./selectChecksumAlgorithmFunction");
describe(validateChecksumFromResponse.name, () => {
const mockConfig = {
- streamHasher: jest.fn(),
- base64Encoder: jest.fn(),
+ streamHasher: vi.fn(),
+ base64Encoder: vi.fn(),
} as unknown as PreviouslyResolved;
const mockBody = {};
@@ -34,7 +35,7 @@ describe(validateChecksumFromResponse.name, () => {
responseAlgorithms: mockResponseAlgorithms,
};
- const mockChecksumAlgorithmFn = jest.fn();
+ const mockChecksumAlgorithmFn = vi.fn();
const getMockResponseWithHeader = (headerKey: string, headerValue: string) => ({
...mockResponse,
@@ -45,15 +46,15 @@ describe(validateChecksumFromResponse.name, () => {
});
beforeEach(() => {
- (getChecksumLocationName as jest.Mock).mockImplementation((algorithm) => algorithm);
- (getChecksumAlgorithmListForResponse as jest.Mock).mockImplementation((responseAlgorithms) => responseAlgorithms);
- (selectChecksumAlgorithmFunction as jest.Mock).mockReturnValue(mockChecksumAlgorithmFn);
- (getChecksum as jest.Mock).mockResolvedValue(mockChecksum);
+ vi.mocked(getChecksumLocationName).mockImplementation((algorithm) => algorithm);
+ vi.mocked(getChecksumAlgorithmListForResponse).mockImplementation((responseAlgorithms) => responseAlgorithms);
+ vi.mocked(selectChecksumAlgorithmFunction).mockReturnValue(mockChecksumAlgorithmFn);
+ vi.mocked(getChecksum).mockResolvedValue(mockChecksum);
});
afterEach(() => {
expect(getChecksumAlgorithmListForResponse).toHaveBeenCalledTimes(1);
- jest.clearAllMocks();
+ vi.clearAllMocks();
});
describe("skip validation", () => {
@@ -70,7 +71,7 @@ describe(validateChecksumFromResponse.name, () => {
});
it("if updated algorithm list from response is empty", async () => {
- (getChecksumAlgorithmListForResponse as jest.Mock).mockImplementation(() => []);
+ vi.mocked(getChecksumAlgorithmListForResponse).mockImplementation(() => []);
await validateChecksumFromResponse(mockResponse, mockOptions);
expect(getChecksumAlgorithmListForResponse).toHaveBeenCalledWith(mockResponseAlgorithms);
expect(getChecksumLocationName).not.toHaveBeenCalled();
diff --git a/packages/middleware-flexible-checksums/vitest.config.integ.ts b/packages/middleware-flexible-checksums/vitest.config.integ.ts
new file mode 100644
index 000000000000..5802db1ac64a
--- /dev/null
+++ b/packages/middleware-flexible-checksums/vitest.config.integ.ts
@@ -0,0 +1,8 @@
+import { defineConfig } from "vitest/config";
+
+export default defineConfig({
+ test: {
+ include: ["**/*.integ.spec.ts"],
+ environment: "node",
+ },
+});
diff --git a/packages/middleware-flexible-checksums/vitest.config.ts b/packages/middleware-flexible-checksums/vitest.config.ts
new file mode 100644
index 000000000000..4e46707824a5
--- /dev/null
+++ b/packages/middleware-flexible-checksums/vitest.config.ts
@@ -0,0 +1,9 @@
+import { defineConfig } from "vitest/config";
+
+export default defineConfig({
+ test: {
+ exclude: ["**/*.{integ,e2e,browser}.spec.ts"],
+ include: ["**/*.spec.ts"],
+ environment: "node",
+ },
+});
diff --git a/packages/middleware-host-header/jest.config.integ.js b/packages/middleware-host-header/jest.config.integ.js
deleted file mode 100644
index d09aba7398c7..000000000000
--- a/packages/middleware-host-header/jest.config.integ.js
+++ /dev/null
@@ -1,4 +0,0 @@
-module.exports = {
- preset: "ts-jest",
- testMatch: ["**/*.integ.spec.ts"],
-};
diff --git a/packages/middleware-host-header/jest.config.js b/packages/middleware-host-header/jest.config.js
deleted file mode 100644
index a8d1c2e49912..000000000000
--- a/packages/middleware-host-header/jest.config.js
+++ /dev/null
@@ -1,5 +0,0 @@
-const base = require("../../jest.config.base.js");
-
-module.exports = {
- ...base,
-};
diff --git a/packages/middleware-host-header/package.json b/packages/middleware-host-header/package.json
index bf619b4f1029..5518093fb7f8 100644
--- a/packages/middleware-host-header/package.json
+++ b/packages/middleware-host-header/package.json
@@ -9,8 +9,10 @@
"build:types": "tsc -p tsconfig.types.json",
"build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4",
"clean": "rimraf ./dist-* && rimraf *.tsbuildinfo",
- "test": "jest",
- "test:integration": "jest -c jest.config.integ.js"
+ "test": "vitest run",
+ "test:integration": "vitest run -c vitest.config.integ.ts",
+ "test:watch": "vitest watch",
+ "test:integration:watch": "vitest watch -c vitest.config.integ.ts"
},
"main": "./dist-cjs/index.js",
"module": "./dist-es/index.js",
diff --git a/packages/middleware-host-header/src/index.spec.ts b/packages/middleware-host-header/src/index.spec.ts
index a39b0e14f697..e708a1006c5a 100644
--- a/packages/middleware-host-header/src/index.spec.ts
+++ b/packages/middleware-host-header/src/index.spec.ts
@@ -1,11 +1,12 @@
import { HttpRequest } from "@smithy/protocol-http";
+import { beforeEach, describe, expect, expect, test as it, vi } from "vitest";
import { hostHeaderMiddleware } from "./index";
describe("hostHeaderMiddleware", () => {
- const mockNextHandler = jest.fn();
+ const mockNextHandler = vi.fn();
beforeEach(() => {
- jest.clearAllMocks();
+ vi.clearAllMocks();
});
it("should set host header if not already set", async () => {
diff --git a/packages/middleware-host-header/src/middleware-host-header.integ.spec.ts b/packages/middleware-host-header/src/middleware-host-header.integ.spec.ts
index 25fbe5c3a00c..a3fc56b606a1 100644
--- a/packages/middleware-host-header/src/middleware-host-header.integ.spec.ts
+++ b/packages/middleware-host-header/src/middleware-host-header.integ.spec.ts
@@ -1,4 +1,5 @@
import { SageMaker } from "@aws-sdk/client-sagemaker";
+import { describe, expect, test as it } from "vitest";
import { requireRequestsFrom } from "../../../private/aws-util-test/src";
diff --git a/packages/middleware-host-header/vitest.config.integ.ts b/packages/middleware-host-header/vitest.config.integ.ts
new file mode 100644
index 000000000000..5802db1ac64a
--- /dev/null
+++ b/packages/middleware-host-header/vitest.config.integ.ts
@@ -0,0 +1,8 @@
+import { defineConfig } from "vitest/config";
+
+export default defineConfig({
+ test: {
+ include: ["**/*.integ.spec.ts"],
+ environment: "node",
+ },
+});
diff --git a/packages/middleware-host-header/vitest.config.ts b/packages/middleware-host-header/vitest.config.ts
new file mode 100644
index 000000000000..4e46707824a5
--- /dev/null
+++ b/packages/middleware-host-header/vitest.config.ts
@@ -0,0 +1,9 @@
+import { defineConfig } from "vitest/config";
+
+export default defineConfig({
+ test: {
+ exclude: ["**/*.{integ,e2e,browser}.spec.ts"],
+ include: ["**/*.spec.ts"],
+ environment: "node",
+ },
+});
diff --git a/packages/middleware-location-constraint/jest.config.integ.js b/packages/middleware-location-constraint/jest.config.integ.js
deleted file mode 100644
index d09aba7398c7..000000000000
--- a/packages/middleware-location-constraint/jest.config.integ.js
+++ /dev/null
@@ -1,4 +0,0 @@
-module.exports = {
- preset: "ts-jest",
- testMatch: ["**/*.integ.spec.ts"],
-};
diff --git a/packages/middleware-location-constraint/jest.config.js b/packages/middleware-location-constraint/jest.config.js
deleted file mode 100644
index a8d1c2e49912..000000000000
--- a/packages/middleware-location-constraint/jest.config.js
+++ /dev/null
@@ -1,5 +0,0 @@
-const base = require("../../jest.config.base.js");
-
-module.exports = {
- ...base,
-};
diff --git a/packages/middleware-location-constraint/package.json b/packages/middleware-location-constraint/package.json
index c88f93164080..6377315f513e 100644
--- a/packages/middleware-location-constraint/package.json
+++ b/packages/middleware-location-constraint/package.json
@@ -9,8 +9,10 @@
"build:types": "tsc -p tsconfig.types.json",
"build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4",
"clean": "rimraf ./dist-* && rimraf *.tsbuildinfo",
- "test": "jest",
- "test:integration": "jest -c jest.config.integ.js"
+ "test": "vitest run",
+ "test:integration": "vitest run -c vitest.config.integ.ts",
+ "test:watch": "vitest watch",
+ "test:integration:watch": "vitest watch -c vitest.config.integ.ts"
},
"main": "./dist-cjs/index.js",
"module": "./dist-es/index.js",
diff --git a/packages/middleware-location-constraint/src/index.spec.ts b/packages/middleware-location-constraint/src/index.spec.ts
index 6dd832185eb6..320c4be1cd18 100644
--- a/packages/middleware-location-constraint/src/index.spec.ts
+++ b/packages/middleware-location-constraint/src/index.spec.ts
@@ -1,13 +1,15 @@
+import { beforeEach, describe, expect, test as it, vi } from "vitest";
+
import { locationConstraintMiddleware } from "./";
describe("locationConstrainMiddleware", () => {
- const next = jest.fn();
+ const next = vi.fn();
const basicInput = {
foo: "bar",
};
beforeEach(() => {
- jest.clearAllMocks();
+ vi.clearAllMocks();
});
describe("for region us-east-1", () => {
diff --git a/packages/middleware-location-constraint/src/middleware-location-constraint.integ.spec.ts b/packages/middleware-location-constraint/src/middleware-location-constraint.integ.spec.ts
index 3ea1798df1e5..3f6e84a3c02a 100644
--- a/packages/middleware-location-constraint/src/middleware-location-constraint.integ.spec.ts
+++ b/packages/middleware-location-constraint/src/middleware-location-constraint.integ.spec.ts
@@ -1,4 +1,5 @@
import { S3 } from "@aws-sdk/client-s3";
+import { describe, expect, expect, test as it } from "vitest";
import { requireRequestsFrom } from "../../../private/aws-util-test/src";
diff --git a/packages/middleware-location-constraint/vitest.config.integ.ts b/packages/middleware-location-constraint/vitest.config.integ.ts
new file mode 100644
index 000000000000..5802db1ac64a
--- /dev/null
+++ b/packages/middleware-location-constraint/vitest.config.integ.ts
@@ -0,0 +1,8 @@
+import { defineConfig } from "vitest/config";
+
+export default defineConfig({
+ test: {
+ include: ["**/*.integ.spec.ts"],
+ environment: "node",
+ },
+});
diff --git a/packages/middleware-location-constraint/vitest.config.ts b/packages/middleware-location-constraint/vitest.config.ts
new file mode 100644
index 000000000000..4e46707824a5
--- /dev/null
+++ b/packages/middleware-location-constraint/vitest.config.ts
@@ -0,0 +1,9 @@
+import { defineConfig } from "vitest/config";
+
+export default defineConfig({
+ test: {
+ exclude: ["**/*.{integ,e2e,browser}.spec.ts"],
+ include: ["**/*.spec.ts"],
+ environment: "node",
+ },
+});
diff --git a/packages/middleware-logger/jest.config.integ.js b/packages/middleware-logger/jest.config.integ.js
deleted file mode 100644
index d09aba7398c7..000000000000
--- a/packages/middleware-logger/jest.config.integ.js
+++ /dev/null
@@ -1,4 +0,0 @@
-module.exports = {
- preset: "ts-jest",
- testMatch: ["**/*.integ.spec.ts"],
-};
diff --git a/packages/middleware-logger/jest.config.js b/packages/middleware-logger/jest.config.js
deleted file mode 100644
index a8d1c2e49912..000000000000
--- a/packages/middleware-logger/jest.config.js
+++ /dev/null
@@ -1,5 +0,0 @@
-const base = require("../../jest.config.base.js");
-
-module.exports = {
- ...base,
-};
diff --git a/packages/middleware-logger/package.json b/packages/middleware-logger/package.json
index 0985d323975d..621259afdfef 100644
--- a/packages/middleware-logger/package.json
+++ b/packages/middleware-logger/package.json
@@ -9,8 +9,10 @@
"build:types": "tsc -p tsconfig.types.json",
"build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4",
"clean": "rimraf ./dist-* && rimraf *.tsbuildinfo",
- "test": "jest --passWithNoTests",
- "test:integration": "jest -c jest.config.integ.js"
+ "test": "vitest run",
+ "test:integration": "vitest run -c vitest.config.integ.ts",
+ "test:watch": "vitest watch",
+ "test:integration:watch": "vitest watch -c vitest.config.integ.ts"
},
"author": {
"name": "AWS SDK for JavaScript Team",
diff --git a/packages/middleware-logger/src/loggerMiddleware.spec.ts b/packages/middleware-logger/src/loggerMiddleware.spec.ts
index 4ec3f88cc60f..9c64c1b15053 100644
--- a/packages/middleware-logger/src/loggerMiddleware.spec.ts
+++ b/packages/middleware-logger/src/loggerMiddleware.spec.ts
@@ -1,14 +1,15 @@
import { HandlerExecutionContext, Logger, MiddlewareStack } from "@smithy/types";
+import { afterEach, describe, expect, test as it, vi } from "vitest";
import { getLoggerPlugin, loggerMiddleware, loggerMiddlewareOptions } from "./loggerMiddleware";
describe("getLoggerPlugin", () => {
const mockClientStack = {
- add: jest.fn(),
+ add: vi.fn(),
};
afterEach(() => {
- jest.clearAllMocks();
+ vi.clearAllMocks();
});
it("adds loggerMiddleware", () => {
@@ -19,7 +20,7 @@ describe("getLoggerPlugin", () => {
});
describe("loggerMiddleware", () => {
- const mockNext = jest.fn();
+ const mockNext = vi.fn();
const mockArgs = {
input: {
@@ -54,7 +55,7 @@ describe("loggerMiddleware", () => {
};
afterEach(() => {
- jest.clearAllMocks();
+ vi.clearAllMocks();
});
it("returns without logging if context.logger is not defined", async () => {
@@ -84,14 +85,14 @@ describe("loggerMiddleware", () => {
it("success case with clientName, commandName, input, metadata", async () => {
mockNext.mockResolvedValueOnce(mockResponse);
- const logger = { info: jest.fn() } as unknown as Logger;
+ const logger = { info: vi.fn() } as unknown as Logger;
const clientName = "mockClientName";
const commandName = "mockCommandName";
const mockInputLog = { inputKey: "inputKey", inputSensitiveKey: "SENSITIVE_VALUE" };
- const inputFilterSensitiveLog = jest.fn().mockReturnValueOnce(mockInputLog);
+ const inputFilterSensitiveLog = vi.fn().mockReturnValueOnce(mockInputLog);
const mockOutputLog = { outputKey: "outputKey", outputSensitiveKey: "SENSITIVE_VALUE" };
- const outputFilterSensitiveLog = jest.fn().mockReturnValueOnce(mockOutputLog);
+ const outputFilterSensitiveLog = vi.fn().mockReturnValueOnce(mockOutputLog);
const context = {
logger,
@@ -125,14 +126,14 @@ describe("loggerMiddleware", () => {
it("should use override log filters for DynamoDBDocumentClient if present", async () => {
mockNext.mockResolvedValueOnce(mockResponse);
- const logger = { info: jest.fn() } as unknown as Logger;
+ const logger = { info: vi.fn() } as unknown as Logger;
const clientName = "mockClientName";
const commandName = "mockCommandName";
const mockInputLog = { inputKey: "inputKey", inputSensitiveKey: "SENSITIVE_VALUE" };
- const inputFilterSensitiveLog = jest.fn().mockReturnValueOnce(mockInputLog);
+ const inputFilterSensitiveLog = vi.fn().mockReturnValueOnce(mockInputLog);
const mockOutputLog = { outputKey: "outputKey", outputSensitiveKey: "SENSITIVE_VALUE" };
- const outputFilterSensitiveLog = jest.fn().mockReturnValueOnce(mockOutputLog);
+ const outputFilterSensitiveLog = vi.fn().mockReturnValueOnce(mockOutputLog);
const context: HandlerExecutionContext = {
logger,
@@ -183,9 +184,9 @@ describe("loggerMiddleware", () => {
},
};
mockNext.mockResolvedValueOnce(customResponse);
- const logger = { info: jest.fn() } as unknown as Logger;
- const inputFilterSensitiveLog = jest.fn().mockImplementationOnce((input) => input);
- const outputFilterSensitiveLog = jest.fn().mockImplementationOnce((output) => output);
+ const logger = { info: vi.fn() } as unknown as Logger;
+ const inputFilterSensitiveLog = vi.fn().mockImplementationOnce((input) => input);
+ const outputFilterSensitiveLog = vi.fn().mockImplementationOnce((output) => output);
const context = {
logger,
@@ -219,9 +220,9 @@ describe("loggerMiddleware", () => {
const clientName = "mockClientName";
const commandName = "mockCommandName";
- const logger = { error: jest.fn() } as unknown as Logger;
- const inputFilterSensitiveLog = jest.fn().mockImplementationOnce((input) => input);
- const outputFilterSensitiveLog = jest.fn().mockImplementationOnce((output) => output);
+ const logger = { error: vi.fn() } as unknown as Logger;
+ const inputFilterSensitiveLog = vi.fn().mockImplementationOnce((input) => input);
+ const outputFilterSensitiveLog = vi.fn().mockImplementationOnce((output) => output);
const context = {
clientName,
@@ -253,9 +254,9 @@ describe("loggerMiddleware", () => {
const clientName = "mockClientName";
const commandName = "mockCommandName";
- const logger = { error: jest.fn() } as unknown as Logger;
- const inputFilterSensitiveLog = jest.fn().mockImplementationOnce((input) => input);
- const outputFilterSensitiveLog = jest.fn().mockImplementationOnce((output) => output);
+ const logger = { error: vi.fn() } as unknown as Logger;
+ const inputFilterSensitiveLog = vi.fn().mockImplementationOnce((input) => input);
+ const outputFilterSensitiveLog = vi.fn().mockImplementationOnce((output) => output);
const context = {
clientName,
@@ -284,14 +285,14 @@ describe("loggerMiddleware", () => {
Object.assign(nextError, { $metadata });
mockNext.mockRejectedValueOnce(nextError);
- const logger = { error: jest.fn() } as unknown as Logger;
+ const logger = { error: vi.fn() } as unknown as Logger;
const clientName = "mockClientName";
const commandName = "mockCommandName";
const mockInputLog = { inputKey: "inputKey", inputSensitiveKey: "SENSITIVE_VALUE" };
- const inputFilterSensitiveLog = jest.fn().mockReturnValueOnce(mockInputLog);
+ const inputFilterSensitiveLog = vi.fn().mockReturnValueOnce(mockInputLog);
const mockOutputLog = { outputKey: "outputKey", outputSensitiveKey: "SENSITIVE_VALUE" };
- const outputFilterSensitiveLog = jest.fn().mockReturnValueOnce(mockOutputLog);
+ const outputFilterSensitiveLog = vi.fn().mockReturnValueOnce(mockOutputLog);
const context: HandlerExecutionContext = {
logger,
diff --git a/packages/middleware-logger/src/middleware-logger.integ.spec.ts b/packages/middleware-logger/src/middleware-logger.integ.spec.ts
index 835cb42ead64..fef3f8f13a34 100644
--- a/packages/middleware-logger/src/middleware-logger.integ.spec.ts
+++ b/packages/middleware-logger/src/middleware-logger.integ.spec.ts
@@ -1,4 +1,5 @@
import { CloudFront } from "@aws-sdk/client-cloudfront";
+import { describe, expect, test as it } from "vitest";
import { requireRequestsFrom } from "../../../private/aws-util-test/src";
diff --git a/packages/middleware-logger/vitest.config.integ.ts b/packages/middleware-logger/vitest.config.integ.ts
new file mode 100644
index 000000000000..5802db1ac64a
--- /dev/null
+++ b/packages/middleware-logger/vitest.config.integ.ts
@@ -0,0 +1,8 @@
+import { defineConfig } from "vitest/config";
+
+export default defineConfig({
+ test: {
+ include: ["**/*.integ.spec.ts"],
+ environment: "node",
+ },
+});
diff --git a/packages/middleware-logger/vitest.config.ts b/packages/middleware-logger/vitest.config.ts
new file mode 100644
index 000000000000..4e46707824a5
--- /dev/null
+++ b/packages/middleware-logger/vitest.config.ts
@@ -0,0 +1,9 @@
+import { defineConfig } from "vitest/config";
+
+export default defineConfig({
+ test: {
+ exclude: ["**/*.{integ,e2e,browser}.spec.ts"],
+ include: ["**/*.spec.ts"],
+ environment: "node",
+ },
+});
diff --git a/packages/middleware-recursion-detection/jest.config.integ.js b/packages/middleware-recursion-detection/jest.config.integ.js
deleted file mode 100644
index d09aba7398c7..000000000000
--- a/packages/middleware-recursion-detection/jest.config.integ.js
+++ /dev/null
@@ -1,4 +0,0 @@
-module.exports = {
- preset: "ts-jest",
- testMatch: ["**/*.integ.spec.ts"],
-};
diff --git a/packages/middleware-recursion-detection/jest.config.js b/packages/middleware-recursion-detection/jest.config.js
deleted file mode 100644
index a8d1c2e49912..000000000000
--- a/packages/middleware-recursion-detection/jest.config.js
+++ /dev/null
@@ -1,5 +0,0 @@
-const base = require("../../jest.config.base.js");
-
-module.exports = {
- ...base,
-};
diff --git a/packages/middleware-recursion-detection/package.json b/packages/middleware-recursion-detection/package.json
index 531aece1e4e5..9730545b2c93 100644
--- a/packages/middleware-recursion-detection/package.json
+++ b/packages/middleware-recursion-detection/package.json
@@ -9,8 +9,10 @@
"build:types": "tsc -p tsconfig.types.json",
"build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4",
"clean": "rimraf ./dist-* && rimraf *.tsbuildinfo",
- "test": "jest",
- "test:integration": "jest -c jest.config.integ.js"
+ "test": "vitest run",
+ "test:integration": "vitest run -c vitest.config.integ.ts",
+ "test:watch": "vitest watch",
+ "test:integration:watch": "vitest watch -c vitest.config.integ.ts"
},
"main": "./dist-cjs/index.js",
"module": "./dist-es/index.js",
diff --git a/packages/middleware-recursion-detection/src/index.spec.ts b/packages/middleware-recursion-detection/src/index.spec.ts
index c7e067e0fa47..5b2452816021 100644
--- a/packages/middleware-recursion-detection/src/index.spec.ts
+++ b/packages/middleware-recursion-detection/src/index.spec.ts
@@ -1,14 +1,15 @@
import { HttpRequest } from "@smithy/protocol-http";
+import { afterAll, beforeEach, describe, expect, test as it, vi } from "vitest";
import { recursionDetectionMiddleware } from "./index";
describe(recursionDetectionMiddleware.name, () => {
- const mockNextHandler = jest.fn();
+ const mockNextHandler = vi.fn();
const originEnv = process.env;
const TRACE_ID_HEADER_NAME = "X-Amzn-Trace-Id";
beforeEach(() => {
- jest.clearAllMocks();
+ vi.clearAllMocks();
process.env = {};
});
diff --git a/packages/middleware-recursion-detection/src/middleware-recursion-detection.integ.spec.ts b/packages/middleware-recursion-detection/src/middleware-recursion-detection.integ.spec.ts
index aa7697b570ab..12905350be66 100644
--- a/packages/middleware-recursion-detection/src/middleware-recursion-detection.integ.spec.ts
+++ b/packages/middleware-recursion-detection/src/middleware-recursion-detection.integ.spec.ts
@@ -1,4 +1,5 @@
import { Lambda } from "@aws-sdk/client-lambda";
+import { describe, expect, test as it } from "vitest";
import { requireRequestsFrom } from "../../../private/aws-util-test/src";
diff --git a/packages/middleware-recursion-detection/vitest.config.integ.ts b/packages/middleware-recursion-detection/vitest.config.integ.ts
new file mode 100644
index 000000000000..5802db1ac64a
--- /dev/null
+++ b/packages/middleware-recursion-detection/vitest.config.integ.ts
@@ -0,0 +1,8 @@
+import { defineConfig } from "vitest/config";
+
+export default defineConfig({
+ test: {
+ include: ["**/*.integ.spec.ts"],
+ environment: "node",
+ },
+});
diff --git a/packages/middleware-recursion-detection/vitest.config.ts b/packages/middleware-recursion-detection/vitest.config.ts
new file mode 100644
index 000000000000..4e46707824a5
--- /dev/null
+++ b/packages/middleware-recursion-detection/vitest.config.ts
@@ -0,0 +1,9 @@
+import { defineConfig } from "vitest/config";
+
+export default defineConfig({
+ test: {
+ exclude: ["**/*.{integ,e2e,browser}.spec.ts"],
+ include: ["**/*.spec.ts"],
+ environment: "node",
+ },
+});
diff --git a/packages/middleware-sdk-api-gateway/jest.config.integ.js b/packages/middleware-sdk-api-gateway/jest.config.integ.js
deleted file mode 100644
index d09aba7398c7..000000000000
--- a/packages/middleware-sdk-api-gateway/jest.config.integ.js
+++ /dev/null
@@ -1,4 +0,0 @@
-module.exports = {
- preset: "ts-jest",
- testMatch: ["**/*.integ.spec.ts"],
-};
diff --git a/packages/middleware-sdk-api-gateway/jest.config.js b/packages/middleware-sdk-api-gateway/jest.config.js
deleted file mode 100644
index a8d1c2e49912..000000000000
--- a/packages/middleware-sdk-api-gateway/jest.config.js
+++ /dev/null
@@ -1,5 +0,0 @@
-const base = require("../../jest.config.base.js");
-
-module.exports = {
- ...base,
-};
diff --git a/packages/middleware-sdk-api-gateway/package.json b/packages/middleware-sdk-api-gateway/package.json
index 82753a7b446b..38baa7532a94 100644
--- a/packages/middleware-sdk-api-gateway/package.json
+++ b/packages/middleware-sdk-api-gateway/package.json
@@ -9,8 +9,10 @@
"build:types": "tsc -p tsconfig.types.json",
"build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4",
"clean": "rimraf ./dist-* && rimraf *.tsbuildinfo",
- "test": "jest",
- "test:integration": "jest -c jest.config.integ.js"
+ "test": "vitest run",
+ "test:integration": "vitest run -c vitest.config.integ.ts",
+ "test:watch": "vitest watch",
+ "test:integration:watch": "vitest watch -c vitest.config.integ.ts"
},
"main": "./dist-cjs/index.js",
"module": "./dist-es/index.js",
diff --git a/packages/middleware-sdk-api-gateway/src/index.spec.ts b/packages/middleware-sdk-api-gateway/src/index.spec.ts
index 154a0a3c9c2d..8db268b36571 100644
--- a/packages/middleware-sdk-api-gateway/src/index.spec.ts
+++ b/packages/middleware-sdk-api-gateway/src/index.spec.ts
@@ -1,12 +1,13 @@
import { HttpRequest } from "@smithy/protocol-http";
+import { beforeEach, describe, expect, test as it, vi } from "vitest";
import { acceptHeaderMiddleware } from "./index";
describe("acceptHeaderMiddleware", () => {
- const next = jest.fn();
+ const next = vi.fn();
beforeEach(() => {
- jest.clearAllMocks();
+ vi.clearAllMocks();
});
it("sets Accept header to application/json", async () => {
diff --git a/packages/middleware-sdk-api-gateway/src/middleware-sdk-api-gateway.integ.spec.ts b/packages/middleware-sdk-api-gateway/src/middleware-sdk-api-gateway.integ.spec.ts
index 317051d53f60..72328a5de9a3 100644
--- a/packages/middleware-sdk-api-gateway/src/middleware-sdk-api-gateway.integ.spec.ts
+++ b/packages/middleware-sdk-api-gateway/src/middleware-sdk-api-gateway.integ.spec.ts
@@ -1,4 +1,5 @@
import { APIGateway } from "@aws-sdk/client-api-gateway";
+import { describe, expect, test as it } from "vitest";
import { requireRequestsFrom } from "../../../private/aws-util-test/src";
diff --git a/packages/middleware-sdk-api-gateway/vitest.config.integ.ts b/packages/middleware-sdk-api-gateway/vitest.config.integ.ts
new file mode 100644
index 000000000000..5802db1ac64a
--- /dev/null
+++ b/packages/middleware-sdk-api-gateway/vitest.config.integ.ts
@@ -0,0 +1,8 @@
+import { defineConfig } from "vitest/config";
+
+export default defineConfig({
+ test: {
+ include: ["**/*.integ.spec.ts"],
+ environment: "node",
+ },
+});
diff --git a/packages/middleware-sdk-api-gateway/vitest.config.ts b/packages/middleware-sdk-api-gateway/vitest.config.ts
new file mode 100644
index 000000000000..4e46707824a5
--- /dev/null
+++ b/packages/middleware-sdk-api-gateway/vitest.config.ts
@@ -0,0 +1,9 @@
+import { defineConfig } from "vitest/config";
+
+export default defineConfig({
+ test: {
+ exclude: ["**/*.{integ,e2e,browser}.spec.ts"],
+ include: ["**/*.spec.ts"],
+ environment: "node",
+ },
+});
diff --git a/packages/middleware-sdk-ec2/jest.config.integ.js b/packages/middleware-sdk-ec2/jest.config.integ.js
deleted file mode 100644
index d09aba7398c7..000000000000
--- a/packages/middleware-sdk-ec2/jest.config.integ.js
+++ /dev/null
@@ -1,4 +0,0 @@
-module.exports = {
- preset: "ts-jest",
- testMatch: ["**/*.integ.spec.ts"],
-};
diff --git a/packages/middleware-sdk-ec2/jest.config.js b/packages/middleware-sdk-ec2/jest.config.js
deleted file mode 100644
index a8d1c2e49912..000000000000
--- a/packages/middleware-sdk-ec2/jest.config.js
+++ /dev/null
@@ -1,5 +0,0 @@
-const base = require("../../jest.config.base.js");
-
-module.exports = {
- ...base,
-};
diff --git a/packages/middleware-sdk-ec2/package.json b/packages/middleware-sdk-ec2/package.json
index b254d0c9dbf6..73c852e66271 100644
--- a/packages/middleware-sdk-ec2/package.json
+++ b/packages/middleware-sdk-ec2/package.json
@@ -9,8 +9,10 @@
"build:types": "tsc -p tsconfig.types.json",
"build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4",
"clean": "rimraf ./dist-* && rimraf *.tsbuildinfo",
- "test": "jest",
- "test:integration": "jest --config jest.config.integ.js"
+ "test": "vitest run",
+ "test:integration": "vitest run -c vitest.config.integ.ts",
+ "test:watch": "vitest watch",
+ "test:integration:watch": "vitest watch -c vitest.config.integ.ts"
},
"main": "./dist-cjs/index.js",
"module": "./dist-es/index.js",
diff --git a/packages/middleware-sdk-ec2/src/index.spec.ts b/packages/middleware-sdk-ec2/src/index.spec.ts
index ac93307ddb72..55f2a76f7d67 100755
--- a/packages/middleware-sdk-ec2/src/index.spec.ts
+++ b/packages/middleware-sdk-ec2/src/index.spec.ts
@@ -1,10 +1,11 @@
import { HttpRequest } from "@smithy/protocol-http";
import { EndpointV2 } from "@smithy/types";
+import { beforeEach, describe, expect, test as it, vi } from "vitest";
import { credentials, MockSha256, region } from "./fixture";
import { copySnapshotPresignedUrlMiddleware } from "./index";
-const nextHandler = jest.fn();
+const nextHandler = vi.fn();
const handler = copySnapshotPresignedUrlMiddleware({
credentials,
region,
@@ -20,7 +21,7 @@ const handler = copySnapshotPresignedUrlMiddleware({
describe("middleware-sdk-ec2", () => {
beforeEach(() => {
- jest.clearAllMocks();
+ vi.clearAllMocks();
});
it("generates PresignedUrl and DestinationRegion parameters", async () => {
diff --git a/packages/middleware-sdk-ec2/src/middleware-sdk-ec2.integ.spec.ts b/packages/middleware-sdk-ec2/src/middleware-sdk-ec2.integ.spec.ts
index edd46061e974..ac1d89e89a7c 100644
--- a/packages/middleware-sdk-ec2/src/middleware-sdk-ec2.integ.spec.ts
+++ b/packages/middleware-sdk-ec2/src/middleware-sdk-ec2.integ.spec.ts
@@ -1,4 +1,5 @@
import { EC2 } from "@aws-sdk/client-ec2";
+import { describe, expect, expect, test as it } from "vitest";
import { TestHttpHandler } from "../../../private/aws-util-test/src";
@@ -78,7 +79,7 @@ describe("EC2", () => {
});
// skipped due to ISOB failing DNS lookup
- xit("in us-isob-east-1, serializes PSU and DestinationRegion when Encrypted=true and KmsKeyId present", async () => {
+ it.skip("in us-isob-east-1, serializes PSU and DestinationRegion when Encrypted=true and KmsKeyId present", async () => {
const client = new EC2({
region: "us-isob-east-1",
});
diff --git a/packages/middleware-sdk-ec2/vitest.config.integ.ts b/packages/middleware-sdk-ec2/vitest.config.integ.ts
new file mode 100644
index 000000000000..5802db1ac64a
--- /dev/null
+++ b/packages/middleware-sdk-ec2/vitest.config.integ.ts
@@ -0,0 +1,8 @@
+import { defineConfig } from "vitest/config";
+
+export default defineConfig({
+ test: {
+ include: ["**/*.integ.spec.ts"],
+ environment: "node",
+ },
+});
diff --git a/packages/middleware-sdk-ec2/vitest.config.ts b/packages/middleware-sdk-ec2/vitest.config.ts
new file mode 100644
index 000000000000..4e46707824a5
--- /dev/null
+++ b/packages/middleware-sdk-ec2/vitest.config.ts
@@ -0,0 +1,9 @@
+import { defineConfig } from "vitest/config";
+
+export default defineConfig({
+ test: {
+ exclude: ["**/*.{integ,e2e,browser}.spec.ts"],
+ include: ["**/*.spec.ts"],
+ environment: "node",
+ },
+});
diff --git a/packages/middleware-sdk-glacier/jest.config.integ.js b/packages/middleware-sdk-glacier/jest.config.integ.js
deleted file mode 100644
index d09aba7398c7..000000000000
--- a/packages/middleware-sdk-glacier/jest.config.integ.js
+++ /dev/null
@@ -1,4 +0,0 @@
-module.exports = {
- preset: "ts-jest",
- testMatch: ["**/*.integ.spec.ts"],
-};
diff --git a/packages/middleware-sdk-glacier/jest.config.js b/packages/middleware-sdk-glacier/jest.config.js
deleted file mode 100644
index a8d1c2e49912..000000000000
--- a/packages/middleware-sdk-glacier/jest.config.js
+++ /dev/null
@@ -1,5 +0,0 @@
-const base = require("../../jest.config.base.js");
-
-module.exports = {
- ...base,
-};
diff --git a/packages/middleware-sdk-glacier/package.json b/packages/middleware-sdk-glacier/package.json
index d790ebb10512..d9500af0a0d3 100644
--- a/packages/middleware-sdk-glacier/package.json
+++ b/packages/middleware-sdk-glacier/package.json
@@ -9,8 +9,10 @@
"build:types": "tsc -p tsconfig.types.json",
"build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4",
"clean": "rimraf ./dist-* && rimraf *.tsbuildinfo",
- "test": "jest",
- "test:integration": "jest -c jest.config.integ.js"
+ "test": "vitest run",
+ "test:integration": "vitest run -c vitest.config.integ.ts",
+ "test:watch": "vitest watch",
+ "test:integration:watch": "vitest watch -c vitest.config.integ.ts"
},
"main": "./dist-cjs/index.js",
"module": "./dist-es/index.js",
diff --git a/packages/middleware-sdk-glacier/src/account-id-default.spec.ts b/packages/middleware-sdk-glacier/src/account-id-default.spec.ts
index bf11331a7114..32c54897e26b 100644
--- a/packages/middleware-sdk-glacier/src/account-id-default.spec.ts
+++ b/packages/middleware-sdk-glacier/src/account-id-default.spec.ts
@@ -1,10 +1,12 @@
+import { beforeEach, describe, expect, test as it, vi } from "vitest";
+
import { accountIdDefaultMiddleware } from "./account-id-default";
describe("accountIdDefaultMiddleware", () => {
- const next = jest.fn();
+ const next = vi.fn();
beforeEach(() => {
- jest.clearAllMocks();
+ vi.clearAllMocks();
});
it("adds default accountId if not set on input", async () => {
diff --git a/packages/middleware-sdk-glacier/src/add-checksum-headers.spec.ts b/packages/middleware-sdk-glacier/src/add-checksum-headers.spec.ts
index 88cd6dbe5b2d..742c5152e303 100644
--- a/packages/middleware-sdk-glacier/src/add-checksum-headers.spec.ts
+++ b/packages/middleware-sdk-glacier/src/add-checksum-headers.spec.ts
@@ -1,17 +1,18 @@
import { HttpRequest } from "@smithy/protocol-http";
+import { beforeEach, describe, expect, test as it, vi } from "vitest";
import { addChecksumHeadersMiddleware } from "./add-checksum-headers";
describe("addChecksumHeadersMiddleware", () => {
- const bodyChecksumGenerator = jest
+ const bodyChecksumGenerator = vi
.fn()
.mockReturnValue([
"733cf513448ce6b20ad1bc5e50eb27c06aefae0c320713a5dd99f4e51bc1ca60",
"733cf513448ce6b20ad1bc5e50eb27c06aefae0c320713a5dd99f4e51bc1ca60",
]);
- const sha256 = jest.fn();
- const utf8Decoder = jest.fn();
- const next = jest.fn();
+ const sha256 = vi.fn();
+ const utf8Decoder = vi.fn();
+ const next = vi.fn();
const minimalRequest = {
method: "POST",
@@ -29,7 +30,7 @@ describe("addChecksumHeadersMiddleware", () => {
};
beforeEach(() => {
- jest.clearAllMocks();
+ vi.clearAllMocks();
});
it("will not set content-sha256 headers if request body is empty", async () => {
diff --git a/packages/middleware-sdk-glacier/src/add-glacier-api-version.spec.ts b/packages/middleware-sdk-glacier/src/add-glacier-api-version.spec.ts
index 8b72e5f1bad2..ab92faf68f66 100644
--- a/packages/middleware-sdk-glacier/src/add-glacier-api-version.spec.ts
+++ b/packages/middleware-sdk-glacier/src/add-glacier-api-version.spec.ts
@@ -1,13 +1,14 @@
import { HttpRequest } from "@smithy/protocol-http";
+import { beforeEach, describe, expect, test as it, vi } from "vitest";
import { addGlacierApiVersionMiddleware } from "./add-glacier-api-version";
describe("addGlacierApiVersion", () => {
- const mockNextHandler = jest.fn();
- const unusedDep = jest.fn();
+ const mockNextHandler = vi.fn();
+ const unusedDep = vi.fn();
beforeEach(() => {
- jest.clearAllMocks();
+ vi.clearAllMocks();
});
const config = {
diff --git a/packages/middleware-sdk-glacier/src/index.spec.ts b/packages/middleware-sdk-glacier/src/index.spec.ts
index 811b496bc773..4c80ecc8c013 100644
--- a/packages/middleware-sdk-glacier/src/index.spec.ts
+++ b/packages/middleware-sdk-glacier/src/index.spec.ts
@@ -1,3 +1,5 @@
+import { describe, expect, test as it } from "vitest";
+
import {
accountIdDefaultMiddleware,
addChecksumHeadersMiddleware,
diff --git a/packages/middleware-sdk-glacier/src/middleware-sdk-glacier.integ.spec.ts b/packages/middleware-sdk-glacier/src/middleware-sdk-glacier.integ.spec.ts
index 595b0cb28e40..39964b82751c 100644
--- a/packages/middleware-sdk-glacier/src/middleware-sdk-glacier.integ.spec.ts
+++ b/packages/middleware-sdk-glacier/src/middleware-sdk-glacier.integ.spec.ts
@@ -1,4 +1,5 @@
import { Glacier } from "@aws-sdk/client-glacier";
+import { describe, expect, test as it } from "vitest";
import { requireRequestsFrom } from "../../../private/aws-util-test/src";
diff --git a/packages/middleware-sdk-glacier/vitest.config.integ.ts b/packages/middleware-sdk-glacier/vitest.config.integ.ts
new file mode 100644
index 000000000000..5802db1ac64a
--- /dev/null
+++ b/packages/middleware-sdk-glacier/vitest.config.integ.ts
@@ -0,0 +1,8 @@
+import { defineConfig } from "vitest/config";
+
+export default defineConfig({
+ test: {
+ include: ["**/*.integ.spec.ts"],
+ environment: "node",
+ },
+});
diff --git a/packages/middleware-sdk-glacier/vitest.config.ts b/packages/middleware-sdk-glacier/vitest.config.ts
new file mode 100644
index 000000000000..4e46707824a5
--- /dev/null
+++ b/packages/middleware-sdk-glacier/vitest.config.ts
@@ -0,0 +1,9 @@
+import { defineConfig } from "vitest/config";
+
+export default defineConfig({
+ test: {
+ exclude: ["**/*.{integ,e2e,browser}.spec.ts"],
+ include: ["**/*.spec.ts"],
+ environment: "node",
+ },
+});
diff --git a/packages/middleware-sdk-machinelearning/jest.config.integ.js b/packages/middleware-sdk-machinelearning/jest.config.integ.js
deleted file mode 100644
index d09aba7398c7..000000000000
--- a/packages/middleware-sdk-machinelearning/jest.config.integ.js
+++ /dev/null
@@ -1,4 +0,0 @@
-module.exports = {
- preset: "ts-jest",
- testMatch: ["**/*.integ.spec.ts"],
-};
diff --git a/packages/middleware-sdk-machinelearning/jest.config.js b/packages/middleware-sdk-machinelearning/jest.config.js
deleted file mode 100644
index a8d1c2e49912..000000000000
--- a/packages/middleware-sdk-machinelearning/jest.config.js
+++ /dev/null
@@ -1,5 +0,0 @@
-const base = require("../../jest.config.base.js");
-
-module.exports = {
- ...base,
-};
diff --git a/packages/middleware-sdk-machinelearning/package.json b/packages/middleware-sdk-machinelearning/package.json
index 3b71a9b66de6..efb1151e9aca 100644
--- a/packages/middleware-sdk-machinelearning/package.json
+++ b/packages/middleware-sdk-machinelearning/package.json
@@ -9,8 +9,10 @@
"build:types": "tsc -p tsconfig.types.json",
"build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4",
"clean": "rimraf ./dist-* && rimraf *.tsbuildinfo",
- "test": "jest",
- "test:integration": "jest -c jest.config.integ.js"
+ "test": "vitest run",
+ "test:integration": "vitest run -c vitest.config.integ.ts",
+ "test:watch": "vitest watch",
+ "test:integration:watch": "vitest watch -c vitest.config.integ.ts"
},
"main": "./dist-cjs/index.js",
"module": "./dist-es/index.js",
diff --git a/packages/middleware-sdk-machinelearning/src/index.spec.ts b/packages/middleware-sdk-machinelearning/src/index.spec.ts
index 361820dce602..74a218204cf9 100644
--- a/packages/middleware-sdk-machinelearning/src/index.spec.ts
+++ b/packages/middleware-sdk-machinelearning/src/index.spec.ts
@@ -1,3 +1,5 @@
+import { describe, expect, test as it } from "vitest";
+
import { getPredictEndpointPlugin, predictEndpointMiddleware } from "./index";
describe("middleware-sdk-machinelearning package exports", () => {
diff --git a/packages/middleware-sdk-machinelearning/src/middleware-sdk-machinelearning.integ.spec.ts b/packages/middleware-sdk-machinelearning/src/middleware-sdk-machinelearning.integ.spec.ts
index 10941b612e3c..3decb68c0d70 100644
--- a/packages/middleware-sdk-machinelearning/src/middleware-sdk-machinelearning.integ.spec.ts
+++ b/packages/middleware-sdk-machinelearning/src/middleware-sdk-machinelearning.integ.spec.ts
@@ -1,4 +1,5 @@
import { MachineLearning } from "@aws-sdk/client-machine-learning";
+import { describe, expect, test as it } from "vitest";
import { requireRequestsFrom } from "../../../private/aws-util-test/src";
diff --git a/packages/middleware-sdk-machinelearning/src/predict-endpoint.spec.ts b/packages/middleware-sdk-machinelearning/src/predict-endpoint.spec.ts
index 0008bc4a9ae9..8d51b1ffd035 100644
--- a/packages/middleware-sdk-machinelearning/src/predict-endpoint.spec.ts
+++ b/packages/middleware-sdk-machinelearning/src/predict-endpoint.spec.ts
@@ -1,14 +1,15 @@
import { HttpRequest } from "@smithy/protocol-http";
+import { beforeEach, describe, expect, test as it, vi } from "vitest";
import { predictEndpointMiddleware } from "./predict-endpoint";
describe("predictEndpointMiddleware", () => {
- const mockUrlParser = jest.fn().mockReturnValue({
+ const mockUrlParser = vi.fn().mockReturnValue({
hostname: "api.example.com",
path: "/foo/bar",
protocol: "http:",
});
- const next = jest.fn();
+ const next = vi.fn();
beforeEach(() => {
mockUrlParser.mockClear();
diff --git a/packages/middleware-sdk-machinelearning/vitest.config.integ.ts b/packages/middleware-sdk-machinelearning/vitest.config.integ.ts
new file mode 100644
index 000000000000..5802db1ac64a
--- /dev/null
+++ b/packages/middleware-sdk-machinelearning/vitest.config.integ.ts
@@ -0,0 +1,8 @@
+import { defineConfig } from "vitest/config";
+
+export default defineConfig({
+ test: {
+ include: ["**/*.integ.spec.ts"],
+ environment: "node",
+ },
+});
diff --git a/packages/middleware-sdk-machinelearning/vitest.config.ts b/packages/middleware-sdk-machinelearning/vitest.config.ts
new file mode 100644
index 000000000000..4e46707824a5
--- /dev/null
+++ b/packages/middleware-sdk-machinelearning/vitest.config.ts
@@ -0,0 +1,9 @@
+import { defineConfig } from "vitest/config";
+
+export default defineConfig({
+ test: {
+ exclude: ["**/*.{integ,e2e,browser}.spec.ts"],
+ include: ["**/*.spec.ts"],
+ environment: "node",
+ },
+});
diff --git a/packages/middleware-sdk-rds/jest.config.integ.js b/packages/middleware-sdk-rds/jest.config.integ.js
deleted file mode 100644
index d09aba7398c7..000000000000
--- a/packages/middleware-sdk-rds/jest.config.integ.js
+++ /dev/null
@@ -1,4 +0,0 @@
-module.exports = {
- preset: "ts-jest",
- testMatch: ["**/*.integ.spec.ts"],
-};
diff --git a/packages/middleware-sdk-rds/jest.config.js b/packages/middleware-sdk-rds/jest.config.js
deleted file mode 100644
index a8d1c2e49912..000000000000
--- a/packages/middleware-sdk-rds/jest.config.js
+++ /dev/null
@@ -1,5 +0,0 @@
-const base = require("../../jest.config.base.js");
-
-module.exports = {
- ...base,
-};
diff --git a/packages/middleware-sdk-rds/package.json b/packages/middleware-sdk-rds/package.json
index d02c7efbba7a..809e30f3de03 100644
--- a/packages/middleware-sdk-rds/package.json
+++ b/packages/middleware-sdk-rds/package.json
@@ -9,8 +9,10 @@
"build:types": "tsc -p tsconfig.types.json",
"build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4",
"clean": "rimraf ./dist-* && rimraf *.tsbuildinfo",
- "test": "jest",
- "test:integration": "jest --config jest.config.integ.js"
+ "test": "vitest run",
+ "test:integration": "vitest run -c vitest.config.integ.ts",
+ "test:watch": "vitest watch",
+ "test:integration:watch": "vitest watch -c vitest.config.integ.ts"
},
"main": "./dist-cjs/index.js",
"module": "./dist-es/index.js",
diff --git a/packages/middleware-sdk-rds/src/index.spec.ts b/packages/middleware-sdk-rds/src/index.spec.ts
index 7134cf8002e5..b82d683cecb5 100644
--- a/packages/middleware-sdk-rds/src/index.spec.ts
+++ b/packages/middleware-sdk-rds/src/index.spec.ts
@@ -1,7 +1,9 @@
+import { beforeEach, describe, expect, test as it, vi } from "vitest";
+
import { crossRegionPresignedUrlMiddleware } from "./";
import { credentials, endpoint, MockSha256, region } from "./fixture";
-const nextHandler = jest.fn();
+const nextHandler = vi.fn();
const arn = "arn:aws:rds:src-region:000000000000:src-snapshot:dist-snapshot";
const arnSameRegion = "arn:aws:rds:mock-region:000000000000:src-snapshot:dist-snapshot";
const sourceIdentifier = "src-snapshot";
@@ -16,7 +18,7 @@ const handler = crossRegionPresignedUrlMiddleware({
describe("middleware-sdk-rds", () => {
beforeEach(() => {
- jest.clearAllMocks();
+ vi.clearAllMocks();
});
it("should build CopyDBSnapshot cross origin presigned url correctly ", async () => {
diff --git a/packages/middleware-sdk-rds/src/middleware-sdk-rds.integ.spec.ts b/packages/middleware-sdk-rds/src/middleware-sdk-rds.integ.spec.ts
index 7a9af75243ba..8825c6671171 100644
--- a/packages/middleware-sdk-rds/src/middleware-sdk-rds.integ.spec.ts
+++ b/packages/middleware-sdk-rds/src/middleware-sdk-rds.integ.spec.ts
@@ -1,4 +1,5 @@
import { RDS } from "@aws-sdk/client-rds";
+import { describe, expect, expect, test as it } from "vitest";
import { TestHttpHandler } from "../../../private/aws-util-test/src";
diff --git a/packages/middleware-sdk-rds/vitest.config.integ.ts b/packages/middleware-sdk-rds/vitest.config.integ.ts
new file mode 100644
index 000000000000..5802db1ac64a
--- /dev/null
+++ b/packages/middleware-sdk-rds/vitest.config.integ.ts
@@ -0,0 +1,8 @@
+import { defineConfig } from "vitest/config";
+
+export default defineConfig({
+ test: {
+ include: ["**/*.integ.spec.ts"],
+ environment: "node",
+ },
+});
diff --git a/packages/middleware-sdk-rds/vitest.config.ts b/packages/middleware-sdk-rds/vitest.config.ts
new file mode 100644
index 000000000000..4e46707824a5
--- /dev/null
+++ b/packages/middleware-sdk-rds/vitest.config.ts
@@ -0,0 +1,9 @@
+import { defineConfig } from "vitest/config";
+
+export default defineConfig({
+ test: {
+ exclude: ["**/*.{integ,e2e,browser}.spec.ts"],
+ include: ["**/*.spec.ts"],
+ environment: "node",
+ },
+});
diff --git a/packages/middleware-sdk-route53/jest.config.integ.js b/packages/middleware-sdk-route53/jest.config.integ.js
deleted file mode 100644
index d09aba7398c7..000000000000
--- a/packages/middleware-sdk-route53/jest.config.integ.js
+++ /dev/null
@@ -1,4 +0,0 @@
-module.exports = {
- preset: "ts-jest",
- testMatch: ["**/*.integ.spec.ts"],
-};
diff --git a/packages/middleware-sdk-route53/jest.config.js b/packages/middleware-sdk-route53/jest.config.js
deleted file mode 100644
index a8d1c2e49912..000000000000
--- a/packages/middleware-sdk-route53/jest.config.js
+++ /dev/null
@@ -1,5 +0,0 @@
-const base = require("../../jest.config.base.js");
-
-module.exports = {
- ...base,
-};
diff --git a/packages/middleware-sdk-route53/package.json b/packages/middleware-sdk-route53/package.json
index b1b4697b5812..a821717a00d3 100644
--- a/packages/middleware-sdk-route53/package.json
+++ b/packages/middleware-sdk-route53/package.json
@@ -9,8 +9,10 @@
"build:types": "tsc -p tsconfig.types.json",
"build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4",
"clean": "rimraf ./dist-* && rimraf *.tsbuildinfo",
- "test": "jest",
- "test:integration": "jest -c jest.config.integ.js"
+ "test": "vitest run",
+ "test:integration": "vitest run -c vitest.config.integ.ts",
+ "test:watch": "vitest watch",
+ "test:integration:watch": "vitest watch -c vitest.config.integ.ts"
},
"main": "./dist-cjs/index.js",
"module": "./dist-es/index.js",
diff --git a/packages/middleware-sdk-route53/src/change-resource-record-sets.spec.ts b/packages/middleware-sdk-route53/src/change-resource-record-sets.spec.ts
index 7835cbc7a203..933a8c91624d 100644
--- a/packages/middleware-sdk-route53/src/change-resource-record-sets.spec.ts
+++ b/packages/middleware-sdk-route53/src/change-resource-record-sets.spec.ts
@@ -1,3 +1,5 @@
+import { describe, expect, test as it, vi } from "vitest";
+
import { changeResourceRecordSetsMiddleware } from "./change-resource-record-sets";
const prefixedProps = ["/hostedzone/ID", "/change/ID", "/delegationset/ID"];
@@ -5,7 +7,7 @@ const prefixedProps = ["/hostedzone/ID", "/change/ID", "/delegationset/ID"];
describe("changeResourceRecordSetsMiddleware", () => {
for (const prefixed of prefixedProps) {
it(`should strip the prefix from the ChangeBatch.Changes[*].ResourceRecordSet.AliasTarget.HostedZoneId parameter`, async () => {
- const next = jest.fn();
+ const next = vi.fn();
const input = {
ChangeBatch: {
Changes: (function* () {
diff --git a/packages/middleware-sdk-route53/src/id-normalizer.spec.ts b/packages/middleware-sdk-route53/src/id-normalizer.spec.ts
index e8f8ea787320..f2a40a337ee3 100644
--- a/packages/middleware-sdk-route53/src/id-normalizer.spec.ts
+++ b/packages/middleware-sdk-route53/src/id-normalizer.spec.ts
@@ -1,3 +1,5 @@
+import { describe, expect, test as it, vi } from "vitest";
+
import { idNormalizerMiddleware } from "./id-normalizer";
const prefixedProps = ["/hostedzone/ID", "/change/ID", "/delegationset/ID"];
@@ -7,7 +9,7 @@ describe("idNormalizerMiddleware", () => {
for (const paramName of idParams) {
for (const prefixed of prefixedProps) {
it(`should strip the prefix from the ${paramName} parameter`, async () => {
- const next = jest.fn();
+ const next = vi.fn();
const input = { [paramName]: prefixed };
const handler = idNormalizerMiddleware()(next, {} as any);
diff --git a/packages/middleware-sdk-route53/src/index.spec.ts b/packages/middleware-sdk-route53/src/index.spec.ts
index aa4a90613fec..920ddfbbb6ea 100644
--- a/packages/middleware-sdk-route53/src/index.spec.ts
+++ b/packages/middleware-sdk-route53/src/index.spec.ts
@@ -1,3 +1,5 @@
+import { describe, expect, test as it } from "vitest";
+
import {
changeResourceRecordSetsMiddleware,
getChangeResourceRecordSetsPlugin,
diff --git a/packages/middleware-sdk-route53/src/middleware-sdk-route53.integ.spec.ts b/packages/middleware-sdk-route53/src/middleware-sdk-route53.integ.spec.ts
index 8fea9f7e35fe..db1cc54faf30 100644
--- a/packages/middleware-sdk-route53/src/middleware-sdk-route53.integ.spec.ts
+++ b/packages/middleware-sdk-route53/src/middleware-sdk-route53.integ.spec.ts
@@ -1,5 +1,6 @@
import { Route53 } from "@aws-sdk/client-route-53";
import { XMLParser } from "fast-xml-parser";
+import { describe, expect, expect, test as it } from "vitest";
import { requireRequestsFrom } from "../../../private/aws-util-test/src";
diff --git a/packages/middleware-sdk-route53/vitest.config.integ.ts b/packages/middleware-sdk-route53/vitest.config.integ.ts
new file mode 100644
index 000000000000..5802db1ac64a
--- /dev/null
+++ b/packages/middleware-sdk-route53/vitest.config.integ.ts
@@ -0,0 +1,8 @@
+import { defineConfig } from "vitest/config";
+
+export default defineConfig({
+ test: {
+ include: ["**/*.integ.spec.ts"],
+ environment: "node",
+ },
+});
diff --git a/packages/middleware-sdk-route53/vitest.config.ts b/packages/middleware-sdk-route53/vitest.config.ts
new file mode 100644
index 000000000000..4e46707824a5
--- /dev/null
+++ b/packages/middleware-sdk-route53/vitest.config.ts
@@ -0,0 +1,9 @@
+import { defineConfig } from "vitest/config";
+
+export default defineConfig({
+ test: {
+ exclude: ["**/*.{integ,e2e,browser}.spec.ts"],
+ include: ["**/*.spec.ts"],
+ environment: "node",
+ },
+});
diff --git a/packages/middleware-sdk-s3-control/jest.config.integ.js b/packages/middleware-sdk-s3-control/jest.config.integ.js
deleted file mode 100644
index d09aba7398c7..000000000000
--- a/packages/middleware-sdk-s3-control/jest.config.integ.js
+++ /dev/null
@@ -1,4 +0,0 @@
-module.exports = {
- preset: "ts-jest",
- testMatch: ["**/*.integ.spec.ts"],
-};
diff --git a/packages/middleware-sdk-s3-control/jest.config.js b/packages/middleware-sdk-s3-control/jest.config.js
deleted file mode 100644
index a8d1c2e49912..000000000000
--- a/packages/middleware-sdk-s3-control/jest.config.js
+++ /dev/null
@@ -1,5 +0,0 @@
-const base = require("../../jest.config.base.js");
-
-module.exports = {
- ...base,
-};
diff --git a/packages/middleware-sdk-s3-control/package.json b/packages/middleware-sdk-s3-control/package.json
index 039c5b82e09a..11a49c53b6e0 100644
--- a/packages/middleware-sdk-s3-control/package.json
+++ b/packages/middleware-sdk-s3-control/package.json
@@ -9,9 +9,11 @@
"build:types": "tsc -p tsconfig.types.json",
"build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4",
"clean": "rimraf ./dist-* && rimraf *.tsbuildinfo",
- "test": "jest",
- "test:integration": "jest -c jest.config.integ.js",
- "extract:docs": "api-extractor run --local"
+ "test": "vitest run",
+ "test:integration": "vitest run -c vitest.config.integ.ts",
+ "extract:docs": "api-extractor run --local",
+ "test:watch": "vitest watch",
+ "test:integration:watch": "vitest watch -c vitest.config.integ.ts"
},
"main": "./dist-cjs/index.js",
"module": "./dist-es/index.js",
diff --git a/packages/middleware-sdk-s3-control/src/host-prefix-deduplication/deduplicateHostPrefix.spec.ts b/packages/middleware-sdk-s3-control/src/host-prefix-deduplication/deduplicateHostPrefix.spec.ts
index 6d1c6c250d88..c1b4c231014b 100644
--- a/packages/middleware-sdk-s3-control/src/host-prefix-deduplication/deduplicateHostPrefix.spec.ts
+++ b/packages/middleware-sdk-s3-control/src/host-prefix-deduplication/deduplicateHostPrefix.spec.ts
@@ -1,3 +1,5 @@
+import { describe, expect, test as it } from "vitest";
+
import { deduplicateHostPrefix } from "./deduplicateHostPrefix";
describe(deduplicateHostPrefix.name, () => {
diff --git a/packages/middleware-sdk-s3-control/src/middleware-sdk-s3-control.integ.spec.ts b/packages/middleware-sdk-s3-control/src/middleware-sdk-s3-control.integ.spec.ts
index 9c0fd10e32c5..186a362de21d 100644
--- a/packages/middleware-sdk-s3-control/src/middleware-sdk-s3-control.integ.spec.ts
+++ b/packages/middleware-sdk-s3-control/src/middleware-sdk-s3-control.integ.spec.ts
@@ -1,4 +1,5 @@
import { S3Control } from "@aws-sdk/client-s3-control";
+import { describe, expect, test as it } from "vitest";
import { requireRequestsFrom } from "../../../private/aws-util-test/src";
diff --git a/packages/middleware-sdk-s3-control/src/process-arnables-plugin/getOutpostEndpoint.spec.ts b/packages/middleware-sdk-s3-control/src/process-arnables-plugin/getOutpostEndpoint.spec.ts
index d4fc5b3138a2..c25d1956bf62 100644
--- a/packages/middleware-sdk-s3-control/src/process-arnables-plugin/getOutpostEndpoint.spec.ts
+++ b/packages/middleware-sdk-s3-control/src/process-arnables-plugin/getOutpostEndpoint.spec.ts
@@ -1,3 +1,5 @@
+import { describe, expect, test as it } from "vitest";
+
import { getOutpostEndpoint } from "./getOutpostEndpoint";
describe(getOutpostEndpoint.name, () => {
diff --git a/packages/middleware-sdk-s3-control/src/process-arnables-plugin/getProcessArnablesPlugin.spec.ts b/packages/middleware-sdk-s3-control/src/process-arnables-plugin/getProcessArnablesPlugin.spec.ts
index 2de3a578dd41..eaa978f28731 100644
--- a/packages/middleware-sdk-s3-control/src/process-arnables-plugin/getProcessArnablesPlugin.spec.ts
+++ b/packages/middleware-sdk-s3-control/src/process-arnables-plugin/getProcessArnablesPlugin.spec.ts
@@ -1,6 +1,7 @@
import { constructStack } from "@smithy/middleware-stack";
import { HttpRequest } from "@smithy/protocol-http";
import { Provider, RegionInfo } from "@smithy/types";
+import { beforeEach, describe, expect, expect, test as it, vi } from "vitest";
import { S3ControlResolvedConfig } from "../configurations";
import { getProcessArnablesPlugin } from "./getProcessArnablesPlugin";
@@ -19,9 +20,9 @@ describe("getProcessArnablesMiddleware", () => {
useFipsEndpoint: () => Promise.resolve(false),
useDualstackEndpoint: () => Promise.resolve(false),
...options,
- regionInfoProvider: options.regionInfoProvider ?? jest.fn().mockResolvedValue({ partition: "aws" }),
- region: jest.fn().mockResolvedValue(options.region),
- useArnRegion: jest.fn().mockResolvedValue(options.useArnRegion ?? false),
+ regionInfoProvider: options.regionInfoProvider ?? vi.fn().mockResolvedValue({ partition: "aws" }),
+ region: vi.fn().mockResolvedValue(options.region),
+ useArnRegion: vi.fn().mockResolvedValue(options.useArnRegion ?? false),
isCustomEndpoint: false,
};
};
@@ -57,7 +58,7 @@ describe("getProcessArnablesMiddleware", () => {
};
beforeEach(() => {
- jest.clearAllMocks();
+ vi.clearAllMocks();
});
describe("Outposts Access Point Arn", () => {
diff --git a/packages/middleware-sdk-s3-control/src/redirect-from-postid.spec.ts b/packages/middleware-sdk-s3-control/src/redirect-from-postid.spec.ts
index 8264b76deb4c..4c999940ed3e 100644
--- a/packages/middleware-sdk-s3-control/src/redirect-from-postid.spec.ts
+++ b/packages/middleware-sdk-s3-control/src/redirect-from-postid.spec.ts
@@ -1,4 +1,5 @@
import { HttpRequest } from "@smithy/protocol-http";
+import { describe, expect, test as it } from "vitest";
import { redirectFromPostIdMiddleware } from "./redirect-from-postid";
diff --git a/packages/middleware-sdk-s3-control/vitest.config.integ.ts b/packages/middleware-sdk-s3-control/vitest.config.integ.ts
new file mode 100644
index 000000000000..5802db1ac64a
--- /dev/null
+++ b/packages/middleware-sdk-s3-control/vitest.config.integ.ts
@@ -0,0 +1,8 @@
+import { defineConfig } from "vitest/config";
+
+export default defineConfig({
+ test: {
+ include: ["**/*.integ.spec.ts"],
+ environment: "node",
+ },
+});
diff --git a/packages/middleware-sdk-s3-control/vitest.config.ts b/packages/middleware-sdk-s3-control/vitest.config.ts
new file mode 100644
index 000000000000..4e46707824a5
--- /dev/null
+++ b/packages/middleware-sdk-s3-control/vitest.config.ts
@@ -0,0 +1,9 @@
+import { defineConfig } from "vitest/config";
+
+export default defineConfig({
+ test: {
+ exclude: ["**/*.{integ,e2e,browser}.spec.ts"],
+ include: ["**/*.spec.ts"],
+ environment: "node",
+ },
+});
diff --git a/packages/middleware-sdk-s3/jest.config.e2e.js b/packages/middleware-sdk-s3/jest.config.e2e.js
deleted file mode 100644
index b4d9bee23f48..000000000000
--- a/packages/middleware-sdk-s3/jest.config.e2e.js
+++ /dev/null
@@ -1,4 +0,0 @@
-module.exports = {
- preset: "ts-jest",
- testMatch: ["**/*.e2e.spec.ts"],
-};
diff --git a/packages/middleware-sdk-s3/jest.config.integ.js b/packages/middleware-sdk-s3/jest.config.integ.js
deleted file mode 100644
index d09aba7398c7..000000000000
--- a/packages/middleware-sdk-s3/jest.config.integ.js
+++ /dev/null
@@ -1,4 +0,0 @@
-module.exports = {
- preset: "ts-jest",
- testMatch: ["**/*.integ.spec.ts"],
-};
diff --git a/packages/middleware-sdk-s3/jest.config.js b/packages/middleware-sdk-s3/jest.config.js
deleted file mode 100644
index a8d1c2e49912..000000000000
--- a/packages/middleware-sdk-s3/jest.config.js
+++ /dev/null
@@ -1,5 +0,0 @@
-const base = require("../../jest.config.base.js");
-
-module.exports = {
- ...base,
-};
diff --git a/packages/middleware-sdk-s3/package.json b/packages/middleware-sdk-s3/package.json
index 39afb34941ea..96647c9e0721 100644
--- a/packages/middleware-sdk-s3/package.json
+++ b/packages/middleware-sdk-s3/package.json
@@ -9,10 +9,13 @@
"build:types": "tsc -p tsconfig.types.json",
"build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4",
"clean": "rimraf ./dist-* && rimraf *.tsbuildinfo",
- "test": "jest",
- "test:integration": "jest -c jest.config.integ.js",
- "test:e2e": "jest -c jest.config.e2e.js",
- "extract:docs": "api-extractor run --local"
+ "test": "vitest run",
+ "test:integration": "vitest run -c vitest.config.integ.ts",
+ "test:e2e": "vitest run -c vitest.config.e2e.ts",
+ "extract:docs": "api-extractor run --local",
+ "test:watch": "vitest watch",
+ "test:integration:watch": "vitest watch -c vitest.config.integ.ts",
+ "test:e2e:watch": "vitest watch -c vitest.config.e2e.ts"
},
"main": "./dist-cjs/index.js",
"module": "./dist-es/index.js",
diff --git a/packages/middleware-sdk-s3/src/check-content-length-header.spec.ts b/packages/middleware-sdk-s3/src/check-content-length-header.spec.ts
index 57f3ec28f402..27ed5c258ad5 100644
--- a/packages/middleware-sdk-s3/src/check-content-length-header.spec.ts
+++ b/packages/middleware-sdk-s3/src/check-content-length-header.spec.ts
@@ -1,18 +1,19 @@
import { NoOpLogger } from "@smithy/smithy-client";
+import { afterEach, beforeEach, describe, expect, test as it, vi } from "vitest";
import { checkContentLengthHeader } from "./check-content-length-header";
describe("checkContentLengthHeaderMiddleware", () => {
- const mockNextHandler = jest.fn();
+ const mockNextHandler = vi.fn();
- let spy: jest.SpyInstance;
+ let spy: vi.SpyInstance;
beforeEach(() => {
- spy = jest.spyOn(console, "warn");
+ spy = vi.spyOn(console, "warn");
});
afterEach(() => {
- jest.clearAllMocks();
+ vi.clearAllMocks();
});
it("warns if uploading a payload of unknown length", async () => {
diff --git a/packages/middleware-sdk-s3/src/middleware-sdk-s3.integ.spec.ts b/packages/middleware-sdk-s3/src/middleware-sdk-s3.integ.spec.ts
index b94232466f6f..6e619da79e69 100644
--- a/packages/middleware-sdk-s3/src/middleware-sdk-s3.integ.spec.ts
+++ b/packages/middleware-sdk-s3/src/middleware-sdk-s3.integ.spec.ts
@@ -1,4 +1,5 @@
import { S3 } from "@aws-sdk/client-s3";
+import { describe, expect, expect, test as it, vi } from "vitest";
import { requireRequestsFrom } from "../../../private/aws-util-test/src";
@@ -33,11 +34,11 @@ describe("middleware-sdk-s3", () => {
const client = new S3({
region: "us-west-2",
logger: Object.assign({
- trace: jest.fn(),
- debug: jest.fn(),
- info: jest.fn(),
- warn: jest.fn(),
- error: jest.fn(),
+ trace: vi.fn(),
+ debug: vi.fn(),
+ info: vi.fn(),
+ warn: vi.fn(),
+ error: vi.fn(),
}),
});
diff --git a/packages/middleware-sdk-s3/src/region-redirect-middleware.e2e.spec.ts b/packages/middleware-sdk-s3/src/region-redirect-middleware.e2e.spec.ts
index c7267bb4f878..78ef2589452d 100644
--- a/packages/middleware-sdk-s3/src/region-redirect-middleware.e2e.spec.ts
+++ b/packages/middleware-sdk-s3/src/region-redirect-middleware.e2e.spec.ts
@@ -1,7 +1,6 @@
import { S3 } from "@aws-sdk/client-s3";
import { GetCallerIdentityCommandOutput, STS } from "@aws-sdk/client-sts";
-
-jest.setTimeout(100000);
+import { afterAll, beforeAll, describe, expect, test as it } from "vitest";
const testValue = "Hello S3 global client!";
@@ -65,7 +64,7 @@ describe("S3 Global Client Test", () => {
}
}
});
-});
+}, 100_000);
async function deleteBucket(s3: S3, bucketName: string) {
const Bucket = bucketName;
diff --git a/packages/middleware-sdk-s3/src/region-redirect-middleware.spec.ts b/packages/middleware-sdk-s3/src/region-redirect-middleware.spec.ts
index 3b30b8827de2..b755f360397b 100644
--- a/packages/middleware-sdk-s3/src/region-redirect-middleware.spec.ts
+++ b/packages/middleware-sdk-s3/src/region-redirect-middleware.spec.ts
@@ -1,4 +1,5 @@
import { HandlerExecutionContext } from "@smithy/types";
+import { beforeEach, describe, expect, test as it } from "vitest";
import { regionRedirectMiddleware } from "./region-redirect-middleware";
diff --git a/packages/middleware-sdk-s3/src/s3-expires-middleware.e2e.spec.ts b/packages/middleware-sdk-s3/src/s3-expires-middleware.e2e.spec.ts
index 6b7ca0f78e8b..ff45d623bfea 100644
--- a/packages/middleware-sdk-s3/src/s3-expires-middleware.e2e.spec.ts
+++ b/packages/middleware-sdk-s3/src/s3-expires-middleware.e2e.spec.ts
@@ -1,7 +1,6 @@
import { S3 } from "@aws-sdk/client-s3";
import { GetCallerIdentityCommandOutput, STS } from "@aws-sdk/client-sts";
-
-jest.setTimeout(25000);
+import { afterAll, beforeAll, describe, expect, test as it, vi } from "vitest";
describe("S3 Expires e2e test", () => {
const s3 = new S3({
@@ -10,7 +9,7 @@ describe("S3 Expires e2e test", () => {
trace() {},
debug() {},
info() {},
- warn: jest.fn(),
+ warn: vi.fn(),
error() {},
},
});
@@ -77,7 +76,7 @@ describe("S3 Expires e2e test", () => {
);
expect(get.ExpiresString).toEqual("undefined, NaN undefined NaN NaN:NaN:NaN GMT");
});
-});
+}, 25_000);
async function deleteBucket(s3: S3, bucketName: string) {
const Bucket = bucketName;
diff --git a/packages/middleware-sdk-s3/src/s3-express/classes/S3ExpressIdentityCache.spec.ts b/packages/middleware-sdk-s3/src/s3-express/classes/S3ExpressIdentityCache.spec.ts
index 800a952cf5e4..1f0dee83fb5d 100644
--- a/packages/middleware-sdk-s3/src/s3-express/classes/S3ExpressIdentityCache.spec.ts
+++ b/packages/middleware-sdk-s3/src/s3-express/classes/S3ExpressIdentityCache.spec.ts
@@ -1,3 +1,5 @@
+import { afterAll, describe, expect, test as it } from "vitest";
+
import { S3ExpressIdentityCache } from "./S3ExpressIdentityCache";
import { S3ExpressIdentityCacheEntry } from "./S3ExpressIdentityCacheEntry";
diff --git a/packages/middleware-sdk-s3/src/s3-express/classes/S3ExpressIdentityCacheEntry.spec.ts b/packages/middleware-sdk-s3/src/s3-express/classes/S3ExpressIdentityCacheEntry.spec.ts
index 28f2937f5e8d..60ddc0124cbc 100644
--- a/packages/middleware-sdk-s3/src/s3-express/classes/S3ExpressIdentityCacheEntry.spec.ts
+++ b/packages/middleware-sdk-s3/src/s3-express/classes/S3ExpressIdentityCacheEntry.spec.ts
@@ -1,3 +1,5 @@
+import { describe, expect, test as it } from "vitest";
+
import { S3ExpressIdentityCacheEntry } from "./S3ExpressIdentityCacheEntry";
describe(S3ExpressIdentityCacheEntry.name, () => {
diff --git a/packages/middleware-sdk-s3/src/s3-express/classes/S3ExpressIdentityProviderImpl.spec.ts b/packages/middleware-sdk-s3/src/s3-express/classes/S3ExpressIdentityProviderImpl.spec.ts
index 7dc2521b7dca..d31c6bb91609 100644
--- a/packages/middleware-sdk-s3/src/s3-express/classes/S3ExpressIdentityProviderImpl.spec.ts
+++ b/packages/middleware-sdk-s3/src/s3-express/classes/S3ExpressIdentityProviderImpl.spec.ts
@@ -1,3 +1,5 @@
+import { describe, expect, test as it, vi } from "vitest";
+
import { S3ExpressIdentityProviderImpl } from "./S3ExpressIdentityProviderImpl";
describe(S3ExpressIdentityProviderImpl.name, () => {
@@ -19,7 +21,7 @@ describe(S3ExpressIdentityProviderImpl.name, () => {
describe(S3ExpressIdentityProviderImpl.prototype.getS3ExpressIdentity.name, () => {
it("calls getIdentity when cache is empty", async () => {
- const createSessionFn = jest.fn().mockImplementation(async () => ({ Credentials }));
+ const createSessionFn = vi.fn().mockImplementation(async () => ({ Credentials }));
const identityProvider = new S3ExpressIdentityProviderImpl(createSessionFn);
const identity = await identityProvider.getS3ExpressIdentity(s3ExpressCredentials, { Bucket: "Bucky" });
@@ -28,7 +30,7 @@ describe(S3ExpressIdentityProviderImpl.name, () => {
});
it("returns cached entries", async () => {
- const createSessionFn = jest.fn().mockImplementation(async () => ({ Credentials }));
+ const createSessionFn = vi.fn().mockImplementation(async () => ({ Credentials }));
const identityProvider = new S3ExpressIdentityProviderImpl(createSessionFn);
const identity = await identityProvider.getS3ExpressIdentity(s3ExpressCredentials, { Bucket: "Bucky" });
diff --git a/packages/middleware-sdk-s3/src/s3-express/classes/SignatureV4S3Express.spec.ts b/packages/middleware-sdk-s3/src/s3-express/classes/SignatureV4S3Express.spec.ts
index ce3be18c666b..8f84439bd279 100644
--- a/packages/middleware-sdk-s3/src/s3-express/classes/SignatureV4S3Express.spec.ts
+++ b/packages/middleware-sdk-s3/src/s3-express/classes/SignatureV4S3Express.spec.ts
@@ -1,7 +1,8 @@
+import { describe, expect, test as it } from "vitest";
+
// import { Hash } from "@smithy/hash-node";
// import { HttpRequest } from "@smithy/protocol-http";
// import { SignatureV4 } from "@smithy/signature-v4";
-
// import { SESSION_TOKEN_HEADER } from "../constants";
import { SignatureV4S3Express } from "./SignatureV4S3Express";
diff --git a/packages/middleware-sdk-s3/src/s3-express/functions/s3ExpressMiddleware.spec.ts b/packages/middleware-sdk-s3/src/s3-express/functions/s3ExpressMiddleware.spec.ts
index df805e78129e..814d82530d25 100644
--- a/packages/middleware-sdk-s3/src/s3-express/functions/s3ExpressMiddleware.spec.ts
+++ b/packages/middleware-sdk-s3/src/s3-express/functions/s3ExpressMiddleware.spec.ts
@@ -1,3 +1,5 @@
+import { describe, test as it } from "vitest";
+
import { s3ExpressMiddleware } from "./s3ExpressMiddleware";
describe(s3ExpressMiddleware.name, () => {
diff --git a/packages/middleware-sdk-s3/src/s3-express/middleware-s3-express.e2e.spec.ts b/packages/middleware-sdk-s3/src/s3-express/middleware-s3-express.e2e.spec.ts
index 24fb6032d268..971236036213 100644
--- a/packages/middleware-sdk-s3/src/s3-express/middleware-s3-express.e2e.spec.ts
+++ b/packages/middleware-sdk-s3/src/s3-express/middleware-s3-express.e2e.spec.ts
@@ -3,14 +3,13 @@ import { STS } from "@aws-sdk/client-sts";
import { getSignedUrl } from "@aws-sdk/s3-request-presigner";
import http from "http";
import https from "https";
+import { afterAll, beforeAll, describe, expect, test as it } from "vitest";
const region = "us-east-1";
const zone = "use1-az6";
const suffix = `${zone}--x-s3`;
describe("s3 express CRUD test suite", () => {
- jest.setTimeout(30000);
-
let s3: S3; // test subject.
let controller: S3; // separate test-assistant client.
let bucketName: string; // test bucket (temp)
@@ -147,7 +146,7 @@ describe("s3 express CRUD test suite", () => {
expect(data).toEqual("abcd");
});
- xit("can presign put", async () => {
+ it.skip("can presign put", async () => {
const body = Buffer.from("abcd");
const putObject = new PutObjectCommand({
Bucket: bucketName,
@@ -187,7 +186,7 @@ describe("s3 express CRUD test suite", () => {
expect(data).toEqual("xyz");
});
-});
+}, 30_000);
async function createClientAndRecorder() {
const sts = new STS({ region });
@@ -218,9 +217,7 @@ async function createClientAndRecorder() {
const commandName = context.commandName + s3ExpressSuffix;
const input = args.input;
const commandRecorder = (recorder.calls[commandName] = recorder.calls[commandName] ?? {});
- // @ts-expect-error Element implicitly has an 'any' type
commandRecorder[input["Bucket"] ?? "-"] |= 0;
- // @ts-expect-error Element implicitly has an 'any' type
commandRecorder[input["Bucket"] ?? "-"]++;
return continuation;
diff --git a/packages/middleware-sdk-s3/src/s3-express/middleware-s3-express.integ.spec.ts b/packages/middleware-sdk-s3/src/s3-express/middleware-s3-express.integ.spec.ts
index e969678effe7..7b3727f83959 100644
--- a/packages/middleware-sdk-s3/src/s3-express/middleware-s3-express.integ.spec.ts
+++ b/packages/middleware-sdk-s3/src/s3-express/middleware-s3-express.integ.spec.ts
@@ -1,5 +1,6 @@
import { S3 } from "@aws-sdk/client-s3";
import { AwsCredentialIdentity } from "@aws-sdk/types";
+import { describe, expect, expect, test as it } from "vitest";
import { requireRequestsFrom } from "../../../../private/aws-util-test/src";
import { S3ExpressIdentity, S3ExpressIdentityProvider } from "./index";
diff --git a/packages/middleware-sdk-s3/src/s3-type-transforms.integ.spec.ts b/packages/middleware-sdk-s3/src/s3-type-transforms.integ.spec.ts
index a8e9430be877..723130fa0526 100644
--- a/packages/middleware-sdk-s3/src/s3-type-transforms.integ.spec.ts
+++ b/packages/middleware-sdk-s3/src/s3-type-transforms.integ.spec.ts
@@ -1,5 +1,6 @@
import { GetObjectCommand, GetObjectCommandInput, S3, S3Client } from "@aws-sdk/client-s3";
import type { AssertiveClient, BrowserClient, NodeJsClient, NoUndefined, UncheckedClient } from "@smithy/types";
+import { describe, test as it } from "vitest";
describe("S3 client transform integration test", () => {
it("has the expected compilation behavior", async () => {
diff --git a/packages/middleware-sdk-s3/src/throw-200-exceptions.e2e.spec.ts b/packages/middleware-sdk-s3/src/throw-200-exceptions.e2e.spec.ts
index c4e32a64bb91..8ef2d004fb42 100644
--- a/packages/middleware-sdk-s3/src/throw-200-exceptions.e2e.spec.ts
+++ b/packages/middleware-sdk-s3/src/throw-200-exceptions.e2e.spec.ts
@@ -1,7 +1,6 @@
import { S3 } from "@aws-sdk/client-s3";
import { GetCallerIdentityCommandOutput, STS } from "@aws-sdk/client-sts";
-
-jest.setTimeout(100000);
+import { afterAll, beforeAll, describe, test as it } from "vitest";
describe("S3 throw 200 exceptions", () => {
const config = {
@@ -54,4 +53,4 @@ describe("S3 throw 200 exceptions", () => {
});
}
});
-});
+}, 100_000);
diff --git a/packages/middleware-sdk-s3/src/throw-200-exceptions.spec.ts b/packages/middleware-sdk-s3/src/throw-200-exceptions.spec.ts
index 031631803c4c..ab8b0ce09ad9 100644
--- a/packages/middleware-sdk-s3/src/throw-200-exceptions.spec.ts
+++ b/packages/middleware-sdk-s3/src/throw-200-exceptions.spec.ts
@@ -1,18 +1,19 @@
import { HttpRequest, HttpResponse } from "@smithy/protocol-http";
import { toUtf8 } from "@smithy/util-utf8";
import { Readable } from "stream";
+import { beforeEach, describe, expect, expect, test as it, vi } from "vitest";
import { throw200ExceptionsMiddleware } from "./throw-200-exceptions";
describe("throw200ExceptionsMiddlewareOptions", () => {
- const mockNextHandler = jest.fn();
- const mockResponse = jest.fn();
+ const mockNextHandler = vi.fn();
+ const mockResponse = vi.fn();
const mockConfig = {
utf8Encoder: toUtf8,
};
beforeEach(() => {
- jest.clearAllMocks();
+ vi.clearAllMocks();
});
describe("tests for statusCode < 200 and >= 300", () => {
diff --git a/packages/middleware-sdk-s3/src/validate-bucket-name.spec.ts b/packages/middleware-sdk-s3/src/validate-bucket-name.spec.ts
index b0864379f881..e0a5fb5c112e 100644
--- a/packages/middleware-sdk-s3/src/validate-bucket-name.spec.ts
+++ b/packages/middleware-sdk-s3/src/validate-bucket-name.spec.ts
@@ -1,13 +1,17 @@
-const mockValidateArn = jest.fn();
-jest.mock("@aws-sdk/util-arn-parser", () => ({ validate: mockValidateArn }));
+import { beforeEach, describe, expect, test as it, vi } from "vitest";
+
+vi.mock("@aws-sdk/util-arn-parser", () => ({ validate: vi.fn() }));
+
+import { validate } from "@aws-sdk/util-arn-parser";
+
import { validateBucketNameMiddleware } from "./validate-bucket-name";
describe("validateBucketNameMiddleware", () => {
- const mockNextHandler = jest.fn();
+ const mockNextHandler = vi.fn();
beforeEach(() => {
- jest.clearAllMocks();
- mockValidateArn.mockReturnValue(false);
+ vi.clearAllMocks();
+ vi.mocked(validate).mockReturnValue(false);
});
it("throws error if Bucket parameter contains '/'", async () => {
@@ -41,7 +45,7 @@ describe("validateBucketNameMiddleware", () => {
});
it("should not validate bucket name if the bucket name is an ARN", async () => {
- mockValidateArn.mockReturnValue(true);
+ vi.mocked(validate).mockReturnValue(true);
const handler = validateBucketNameMiddleware({} as any)(mockNextHandler, {} as any);
const args = {
input: {
diff --git a/packages/middleware-sdk-s3/vitest.config.e2e.ts b/packages/middleware-sdk-s3/vitest.config.e2e.ts
new file mode 100644
index 000000000000..92073c6cfcf0
--- /dev/null
+++ b/packages/middleware-sdk-s3/vitest.config.e2e.ts
@@ -0,0 +1,8 @@
+import { defineConfig } from "vitest/config";
+
+export default defineConfig({
+ test: {
+ include: ["**/*.e2e.spec.ts"],
+ environment: "node",
+ },
+});
diff --git a/packages/middleware-sdk-s3/vitest.config.integ.ts b/packages/middleware-sdk-s3/vitest.config.integ.ts
new file mode 100644
index 000000000000..5802db1ac64a
--- /dev/null
+++ b/packages/middleware-sdk-s3/vitest.config.integ.ts
@@ -0,0 +1,8 @@
+import { defineConfig } from "vitest/config";
+
+export default defineConfig({
+ test: {
+ include: ["**/*.integ.spec.ts"],
+ environment: "node",
+ },
+});
diff --git a/packages/middleware-sdk-s3/vitest.config.ts b/packages/middleware-sdk-s3/vitest.config.ts
new file mode 100644
index 000000000000..4e46707824a5
--- /dev/null
+++ b/packages/middleware-sdk-s3/vitest.config.ts
@@ -0,0 +1,9 @@
+import { defineConfig } from "vitest/config";
+
+export default defineConfig({
+ test: {
+ exclude: ["**/*.{integ,e2e,browser}.spec.ts"],
+ include: ["**/*.spec.ts"],
+ environment: "node",
+ },
+});
diff --git a/packages/middleware-sdk-sqs/jest.config.integ.js b/packages/middleware-sdk-sqs/jest.config.integ.js
deleted file mode 100644
index d09aba7398c7..000000000000
--- a/packages/middleware-sdk-sqs/jest.config.integ.js
+++ /dev/null
@@ -1,4 +0,0 @@
-module.exports = {
- preset: "ts-jest",
- testMatch: ["**/*.integ.spec.ts"],
-};
diff --git a/packages/middleware-sdk-sqs/jest.config.js b/packages/middleware-sdk-sqs/jest.config.js
deleted file mode 100644
index a8d1c2e49912..000000000000
--- a/packages/middleware-sdk-sqs/jest.config.js
+++ /dev/null
@@ -1,5 +0,0 @@
-const base = require("../../jest.config.base.js");
-
-module.exports = {
- ...base,
-};
diff --git a/packages/middleware-sdk-sqs/package.json b/packages/middleware-sdk-sqs/package.json
index df0a8c5311f6..4b092d06adb1 100644
--- a/packages/middleware-sdk-sqs/package.json
+++ b/packages/middleware-sdk-sqs/package.json
@@ -9,8 +9,10 @@
"build:types": "tsc -p tsconfig.types.json",
"build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4",
"clean": "rimraf ./dist-* && rimraf *.tsbuildinfo",
- "test": "jest",
- "test:integration": "jest -c jest.config.integ.js"
+ "test": "vitest run",
+ "test:integration": "vitest run -c vitest.config.integ.ts",
+ "test:watch": "vitest watch",
+ "test:integration:watch": "vitest watch -c vitest.config.integ.ts"
},
"main": "./dist-cjs/index.js",
"module": "./dist-es/index.js",
diff --git a/packages/middleware-sdk-sqs/src/middleware-sdk-sqs.integ.spec.ts b/packages/middleware-sdk-sqs/src/middleware-sdk-sqs.integ.spec.ts
index 12b0bc0c0e58..73307c091435 100644
--- a/packages/middleware-sdk-sqs/src/middleware-sdk-sqs.integ.spec.ts
+++ b/packages/middleware-sdk-sqs/src/middleware-sdk-sqs.integ.spec.ts
@@ -3,6 +3,7 @@ import { HttpHandler, HttpResponse } from "@smithy/protocol-http";
import type { AwsCredentialIdentity } from "@smithy/types";
import crypto from "crypto";
import { Readable } from "stream";
+import { beforeEach, describe, expect, expect, test as it } from "vitest";
import { requireRequestsFrom } from "../../../private/aws-util-test/src";
diff --git a/packages/middleware-sdk-sqs/src/queue-url.spec.ts b/packages/middleware-sdk-sqs/src/queue-url.spec.ts
index 69d8826499a9..7750ac3fa109 100644
--- a/packages/middleware-sdk-sqs/src/queue-url.spec.ts
+++ b/packages/middleware-sdk-sqs/src/queue-url.spec.ts
@@ -1,15 +1,16 @@
import { HttpRequest } from "@aws-sdk/protocol-http";
import { FinalizeHandlerArguments, HandlerExecutionContext } from "@aws-sdk/types";
+import { afterEach, beforeEach, describe, expect, test as it, vi } from "vitest";
import { queueUrlMiddleware } from "./queue-url";
describe("queueUrlMiddleware", () => {
- const mockNextHandler = jest.fn();
+ const mockNextHandler = vi.fn();
const mockContext: HandlerExecutionContext = {
logger: {
...console,
- warn: jest.fn(),
+ warn: vi.fn(),
},
endpointV2: void 0,
};
@@ -23,7 +24,7 @@ describe("queueUrlMiddleware", () => {
});
afterEach(() => {
- jest.resetAllMocks();
+ vi.resetAllMocks();
});
it("should use the QueueUrl hostname as the endpoint if useQueueUrlAsEndpoint is true", async () => {
diff --git a/packages/middleware-sdk-sqs/src/receive-messages.spec.ts b/packages/middleware-sdk-sqs/src/receive-messages.spec.ts
index 1d185cfaad06..97967e463607 100644
--- a/packages/middleware-sdk-sqs/src/receive-messages.spec.ts
+++ b/packages/middleware-sdk-sqs/src/receive-messages.spec.ts
@@ -1,11 +1,12 @@
import { ChecksumConstructor } from "@smithy/types";
+import { beforeEach, describe, expect, test as it, vi } from "vitest";
import { receiveMessageMiddleware } from "./receive-message";
describe("receiveMessageMiddleware", () => {
- const mockHashUpdate = jest.fn();
- const mockHashDigest = jest.fn().mockReturnValue(new Uint8Array(1));
- const mockHashReset = jest.fn();
+ const mockHashUpdate = vi.fn();
+ const mockHashDigest = vi.fn().mockReturnValue(new Uint8Array(1));
+ const mockHashReset = vi.fn();
const MockHash: ChecksumConstructor = class {} as any;
MockHash.prototype.update = mockHashUpdate;
MockHash.prototype.digest = mockHashDigest;
@@ -18,7 +19,7 @@ describe("receiveMessageMiddleware", () => {
});
it("should only call next once", async () => {
- const next = jest.fn().mockReturnValue({
+ const next = vi.fn().mockReturnValue({
output: {
Messages: [
{ Body: "foo", MD5OfBody: "00", MessageId: "fooMessage" },
@@ -34,7 +35,7 @@ describe("receiveMessageMiddleware", () => {
});
it("should do nothing if the checksums match", async () => {
- const next = jest.fn().mockReturnValue({
+ const next = vi.fn().mockReturnValue({
output: {
Messages: [
{ Body: "foo", MD5OfBody: "00", MessageId: "fooMessage" },
@@ -53,7 +54,7 @@ describe("receiveMessageMiddleware", () => {
});
it("should throw if the checksum does not match", async () => {
- const next = jest.fn().mockReturnValue({
+ const next = vi.fn().mockReturnValue({
output: {
Messages: [
{ Body: "foo", MD5OfBody: "00", MessageId: "fooMessage" },
@@ -71,7 +72,7 @@ describe("receiveMessageMiddleware", () => {
});
it("ignores checksum if md5=false in config", async () => {
- const next = jest.fn().mockReturnValue({
+ const next = vi.fn().mockReturnValue({
output: {
Messages: [
{ Body: "foo", MD5OfBody: "XXYYZZ", MessageId: "fooMessage" },
diff --git a/packages/middleware-sdk-sqs/src/send-message-batch.spec.ts b/packages/middleware-sdk-sqs/src/send-message-batch.spec.ts
index 4eff4185e186..1a4e0905b5eb 100644
--- a/packages/middleware-sdk-sqs/src/send-message-batch.spec.ts
+++ b/packages/middleware-sdk-sqs/src/send-message-batch.spec.ts
@@ -1,11 +1,12 @@
import { ChecksumConstructor } from "@smithy/types";
+import { beforeEach, describe, expect, test as it, vi } from "vitest";
import { sendMessageBatchMiddleware } from "./send-message-batch";
describe("sendMessageBatchMiddleware", () => {
- const mockHashUpdate = jest.fn();
- const mockHashDigest = jest.fn().mockReturnValue(new Uint8Array(1));
- const mockHashReset = jest.fn();
+ const mockHashUpdate = vi.fn();
+ const mockHashDigest = vi.fn().mockReturnValue(new Uint8Array(1));
+ const mockHashReset = vi.fn();
const MockHash: ChecksumConstructor = class {} as any;
MockHash.prototype.update = mockHashUpdate;
MockHash.prototype.digest = mockHashDigest;
@@ -18,7 +19,7 @@ describe("sendMessageBatchMiddleware", () => {
});
it("should call next exactly once", async () => {
- const next = jest.fn().mockReturnValue({
+ const next = vi.fn().mockReturnValue({
output: {
Successful: [
{ Id: "foo", MD5OfMessageBody: "00" },
@@ -43,7 +44,7 @@ describe("sendMessageBatchMiddleware", () => {
});
it("should do nothing if the checksums match", async () => {
- const next = jest.fn().mockReturnValue({
+ const next = vi.fn().mockReturnValue({
output: {
Successful: [
{ Id: "foo", MD5OfMessageBody: "00" },
@@ -69,7 +70,7 @@ describe("sendMessageBatchMiddleware", () => {
});
it("should throw if the checksum does not match", async () => {
- const next = jest.fn().mockReturnValue({
+ const next = vi.fn().mockReturnValue({
output: {
Successful: [
{ Id: "foo", MD5OfMessageBody: "00", MessageId: "fooMessage" },
diff --git a/packages/middleware-sdk-sqs/src/send-message.spec.ts b/packages/middleware-sdk-sqs/src/send-message.spec.ts
index 2eeea59abacf..948cd609825a 100644
--- a/packages/middleware-sdk-sqs/src/send-message.spec.ts
+++ b/packages/middleware-sdk-sqs/src/send-message.spec.ts
@@ -1,11 +1,12 @@
import { ChecksumConstructor } from "@smithy/types";
+import { beforeEach, describe, expect, test as it, vi } from "vitest";
import { sendMessageMiddleware } from "./send-message";
describe("sendMessageMiddleware", () => {
- const mockHashUpdate = jest.fn();
- const mockHashReset = jest.fn();
- const mockHashDigest = jest.fn().mockReturnValue(new Uint8Array(1));
+ const mockHashUpdate = vi.fn();
+ const mockHashReset = vi.fn();
+ const mockHashDigest = vi.fn().mockReturnValue(new Uint8Array(1));
const MockHash: ChecksumConstructor = class {} as any;
MockHash.prototype.update = mockHashUpdate;
MockHash.prototype.digest = mockHashDigest;
@@ -18,7 +19,7 @@ describe("sendMessageMiddleware", () => {
});
it("should only call next once", async () => {
- const next = jest.fn().mockReturnValue({
+ const next = vi.fn().mockReturnValue({
output: {
MD5OfMessageBody: "00",
},
@@ -31,7 +32,7 @@ describe("sendMessageMiddleware", () => {
});
it("should do nothing if the checksum matches", async () => {
- const next = jest.fn().mockReturnValue({
+ const next = vi.fn().mockReturnValue({
output: {
MD5OfMessageBody: "00",
},
@@ -47,7 +48,7 @@ describe("sendMessageMiddleware", () => {
});
it("should throw if the checksum does not match", async () => {
- const next = jest.fn().mockReturnValue({
+ const next = vi.fn().mockReturnValue({
output: {
MD5OfMessageBody: "1",
},
diff --git a/packages/middleware-sdk-sqs/vitest.config.integ.ts b/packages/middleware-sdk-sqs/vitest.config.integ.ts
new file mode 100644
index 000000000000..5802db1ac64a
--- /dev/null
+++ b/packages/middleware-sdk-sqs/vitest.config.integ.ts
@@ -0,0 +1,8 @@
+import { defineConfig } from "vitest/config";
+
+export default defineConfig({
+ test: {
+ include: ["**/*.integ.spec.ts"],
+ environment: "node",
+ },
+});
diff --git a/packages/middleware-sdk-sqs/vitest.config.ts b/packages/middleware-sdk-sqs/vitest.config.ts
new file mode 100644
index 000000000000..4e46707824a5
--- /dev/null
+++ b/packages/middleware-sdk-sqs/vitest.config.ts
@@ -0,0 +1,9 @@
+import { defineConfig } from "vitest/config";
+
+export default defineConfig({
+ test: {
+ exclude: ["**/*.{integ,e2e,browser}.spec.ts"],
+ include: ["**/*.spec.ts"],
+ environment: "node",
+ },
+});
diff --git a/packages/middleware-sdk-sts/jest.config.integ.js b/packages/middleware-sdk-sts/jest.config.integ.js
deleted file mode 100644
index d09aba7398c7..000000000000
--- a/packages/middleware-sdk-sts/jest.config.integ.js
+++ /dev/null
@@ -1,4 +0,0 @@
-module.exports = {
- preset: "ts-jest",
- testMatch: ["**/*.integ.spec.ts"],
-};
diff --git a/packages/middleware-sdk-sts/package.json b/packages/middleware-sdk-sts/package.json
index 30b0d27147c0..db4ad70a1f5c 100644
--- a/packages/middleware-sdk-sts/package.json
+++ b/packages/middleware-sdk-sts/package.json
@@ -10,7 +10,8 @@
"build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4",
"clean": "rimraf ./dist-* && rimraf *.tsbuildinfo",
"test": "exit 0",
- "test:integration": "jest -c jest.config.integ.js"
+ "test:integration": "vitest run -c vitest.config.integ.ts",
+ "test:integration:watch": "vitest watch -c vitest.config.integ.ts"
},
"main": "./dist-cjs/index.js",
"module": "./dist-es/index.js",
diff --git a/packages/middleware-sdk-sts/src/middleware-sdk-sts.integ.spec.ts b/packages/middleware-sdk-sts/src/middleware-sdk-sts.integ.spec.ts
index 7a4c7a6f18ef..bf0618073200 100644
--- a/packages/middleware-sdk-sts/src/middleware-sdk-sts.integ.spec.ts
+++ b/packages/middleware-sdk-sts/src/middleware-sdk-sts.integ.spec.ts
@@ -1,4 +1,5 @@
import { STS, STSClient } from "@aws-sdk/client-sts";
+import { describe, expect, test as it } from "vitest";
describe("middleware-sdk-sts", () => {
describe(STS.name, () => {
diff --git a/packages/middleware-sdk-sts/vitest.config.integ.ts b/packages/middleware-sdk-sts/vitest.config.integ.ts
new file mode 100644
index 000000000000..5802db1ac64a
--- /dev/null
+++ b/packages/middleware-sdk-sts/vitest.config.integ.ts
@@ -0,0 +1,8 @@
+import { defineConfig } from "vitest/config";
+
+export default defineConfig({
+ test: {
+ include: ["**/*.integ.spec.ts"],
+ environment: "node",
+ },
+});
diff --git a/packages/middleware-sdk-transcribe-streaming/jest.config.integ.js b/packages/middleware-sdk-transcribe-streaming/jest.config.integ.js
deleted file mode 100644
index d09aba7398c7..000000000000
--- a/packages/middleware-sdk-transcribe-streaming/jest.config.integ.js
+++ /dev/null
@@ -1,4 +0,0 @@
-module.exports = {
- preset: "ts-jest",
- testMatch: ["**/*.integ.spec.ts"],
-};
diff --git a/packages/middleware-sdk-transcribe-streaming/jest.config.js b/packages/middleware-sdk-transcribe-streaming/jest.config.js
deleted file mode 100644
index 64f3d932819c..000000000000
--- a/packages/middleware-sdk-transcribe-streaming/jest.config.js
+++ /dev/null
@@ -1,7 +0,0 @@
-const base = require("../../jest.config.base.js");
-
-module.exports = {
- ...base,
- //only test cjs dist, avoid testing the package twice
- testPathIgnorePatterns: ["/node_modules/", "/es/"],
-};
diff --git a/packages/middleware-sdk-transcribe-streaming/package.json b/packages/middleware-sdk-transcribe-streaming/package.json
index d530ebdf8f35..f56a0cc05d25 100644
--- a/packages/middleware-sdk-transcribe-streaming/package.json
+++ b/packages/middleware-sdk-transcribe-streaming/package.json
@@ -12,8 +12,10 @@
"build:types": "tsc -p tsconfig.types.json",
"build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4",
"clean": "rimraf ./dist-* && rimraf *.tsbuildinfo",
- "test": "jest --passWithNoTests",
- "test:integration": "jest -c jest.config.integ.js"
+ "test": "vitest run",
+ "test:integration": "vitest run -c vitest.config.integ.ts",
+ "test:watch": "vitest watch",
+ "test:integration:watch": "vitest watch -c vitest.config.integ.ts"
},
"author": {
"name": "AWS SDK for JavaScript Team",
@@ -34,7 +36,6 @@
"@tsconfig/recommended": "1.0.1",
"concurrently": "7.0.0",
"downlevel-dts": "0.10.1",
- "jest-websocket-mock": "^2.0.2",
"mock-socket": "9.1.5",
"rimraf": "3.0.2",
"typescript": "~4.9.5"
diff --git a/packages/middleware-sdk-transcribe-streaming/src/middleware-port.spec.ts b/packages/middleware-sdk-transcribe-streaming/src/middleware-port.spec.ts
index 325876ba1f67..556e27ba1d74 100644
--- a/packages/middleware-sdk-transcribe-streaming/src/middleware-port.spec.ts
+++ b/packages/middleware-sdk-transcribe-streaming/src/middleware-port.spec.ts
@@ -1,5 +1,6 @@
import { HttpRequest } from "@smithy/protocol-http";
import { BuildHandlerArguments, RequestHandler } from "@smithy/types";
+import { describe, expect, test as it } from "vitest";
import { websocketPortMiddleware } from "./middleware-port";
@@ -8,44 +9,53 @@ describe("websocketPortMiddleware", () => {
metadata: { handlerProtocol: "websocket" },
handle: () => ({} as any),
};
- it("should skip non-http request", (done) => {
+ it("should skip non-http request", async () => {
const nonHttpRequest = {
foo: "bar",
};
+ let resolve: (resolved?: unknown) => void;
+ const promise = new Promise((r) => (resolve = r));
const next = (args: BuildHandlerArguments) => {
expect(args.request).toEqual(nonHttpRequest);
- done();
+ resolve();
};
const mw = websocketPortMiddleware({ requestHandler: mockHandler });
mw(next as any, {} as any)({ request: nonHttpRequest, input: {} });
+ await promise;
});
- it("should skip non WebSocket requests", (done) => {
+ it("should skip non WebSocket requests", async () => {
const mockHandler: RequestHandler = {
metadata: { handlerProtocol: "some_protocol" },
handle: () => ({} as any),
};
const request = new HttpRequest({});
+ let resolve: (resolved?: unknown) => void;
+ const promise = new Promise((r) => (resolve = r));
const next = (args: BuildHandlerArguments) => {
expect(args.request).toEqual(request);
- done();
+ resolve();
};
const mw = websocketPortMiddleware({ requestHandler: mockHandler });
mw(next as any, {} as any)({ request, input: {} });
+ await promise;
});
- it("should update endpoint to websocket url", (done) => {
+ it("should update endpoint to websocket url", async () => {
const request = new HttpRequest({
hostname: "transcribestreaming.us-east-1.amazonaws.com",
});
+ let resolve: (resolved?: unknown) => void;
+ const promise = new Promise((r) => (resolve = r));
const next = (args: BuildHandlerArguments) => {
expect(HttpRequest.isInstance(args.request)).toBeTruthy();
const processed = args.request as HttpRequest;
expect(processed.hostname).toEqual("transcribestreaming.us-east-1.amazonaws.com:8443");
expect(processed.headers.host).toEqual("transcribestreaming.us-east-1.amazonaws.com:8443");
- done();
+ resolve();
};
const mw = websocketPortMiddleware({ requestHandler: mockHandler });
mw(next as any, {} as any)({ request, input: {} });
+ await promise;
});
});
diff --git a/packages/middleware-sdk-transcribe-streaming/src/middleware-sdk-transcribe-streaming.integ.spec.ts b/packages/middleware-sdk-transcribe-streaming/src/middleware-sdk-transcribe-streaming.integ.spec.ts
index 1e01f09cffd9..682b6d35f21a 100644
--- a/packages/middleware-sdk-transcribe-streaming/src/middleware-sdk-transcribe-streaming.integ.spec.ts
+++ b/packages/middleware-sdk-transcribe-streaming/src/middleware-sdk-transcribe-streaming.integ.spec.ts
@@ -1,10 +1,11 @@
import { TranscribeStreaming } from "@aws-sdk/client-transcribe-streaming";
+import { describe, expect, test as it } from "vitest";
import { requireRequestsFrom } from "../../../private/aws-util-test/src";
describe("middleware-sdk-transcribe-streaming", () => {
// TODO: http2 in CI
- xdescribe(TranscribeStreaming.name, () => {
+ describe.skip(TranscribeStreaming.name, () => {
it("should set port on hostname and copy params to query", async () => {
const client = new TranscribeStreaming({
region: "us-west-2",
diff --git a/packages/middleware-sdk-transcribe-streaming/vitest.config.integ.ts b/packages/middleware-sdk-transcribe-streaming/vitest.config.integ.ts
new file mode 100644
index 000000000000..5802db1ac64a
--- /dev/null
+++ b/packages/middleware-sdk-transcribe-streaming/vitest.config.integ.ts
@@ -0,0 +1,8 @@
+import { defineConfig } from "vitest/config";
+
+export default defineConfig({
+ test: {
+ include: ["**/*.integ.spec.ts"],
+ environment: "node",
+ },
+});
diff --git a/packages/middleware-sdk-transcribe-streaming/vitest.config.ts b/packages/middleware-sdk-transcribe-streaming/vitest.config.ts
new file mode 100644
index 000000000000..4e46707824a5
--- /dev/null
+++ b/packages/middleware-sdk-transcribe-streaming/vitest.config.ts
@@ -0,0 +1,9 @@
+import { defineConfig } from "vitest/config";
+
+export default defineConfig({
+ test: {
+ exclude: ["**/*.{integ,e2e,browser}.spec.ts"],
+ include: ["**/*.spec.ts"],
+ environment: "node",
+ },
+});
diff --git a/packages/middleware-signing/jest.config.integ.js b/packages/middleware-signing/jest.config.integ.js
deleted file mode 100644
index d09aba7398c7..000000000000
--- a/packages/middleware-signing/jest.config.integ.js
+++ /dev/null
@@ -1,4 +0,0 @@
-module.exports = {
- preset: "ts-jest",
- testMatch: ["**/*.integ.spec.ts"],
-};
diff --git a/packages/middleware-signing/jest.config.js b/packages/middleware-signing/jest.config.js
deleted file mode 100644
index a8d1c2e49912..000000000000
--- a/packages/middleware-signing/jest.config.js
+++ /dev/null
@@ -1,5 +0,0 @@
-const base = require("../../jest.config.base.js");
-
-module.exports = {
- ...base,
-};
diff --git a/packages/middleware-signing/package.json b/packages/middleware-signing/package.json
index 10994680d66b..ca3535b03710 100644
--- a/packages/middleware-signing/package.json
+++ b/packages/middleware-signing/package.json
@@ -9,9 +9,11 @@
"build:types": "tsc -p tsconfig.types.json",
"build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4",
"clean": "rimraf ./dist-* && rimraf *.tsbuildinfo",
- "test": "jest --passWithNoTests",
- "test:integration": "jest -c jest.config.integ.js",
- "extract:docs": "api-extractor run --local"
+ "test": "vitest run",
+ "test:integration": "vitest run -c vitest.config.integ.ts",
+ "extract:docs": "api-extractor run --local",
+ "test:watch": "vitest watch",
+ "test:integration:watch": "vitest watch -c vitest.config.integ.ts"
},
"main": "./dist-cjs/index.js",
"module": "./dist-es/index.js",
diff --git a/packages/middleware-signing/src/awsAuthConfiguration.spec.ts b/packages/middleware-signing/src/awsAuthConfiguration.spec.ts
index 6d0357a04457..1423d1b3de85 100644
--- a/packages/middleware-signing/src/awsAuthConfiguration.spec.ts
+++ b/packages/middleware-signing/src/awsAuthConfiguration.spec.ts
@@ -1,4 +1,5 @@
import { HttpRequest } from "@smithy/protocol-http";
+import { beforeEach, describe, expect, test as it, vi } from "vitest";
import { resolveAwsAuthConfig, resolveSigV4AuthConfig } from "./awsAuthConfiguration";
@@ -13,20 +14,20 @@ describe("AuthConfig", () => {
describe("resolveAwsAuthConfig", () => {
const inputParams = {
credentialDefaultProvider: () => () => Promise.resolve({ accessKeyId: "key", secretAccessKey: "secret" }),
- region: jest.fn().mockImplementation(() => Promise.resolve("us-foo-1")),
+ region: vi.fn().mockImplementation(() => Promise.resolve("us-foo-1")),
regionInfoProvider: () => Promise.resolve({ hostname: "foo.com", partition: "aws" }),
serviceId: "foo",
- sha256: jest.fn().mockReturnValue({
- update: jest.fn(),
- digest: jest.fn().mockReturnValue("SHA256 hash"),
+ sha256: vi.fn().mockReturnValue({
+ update: vi.fn(),
+ digest: vi.fn().mockReturnValue("SHA256 hash"),
}),
- credentials: jest.fn().mockResolvedValue({ accessKeyId: "key", secretAccessKey: "secret" }),
+ credentials: vi.fn().mockResolvedValue({ accessKeyId: "key", secretAccessKey: "secret" }),
useFipsEndpoint: () => Promise.resolve(false),
useDualstackEndpoint: () => Promise.resolve(false),
};
beforeEach(() => {
- jest.clearAllMocks();
+ vi.clearAllMocks();
});
it("should memoize custom credential provider", async () => {
@@ -44,7 +45,7 @@ describe("AuthConfig", () => {
const FOUR_MINUTES_AND_59_SEC = 299 * 1000;
const input = {
...inputParams,
- credentials: jest
+ credentials: vi
.fn()
.mockResolvedValueOnce({
accessKeyId: "key",
@@ -67,17 +68,17 @@ describe("AuthConfig", () => {
describe("resolveSigV4AuthConfig", () => {
const inputParams = {
credentialDefaultProvider: () => () => Promise.resolve({ accessKeyId: "key", secretAccessKey: "secret" }),
- region: jest.fn().mockImplementation(() => Promise.resolve("us-foo-1")),
+ region: vi.fn().mockImplementation(() => Promise.resolve("us-foo-1")),
signingName: "foo",
- sha256: jest.fn().mockReturnValue({
- update: jest.fn(),
- digest: jest.fn().mockReturnValue("SHA256 hash"),
+ sha256: vi.fn().mockReturnValue({
+ update: vi.fn(),
+ digest: vi.fn().mockReturnValue("SHA256 hash"),
}),
- credentials: jest.fn().mockResolvedValue({ accessKeyId: "key", secretAccessKey: "secret" }),
+ credentials: vi.fn().mockResolvedValue({ accessKeyId: "key", secretAccessKey: "secret" }),
};
beforeEach(() => {
- jest.clearAllMocks();
+ vi.clearAllMocks();
});
it("should memoize custom credential provider", async () => {
@@ -95,7 +96,7 @@ describe("AuthConfig", () => {
const FOUR_MINUTES_AND_59_SEC = 299 * 1000;
const input = {
...inputParams,
- credentials: jest
+ credentials: vi
.fn()
.mockResolvedValueOnce({
accessKeyId: "key",
diff --git a/packages/middleware-signing/src/awsAuthMiddleware.spec.ts b/packages/middleware-signing/src/awsAuthMiddleware.spec.ts
index 0bb1b18a958f..c0d5f1d2884c 100644
--- a/packages/middleware-signing/src/awsAuthMiddleware.spec.ts
+++ b/packages/middleware-signing/src/awsAuthMiddleware.spec.ts
@@ -1,20 +1,21 @@
import { HttpRequest } from "@smithy/protocol-http";
import { FinalizeHandler, RequestSigner } from "@smithy/types";
+import { afterEach, beforeEach, describe, expect, test as it, vi } from "vitest";
import { AwsAuthResolvedConfig } from "./awsAuthConfiguration";
import { awsAuthMiddleware } from "./awsAuthMiddleware";
import { getSkewCorrectedDate } from "./utils/getSkewCorrectedDate";
import { getUpdatedSystemClockOffset } from "./utils/getUpdatedSystemClockOffset";
-jest.mock("./utils/getUpdatedSystemClockOffset");
-jest.mock("./utils/getSkewCorrectedDate");
+vi.mock("./utils/getUpdatedSystemClockOffset");
+vi.mock("./utils/getSkewCorrectedDate");
describe(awsAuthMiddleware.name, () => {
- let mockSignFn: jest.Mock;
+ let mockSignFn: vi.Mock;
let mockSigner: () => Promise;
let mockOptions: AwsAuthResolvedConfig;
- const mockNext: jest.MockedFunction> = jest.fn();
+ const mockNext: vi.MockedFunction> = vi.fn();
const mockSystemClockOffset = 100;
const mockUpdatedSystemClockOffset = 500;
const mockSigningHandlerArgs = {
@@ -28,17 +29,17 @@ describe(awsAuthMiddleware.name, () => {
const mockResponse = { output: "", response: "" };
beforeEach(() => {
- mockSignFn = jest.fn().mockResolvedValue(mockSignedRequest);
+ mockSignFn = vi.fn().mockResolvedValue(mockSignedRequest);
mockSigner = () => Promise.resolve({ sign: mockSignFn } as RequestSigner);
mockNext.mockResolvedValue(mockResponse);
mockOptions = {
- credentials: jest.fn(),
+ credentials: vi.fn(),
signer: mockSigner,
signingEscapePath: true,
systemClockOffset: mockSystemClockOffset,
};
- (getUpdatedSystemClockOffset as jest.Mock).mockReturnValue(mockUpdatedSystemClockOffset);
- (getSkewCorrectedDate as jest.Mock).mockReturnValue(mockSkewCorrectedDate);
+ vi.mocked(getUpdatedSystemClockOffset).mockReturnValue(mockUpdatedSystemClockOffset);
+ vi.mocked(getSkewCorrectedDate).mockReturnValue(mockSkewCorrectedDate);
});
afterEach(() => {
@@ -47,7 +48,7 @@ describe(awsAuthMiddleware.name, () => {
expect(mockSignFn).toHaveBeenCalledTimes(1);
expect(mockNext).toHaveBeenCalledTimes(1);
expect(mockNext).toHaveBeenCalledWith({ ...mockSigningHandlerArgs, request: mockSignedRequest });
- jest.clearAllMocks();
+ vi.clearAllMocks();
});
it("should sign the request with systemClockOffset", async () => {
diff --git a/packages/middleware-signing/src/middleware-signing.integ.spec.ts b/packages/middleware-signing/src/middleware-signing.integ.spec.ts
index ecffac89dd19..492dd86e86de 100644
--- a/packages/middleware-signing/src/middleware-signing.integ.spec.ts
+++ b/packages/middleware-signing/src/middleware-signing.integ.spec.ts
@@ -1,5 +1,6 @@
import { EC2 } from "@aws-sdk/client-ec2";
import { SageMaker } from "@aws-sdk/client-sagemaker";
+import { describe, test as it } from "vitest";
import { requireRequestsFrom } from "../../../private/aws-util-test/src";
diff --git a/packages/middleware-signing/src/utils/getSkewCorrectedDate.spec.ts b/packages/middleware-signing/src/utils/getSkewCorrectedDate.spec.ts
index 8661f876bf41..8fe34f8a2e4d 100644
--- a/packages/middleware-signing/src/utils/getSkewCorrectedDate.spec.ts
+++ b/packages/middleware-signing/src/utils/getSkewCorrectedDate.spec.ts
@@ -1,14 +1,16 @@
+import { afterEach, beforeEach, describe, expect, test as it, vi } from "vitest";
+
import { getSkewCorrectedDate } from "./getSkewCorrectedDate";
describe(getSkewCorrectedDate.name, () => {
const mockDateNow = Date.now();
beforeEach(() => {
- jest.spyOn(Date, "now").mockReturnValue(mockDateNow);
+ vi.spyOn(Date, "now").mockReturnValue(mockDateNow);
});
afterEach(() => {
- jest.clearAllMocks();
+ vi.clearAllMocks();
});
it.each([-100000, -100, 0, 100, 100000])("systemClockOffset: %d", (systemClockOffset) => {
diff --git a/packages/middleware-signing/src/utils/getUpdatedSystemClockOffset.spec.ts b/packages/middleware-signing/src/utils/getUpdatedSystemClockOffset.spec.ts
index a604f3c25e41..8cd04ea6619a 100644
--- a/packages/middleware-signing/src/utils/getUpdatedSystemClockOffset.spec.ts
+++ b/packages/middleware-signing/src/utils/getUpdatedSystemClockOffset.spec.ts
@@ -1,7 +1,9 @@
+import { afterEach, beforeEach, describe, expect, test as it, vi } from "vitest";
+
import { getUpdatedSystemClockOffset } from "./getUpdatedSystemClockOffset";
import { isClockSkewed } from "./isClockSkewed";
-jest.mock("./isClockSkewed");
+vi.mock("./isClockSkewed");
describe(getUpdatedSystemClockOffset.name, () => {
// Mock ServerTime is accurate to last second, to remove milliseconds information.
@@ -9,11 +11,11 @@ describe(getUpdatedSystemClockOffset.name, () => {
const mockSystemClockOffset = 100;
afterEach(() => {
- jest.clearAllMocks();
+ vi.clearAllMocks();
});
it("returns passed systemClockOffset when clock is not skewed", () => {
- (isClockSkewed as jest.Mock).mockReturnValue(false);
+ vi.mocked(isClockSkewed).mockReturnValue(false);
expect(getUpdatedSystemClockOffset(mockClockTime.toString(), mockSystemClockOffset)).toEqual(mockSystemClockOffset);
});
@@ -21,8 +23,8 @@ describe(getUpdatedSystemClockOffset.name, () => {
const dateDotNowFn = Date.now;
beforeEach(() => {
- (isClockSkewed as jest.Mock).mockReturnValue(true);
- jest.spyOn(Date, "now").mockReturnValueOnce(mockClockTime.getTime());
+ vi.mocked(isClockSkewed).mockReturnValue(true);
+ vi.spyOn(Date, "now").mockReturnValueOnce(mockClockTime.getTime());
});
afterEach(() => {
diff --git a/packages/middleware-signing/src/utils/isClockSkewed.spec.ts b/packages/middleware-signing/src/utils/isClockSkewed.spec.ts
index a07d481c40dd..6acd3785cf32 100644
--- a/packages/middleware-signing/src/utils/isClockSkewed.spec.ts
+++ b/packages/middleware-signing/src/utils/isClockSkewed.spec.ts
@@ -1,19 +1,21 @@
+import { afterEach, beforeEach, describe, expect, test as it, vi } from "vitest";
+
import { getSkewCorrectedDate } from "./getSkewCorrectedDate";
import { isClockSkewed } from "./isClockSkewed";
-jest.mock("./getSkewCorrectedDate");
+vi.mock("./getSkewCorrectedDate");
describe(isClockSkewed.name, () => {
const mockSystemClockOffset = 100;
const mockSkewCorrectedDate = new Date();
beforeEach(() => {
- (getSkewCorrectedDate as jest.Mock).mockReturnValue(mockSkewCorrectedDate);
+ vi.mocked(getSkewCorrectedDate).mockReturnValue(mockSkewCorrectedDate);
});
afterEach(() => {
expect(getSkewCorrectedDate).toHaveBeenCalledWith(mockSystemClockOffset);
- jest.clearAllMocks();
+ vi.clearAllMocks();
});
describe("returns true for time difference >=300000", () => {
diff --git a/packages/middleware-signing/vitest.config.integ.ts b/packages/middleware-signing/vitest.config.integ.ts
new file mode 100644
index 000000000000..5802db1ac64a
--- /dev/null
+++ b/packages/middleware-signing/vitest.config.integ.ts
@@ -0,0 +1,8 @@
+import { defineConfig } from "vitest/config";
+
+export default defineConfig({
+ test: {
+ include: ["**/*.integ.spec.ts"],
+ environment: "node",
+ },
+});
diff --git a/packages/middleware-signing/vitest.config.ts b/packages/middleware-signing/vitest.config.ts
new file mode 100644
index 000000000000..4e46707824a5
--- /dev/null
+++ b/packages/middleware-signing/vitest.config.ts
@@ -0,0 +1,9 @@
+import { defineConfig } from "vitest/config";
+
+export default defineConfig({
+ test: {
+ exclude: ["**/*.{integ,e2e,browser}.spec.ts"],
+ include: ["**/*.spec.ts"],
+ environment: "node",
+ },
+});
diff --git a/packages/middleware-ssec/jest.config.integ.js b/packages/middleware-ssec/jest.config.integ.js
deleted file mode 100644
index d09aba7398c7..000000000000
--- a/packages/middleware-ssec/jest.config.integ.js
+++ /dev/null
@@ -1,4 +0,0 @@
-module.exports = {
- preset: "ts-jest",
- testMatch: ["**/*.integ.spec.ts"],
-};
diff --git a/packages/middleware-ssec/jest.config.js b/packages/middleware-ssec/jest.config.js
deleted file mode 100644
index a8d1c2e49912..000000000000
--- a/packages/middleware-ssec/jest.config.js
+++ /dev/null
@@ -1,5 +0,0 @@
-const base = require("../../jest.config.base.js");
-
-module.exports = {
- ...base,
-};
diff --git a/packages/middleware-ssec/package.json b/packages/middleware-ssec/package.json
index ab6e6b457a5a..5d26e40b1dc9 100644
--- a/packages/middleware-ssec/package.json
+++ b/packages/middleware-ssec/package.json
@@ -9,8 +9,10 @@
"build:types": "tsc -p tsconfig.types.json",
"build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4",
"clean": "rimraf ./dist-* && rimraf *.tsbuildinfo",
- "test": "jest",
- "test:integration": "jest -c jest.config.integ.js"
+ "test": "vitest run",
+ "test:integration": "vitest run -c vitest.config.integ.ts",
+ "test:watch": "vitest watch",
+ "test:integration:watch": "vitest watch -c vitest.config.integ.ts"
},
"main": "./dist-cjs/index.js",
"module": "./dist-es/index.js",
diff --git a/packages/middleware-ssec/src/index.spec.ts b/packages/middleware-ssec/src/index.spec.ts
index 9f57558b236b..47330df7e071 100644
--- a/packages/middleware-ssec/src/index.spec.ts
+++ b/packages/middleware-ssec/src/index.spec.ts
@@ -1,17 +1,18 @@
import { ChecksumConstructor } from "@smithy/types";
import * as crypto from "crypto";
+import { beforeEach, describe, expect, test as it, vi } from "vitest";
import { isValidBase64EncodedSSECustomerKey, ssecMiddleware } from "./";
describe("ssecMiddleware", () => {
- const next = jest.fn();
- const decoder = jest.fn().mockResolvedValue(new Uint8Array(0));
- const base64Decoder = jest.fn();
- const encoder1 = jest.fn();
- const encoder2 = jest.fn();
- const mockHashUpdate = jest.fn();
- const mockHashReset = jest.fn();
- const mockHashDigest = jest.fn().mockReturnValue(new Uint8Array(0));
+ const next = vi.fn();
+ const decoder = vi.fn().mockResolvedValue(new Uint8Array(0));
+ const base64Decoder = vi.fn();
+ const encoder1 = vi.fn();
+ const encoder2 = vi.fn();
+ const mockHashUpdate = vi.fn();
+ const mockHashReset = vi.fn();
+ const mockHashDigest = vi.fn().mockReturnValue(new Uint8Array(0));
const MockHash: ChecksumConstructor = class {} as any;
MockHash.prototype.update = mockHashUpdate;
MockHash.prototype.digest = mockHashDigest;
@@ -69,11 +70,11 @@ describe("ssecMiddleware", () => {
base64Decoder.mockReturnValue(decodedBytes);
const mockMD5Instance = {
- update: jest.fn().mockReturnThis(),
- digest: jest.fn().mockReturnValue(md5Hash),
+ update: vi.fn().mockReturnThis(),
+ digest: vi.fn().mockReturnValue(md5Hash),
};
- const mockMD5Constructor = jest.fn().mockReturnValue(mockMD5Instance);
- const base64Encoder = jest.fn().mockReturnValue(base64EncodedMD5Hash);
+ const mockMD5Constructor = vi.fn().mockReturnValue(mockMD5Instance);
+ const base64Encoder = vi.fn().mockReturnValue(base64EncodedMD5Hash);
const handler = ssecMiddleware({
base64Encoder,
@@ -117,12 +118,12 @@ describe("ssecMiddleware", () => {
const base64EncodedKey = binaryKey.toString("base64");
const base64EncodedMD5Hash = md5Hash.toString("base64");
- const mockMD5Constructor = jest.fn().mockReturnValue({
- update: jest.fn().mockReturnThis(),
- digest: jest.fn().mockReturnValueOnce(md5Hash).mockReturnValueOnce(md5Hash),
+ const mockMD5Constructor = vi.fn().mockReturnValue({
+ update: vi.fn().mockReturnThis(),
+ digest: vi.fn().mockReturnValueOnce(md5Hash).mockReturnValueOnce(md5Hash),
});
- const base64Encoder = jest
+ const base64Encoder = vi
.fn()
.mockReturnValueOnce(base64EncodedKey)
.mockReturnValueOnce(base64EncodedMD5Hash)
@@ -161,7 +162,7 @@ describe("ssecMiddleware", () => {
it("should return false for an invalid base64 string", () => {
const invalidBase64 = "invalid!@#$%";
- const base64Decoder = jest.fn();
+ const base64Decoder = vi.fn();
const options = { base64Decoder };
const result = isValidBase64EncodedSSECustomerKey(invalidBase64, options as any);
@@ -172,7 +173,7 @@ describe("ssecMiddleware", () => {
it("should return true for a valid base64 string and 32 bytes", () => {
const validBase64EncodedSSECustomerKey = "QUIwMTIzNDU2Nzg5QUJDREVGQUJDREVGQUJDREVGQUI=";
const decodedBytes = new Uint8Array(32);
- const base64Decoder = jest.fn().mockReturnValue(decodedBytes);
+ const base64Decoder = vi.fn().mockReturnValue(decodedBytes);
const options = { base64Decoder };
const result = isValidBase64EncodedSSECustomerKey(validBase64EncodedSSECustomerKey, options as any);
@@ -183,7 +184,7 @@ describe("ssecMiddleware", () => {
it("should return false for a valid base64 string but not 32 bytes", () => {
const validBase64NonThirtyTwoBytes = "SGVsbG8=";
- const base64Decoder = jest.fn().mockReturnValue(new Uint8Array([72, 101, 108, 108, 111]));
+ const base64Decoder = vi.fn().mockReturnValue(new Uint8Array([72, 101, 108, 108, 111]));
const options = { base64Decoder };
const result = isValidBase64EncodedSSECustomerKey(validBase64NonThirtyTwoBytes, options as any);
diff --git a/packages/middleware-ssec/src/middleware-ssec.integ.spec.ts b/packages/middleware-ssec/src/middleware-ssec.integ.spec.ts
index 337f61b1b98f..d5ee0bf31c8b 100644
--- a/packages/middleware-ssec/src/middleware-ssec.integ.spec.ts
+++ b/packages/middleware-ssec/src/middleware-ssec.integ.spec.ts
@@ -1,5 +1,6 @@
import { S3 } from "@aws-sdk/client-s3";
import * as crypto from "crypto";
+import { describe, test as it } from "vitest";
import { requireRequestsFrom } from "../../../private/aws-util-test/src";
diff --git a/packages/middleware-ssec/vitest.config.integ.ts b/packages/middleware-ssec/vitest.config.integ.ts
new file mode 100644
index 000000000000..5802db1ac64a
--- /dev/null
+++ b/packages/middleware-ssec/vitest.config.integ.ts
@@ -0,0 +1,8 @@
+import { defineConfig } from "vitest/config";
+
+export default defineConfig({
+ test: {
+ include: ["**/*.integ.spec.ts"],
+ environment: "node",
+ },
+});
diff --git a/packages/middleware-ssec/vitest.config.ts b/packages/middleware-ssec/vitest.config.ts
new file mode 100644
index 000000000000..4e46707824a5
--- /dev/null
+++ b/packages/middleware-ssec/vitest.config.ts
@@ -0,0 +1,9 @@
+import { defineConfig } from "vitest/config";
+
+export default defineConfig({
+ test: {
+ exclude: ["**/*.{integ,e2e,browser}.spec.ts"],
+ include: ["**/*.spec.ts"],
+ environment: "node",
+ },
+});
diff --git a/packages/middleware-token/jest.config.integ.js b/packages/middleware-token/jest.config.integ.js
deleted file mode 100644
index d09aba7398c7..000000000000
--- a/packages/middleware-token/jest.config.integ.js
+++ /dev/null
@@ -1,4 +0,0 @@
-module.exports = {
- preset: "ts-jest",
- testMatch: ["**/*.integ.spec.ts"],
-};
diff --git a/packages/middleware-token/jest.config.js b/packages/middleware-token/jest.config.js
deleted file mode 100644
index 95d8863b22a1..000000000000
--- a/packages/middleware-token/jest.config.js
+++ /dev/null
@@ -1,6 +0,0 @@
-const base = require("../../jest.config.base.js");
-
-module.exports = {
- ...base,
- testMatch: ["**/*.spec.ts"],
-};
diff --git a/packages/middleware-token/package.json b/packages/middleware-token/package.json
index f02c17a164d9..2521206f96ee 100644
--- a/packages/middleware-token/package.json
+++ b/packages/middleware-token/package.json
@@ -13,8 +13,10 @@
"build:types": "tsc -p tsconfig.types.json",
"build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4",
"clean": "rimraf ./dist-* && rimraf *.tsbuildinfo",
- "test": "jest",
- "test:integration": "jest -c jest.config.integ.js"
+ "test": "vitest run",
+ "test:integration": "vitest run -c vitest.config.integ.ts",
+ "test:watch": "vitest watch",
+ "test:integration:watch": "vitest watch -c vitest.config.integ.ts"
},
"keywords": [
"aws",
diff --git a/packages/middleware-token/src/getTokenPlugin.spec.ts b/packages/middleware-token/src/getTokenPlugin.spec.ts
index 7cb26af89f9d..d91199b6c349 100644
--- a/packages/middleware-token/src/getTokenPlugin.spec.ts
+++ b/packages/middleware-token/src/getTokenPlugin.spec.ts
@@ -1,7 +1,9 @@
+import { describe, expect, test as it, vi } from "vitest";
+
import { getTokenPlugin } from "./getTokenPlugin";
import { tokenMiddleware, tokenMiddlewareOptions } from "./tokenMiddleware";
-jest.mock("./tokenMiddleware");
+vi.mock("./tokenMiddleware");
const ONE_HOUR_IN_MS = 3600 * 1000;
@@ -16,11 +18,11 @@ describe(getTokenPlugin.name, () => {
it("applyToStack adds tokenMiddleware", () => {
const middlewareReturn = {};
- (tokenMiddleware as jest.Mock).mockReturnValueOnce(middlewareReturn);
+ vi.mocked(tokenMiddleware).mockReturnValueOnce(middlewareReturn);
// @ts-ignore
const plugin = getTokenPlugin(pluginConfig);
- const commandStack = { addRelativeTo: jest.fn() };
+ const commandStack = { addRelativeTo: vi.fn() };
// @ts-ignore
plugin.applyToStack(commandStack);
diff --git a/packages/middleware-token/src/middleware-token.integ.spec.ts b/packages/middleware-token/src/middleware-token.integ.spec.ts
index 1238971a98a9..4bd743114947 100644
--- a/packages/middleware-token/src/middleware-token.integ.spec.ts
+++ b/packages/middleware-token/src/middleware-token.integ.spec.ts
@@ -1,4 +1,5 @@
import { CodeCatalyst } from "@aws-sdk/client-codecatalyst";
+import { describe, test as it } from "vitest";
import { requireRequestsFrom } from "../../../private/aws-util-test/src";
diff --git a/packages/middleware-token/src/normalizeTokenProvider.spec.ts b/packages/middleware-token/src/normalizeTokenProvider.spec.ts
index 54bd27d73dff..9a4ef2033b78 100644
--- a/packages/middleware-token/src/normalizeTokenProvider.spec.ts
+++ b/packages/middleware-token/src/normalizeTokenProvider.spec.ts
@@ -1,10 +1,11 @@
import { memoize } from "@smithy/property-provider";
import { normalizeProvider } from "@smithy/util-middleware";
+import { afterEach, beforeEach, describe, expect, expect, test as it, vi } from "vitest";
import { normalizeTokenProvider } from "./normalizeTokenProvider";
-jest.mock("@smithy/property-provider");
-jest.mock("@smithy/util-middleware");
+vi.mock("@smithy/property-provider");
+vi.mock("@smithy/util-middleware");
const ONE_SECOND_IN_MS = 1000;
const ONE_HOUR_IN_MS = 3600 * ONE_SECOND_IN_MS;
@@ -16,13 +17,13 @@ describe(normalizeTokenProvider.name, () => {
};
afterEach(() => {
- jest.clearAllMocks();
+ vi.clearAllMocks();
});
describe("if token is a function", () => {
- const mockInputToken = jest.fn();
- const mockMemoizeFn = jest.fn().mockResolvedValue(mockToken);
- (memoize as jest.Mock).mockReturnValue(mockMemoizeFn);
+ const mockInputToken = vi.fn();
+ const mockMemoizeFn = vi.fn().mockResolvedValue(mockToken);
+ vi.mocked(memoize).mockReturnValue(mockMemoizeFn);
afterEach(() => {
expect(memoize).toHaveBeenCalledWith(mockInputToken, expect.any(Function), expect.any(Function));
@@ -38,30 +39,30 @@ describe(normalizeTokenProvider.name, () => {
const mockDateNow = Date.now();
beforeEach(async () => {
- jest.spyOn(Date, "now").mockReturnValueOnce(mockDateNow);
+ vi.spyOn(Date, "now").mockReturnValueOnce(mockDateNow);
normalizeTokenProvider(mockInputToken);
});
it("returns true if expiration is defined, and token has expired", () => {
- const memoizeExpiredFn = (memoize as jest.Mock).mock.calls[0][1];
+ const memoizeExpiredFn = vi.mocked(memoize).mock.calls[0][1];
const expiration = new Date(mockDateNow - 24 * ONE_HOUR_IN_MS);
expect(memoizeExpiredFn({ expiration })).toEqual(true);
});
it("returns true if expiration is defined, and token expires in <5 mins", () => {
- const memoizeExpiredFn = (memoize as jest.Mock).mock.calls[0][1];
+ const memoizeExpiredFn = vi.mocked(memoize).mock.calls[0][1];
const expiration = new Date(mockDateNow + 299 * ONE_SECOND_IN_MS);
expect(memoizeExpiredFn({ expiration })).toEqual(true);
});
it("returns false if expiration is defined, but token expires in >5 mins", () => {
- const memoizeExpiredFn = (memoize as jest.Mock).mock.calls[0][1];
+ const memoizeExpiredFn = vi.mocked(memoize).mock.calls[0][1];
const expiration = new Date(mockDateNow + 301 * ONE_SECOND_IN_MS);
expect(memoizeExpiredFn({ expiration })).toEqual(false);
});
it("returns false if expiration is not defined", () => {
- const memoizeExpiredFn = (memoize as jest.Mock).mock.calls[0][1];
+ const memoizeExpiredFn = vi.mocked(memoize).mock.calls[0][1];
expect(memoizeExpiredFn({})).toEqual(false);
});
});
@@ -72,13 +73,13 @@ describe(normalizeTokenProvider.name, () => {
});
it("returns true if expiration is not defined", () => {
- const memoizeRefreshFn = (memoize as jest.Mock).mock.calls[0][2];
+ const memoizeRefreshFn = vi.mocked(memoize).mock.calls[0][2];
const expiration = Date.now();
expect(memoizeRefreshFn({ expiration })).toEqual(true);
});
it("returns false if expiration is not defined", () => {
- const memoizeRefreshFn = (memoize as jest.Mock).mock.calls[0][2];
+ const memoizeRefreshFn = vi.mocked(memoize).mock.calls[0][2];
expect(memoizeRefreshFn({})).toEqual(false);
});
});
diff --git a/packages/middleware-token/src/resolveTokenConfig.spec.ts b/packages/middleware-token/src/resolveTokenConfig.spec.ts
index 8eae1a6c3b1a..18ab6f5b5886 100644
--- a/packages/middleware-token/src/resolveTokenConfig.spec.ts
+++ b/packages/middleware-token/src/resolveTokenConfig.spec.ts
@@ -1,9 +1,11 @@
+import { afterEach, beforeEach, describe, expect, test as it, vi } from "vitest";
+
import { normalizeTokenProvider } from "./normalizeTokenProvider";
import { resolveTokenConfig } from "./resolveTokenConfig";
import { tokenDefaultProvider } from "./tokenDefaultProvider";
-jest.mock("./normalizeTokenProvider");
-jest.mock("./tokenDefaultProvider");
+vi.mock("./normalizeTokenProvider");
+vi.mock("./tokenDefaultProvider");
const ONE_HOUR_IN_MS = 3600 * 1000;
@@ -16,13 +18,13 @@ describe(resolveTokenConfig.name, () => {
});
afterEach(() => {
- jest.clearAllMocks();
+ vi.clearAllMocks();
});
describe("sets token from normalizeTokenProvider if token is provided", () => {
beforeEach(() => {
- (normalizeTokenProvider as jest.Mock).mockReturnValue(mockOutputToken);
- (tokenDefaultProvider as jest.Mock).mockReturnValue(mockOutputToken);
+ vi.mocked(normalizeTokenProvider).mockReturnValue(mockOutputToken);
+ vi.mocked(tokenDefaultProvider).mockReturnValue(mockOutputToken);
});
afterEach(() => {
@@ -35,7 +37,7 @@ describe(resolveTokenConfig.name, () => {
};
it("when token is a function", () => {
- testTokenProviderWithToken(jest.fn());
+ testTokenProviderWithToken(vi.fn());
});
it("when token is an object", () => {
@@ -47,7 +49,7 @@ describe(resolveTokenConfig.name, () => {
});
it("sets token from tokenDefaultProvider if token is not provided", () => {
- (tokenDefaultProvider as jest.Mock).mockReturnValue(mockOutputToken);
+ vi.mocked(tokenDefaultProvider).mockReturnValue(mockOutputToken);
expect(resolveTokenConfig(mockInput)).toEqual({ ...mockInput, token: mockOutputToken });
expect(tokenDefaultProvider).toHaveBeenCalledWith(mockInput);
expect(normalizeTokenProvider).not.toHaveBeenCalled();
diff --git a/packages/middleware-token/src/tokenDefaultProvider.browser.spec.ts b/packages/middleware-token/src/tokenDefaultProvider.browser.spec.ts
index cf70bc75df54..3dc98950bfb6 100644
--- a/packages/middleware-token/src/tokenDefaultProvider.browser.spec.ts
+++ b/packages/middleware-token/src/tokenDefaultProvider.browser.spec.ts
@@ -1,3 +1,5 @@
+import { describe, expect, test as it } from "vitest";
+
/**
* @jest-environment jsdom
*/
diff --git a/packages/middleware-token/src/tokenDefaultProvider.spec.ts b/packages/middleware-token/src/tokenDefaultProvider.spec.ts
index 0a3e5adaefd6..68af187476e4 100644
--- a/packages/middleware-token/src/tokenDefaultProvider.spec.ts
+++ b/packages/middleware-token/src/tokenDefaultProvider.spec.ts
@@ -1,8 +1,9 @@
import { nodeProvider } from "@aws-sdk/token-providers";
+import { afterEach, beforeEach, describe, expect, test as it, vi } from "vitest";
import { tokenDefaultProvider } from "./tokenDefaultProvider";
-jest.mock("@aws-sdk/token-providers");
+vi.mock("@aws-sdk/token-providers");
const ONE_HOUR_IN_MS = 3600 * 1000;
@@ -14,11 +15,11 @@ describe(tokenDefaultProvider.name, () => {
});
beforeEach(() => {
- (nodeProvider as jest.Mock).mockReturnValue(mockOutputToken);
+ vi.mocked(nodeProvider).mockReturnValue(mockOutputToken);
});
afterEach(() => {
- jest.clearAllMocks();
+ vi.clearAllMocks();
});
it("should return nodeProvider", () => {
diff --git a/packages/middleware-token/src/tokenMiddleware.spec.ts b/packages/middleware-token/src/tokenMiddleware.spec.ts
index 6505ec5700fb..2e99e8a0a482 100644
--- a/packages/middleware-token/src/tokenMiddleware.spec.ts
+++ b/packages/middleware-token/src/tokenMiddleware.spec.ts
@@ -1,8 +1,9 @@
import { HttpRequest } from "@smithy/protocol-http";
+import { afterEach, beforeEach, describe, expect, test as it, vi } from "vitest";
import { tokenMiddleware } from "./tokenMiddleware";
-jest.mock("@smithy/protocol-http");
+vi.mock("@smithy/protocol-http");
const ONE_HOUR_IN_MS = 3600 * 1000;
@@ -11,23 +12,23 @@ describe(tokenMiddleware.name, () => {
token: "mockAccessToken",
expiration: new Date(Date.now() + ONE_HOUR_IN_MS),
};
- const mockTokenProvider = jest.fn().mockReturnValue(Promise.resolve(mockToken));
+ const mockTokenProvider = vi.fn().mockReturnValue(Promise.resolve(mockToken));
const mockOptions = {
token: mockTokenProvider,
};
- const mockNext = jest.fn();
+ const mockNext = vi.fn();
const mockContext = {};
const mockArgs = { request: { headers: {} } };
afterEach(() => {
- jest.clearAllMocks();
+ vi.clearAllMocks();
});
it("no changes if it's not an HttpRequest", async () => {
const { isInstance } = HttpRequest;
- (isInstance as unknown as jest.Mock).mockReturnValue(false);
+ (isInstance as unknown as any).mockReturnValue(false);
await tokenMiddleware(mockOptions)(mockNext, mockContext)(mockArgs as any);
expect(mockNext).toHaveBeenCalledWith(mockArgs);
expect(mockOptions.token).not.toHaveBeenCalled();
@@ -36,7 +37,7 @@ describe(tokenMiddleware.name, () => {
describe("HttpRequest", () => {
beforeEach(() => {
const { isInstance } = HttpRequest;
- (isInstance as unknown as jest.Mock).mockReturnValue(true);
+ (isInstance as unknown as any).mockReturnValue(true);
});
it("continues if token is not provided", async () => {
diff --git a/packages/middleware-token/vitest.config.integ.ts b/packages/middleware-token/vitest.config.integ.ts
new file mode 100644
index 000000000000..5802db1ac64a
--- /dev/null
+++ b/packages/middleware-token/vitest.config.integ.ts
@@ -0,0 +1,8 @@
+import { defineConfig } from "vitest/config";
+
+export default defineConfig({
+ test: {
+ include: ["**/*.integ.spec.ts"],
+ environment: "node",
+ },
+});
diff --git a/packages/middleware-token/vitest.config.ts b/packages/middleware-token/vitest.config.ts
new file mode 100644
index 000000000000..4e46707824a5
--- /dev/null
+++ b/packages/middleware-token/vitest.config.ts
@@ -0,0 +1,9 @@
+import { defineConfig } from "vitest/config";
+
+export default defineConfig({
+ test: {
+ exclude: ["**/*.{integ,e2e,browser}.spec.ts"],
+ include: ["**/*.spec.ts"],
+ environment: "node",
+ },
+});
diff --git a/packages/middleware-user-agent/jest.config.integ.js b/packages/middleware-user-agent/jest.config.integ.js
deleted file mode 100644
index d09aba7398c7..000000000000
--- a/packages/middleware-user-agent/jest.config.integ.js
+++ /dev/null
@@ -1,4 +0,0 @@
-module.exports = {
- preset: "ts-jest",
- testMatch: ["**/*.integ.spec.ts"],
-};
diff --git a/packages/middleware-user-agent/jest.config.js b/packages/middleware-user-agent/jest.config.js
deleted file mode 100644
index a8d1c2e49912..000000000000
--- a/packages/middleware-user-agent/jest.config.js
+++ /dev/null
@@ -1,5 +0,0 @@
-const base = require("../../jest.config.base.js");
-
-module.exports = {
- ...base,
-};
diff --git a/packages/middleware-user-agent/package.json b/packages/middleware-user-agent/package.json
index c8a0c4872597..0e3649226fb5 100644
--- a/packages/middleware-user-agent/package.json
+++ b/packages/middleware-user-agent/package.json
@@ -9,9 +9,11 @@
"build:types": "tsc -p tsconfig.types.json",
"build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4",
"clean": "rimraf ./dist-* && rimraf *.tsbuildinfo",
- "test": "jest --passWithNoTests",
- "test:integration": "jest -c jest.config.integ.js",
- "extract:docs": "api-extractor run --local"
+ "test": "vitest run",
+ "test:integration": "vitest run -c vitest.config.integ.ts",
+ "extract:docs": "api-extractor run --local",
+ "test:watch": "vitest watch",
+ "test:integration:watch": "vitest watch -c vitest.config.integ.ts"
},
"main": "./dist-cjs/index.js",
"module": "./dist-es/index.js",
diff --git a/packages/middleware-user-agent/src/check-features.spec.ts b/packages/middleware-user-agent/src/check-features.spec.ts
index 685afb723d98..d52fa4040504 100644
--- a/packages/middleware-user-agent/src/check-features.spec.ts
+++ b/packages/middleware-user-agent/src/check-features.spec.ts
@@ -1,11 +1,12 @@
import { AwsHandlerExecutionContext } from "@aws-sdk/types";
+import { describe, expect, test as it, vi } from "vitest";
import { checkFeatures } from "./check-features";
describe(checkFeatures.name, () => {
it("should not call the credentials provider to retrieve the identity", async () => {
const config = {
- credentials: jest.fn(),
+ credentials: vi.fn(),
};
const context = {
diff --git a/packages/middleware-user-agent/src/encode-features.spec.ts b/packages/middleware-user-agent/src/encode-features.spec.ts
index c9b01a0eb166..e893e895067b 100644
--- a/packages/middleware-user-agent/src/encode-features.spec.ts
+++ b/packages/middleware-user-agent/src/encode-features.spec.ts
@@ -1,3 +1,5 @@
+import { describe, expect, test as it } from "vitest";
+
import { encodeFeatures } from "./encode-features";
describe(encodeFeatures.name, () => {
diff --git a/packages/middleware-user-agent/src/middleware-user-agent.integ.spec.ts b/packages/middleware-user-agent/src/middleware-user-agent.integ.spec.ts
index 2ee442d5bf28..0289ad462e1d 100644
--- a/packages/middleware-user-agent/src/middleware-user-agent.integ.spec.ts
+++ b/packages/middleware-user-agent/src/middleware-user-agent.integ.spec.ts
@@ -1,6 +1,7 @@
import { CodeCatalyst } from "@aws-sdk/client-codecatalyst";
import { DynamoDB } from "@aws-sdk/client-dynamodb";
import { DynamoDBDocument } from "@aws-sdk/lib-dynamodb";
+import { describe, test as it } from "vitest";
import { requireRequestsFrom } from "../../../private/aws-util-test/src";
diff --git a/packages/middleware-user-agent/src/user-agent-middleware.spec.ts b/packages/middleware-user-agent/src/user-agent-middleware.spec.ts
index b01e90b967ea..d305f77e67da 100644
--- a/packages/middleware-user-agent/src/user-agent-middleware.spec.ts
+++ b/packages/middleware-user-agent/src/user-agent-middleware.spec.ts
@@ -1,16 +1,17 @@
import { setPartitionInfo, useDefaultPartitionInfo } from "@aws-sdk/util-endpoints";
import { HttpRequest } from "@smithy/protocol-http";
import { UserAgentPair } from "@smithy/types";
+import { afterEach, beforeEach, describe, expect, expect, test as it, vi } from "vitest";
import { USER_AGENT, X_AMZ_USER_AGENT } from "./constants";
import { userAgentMiddleware } from "./user-agent-middleware";
describe("userAgentMiddleware", () => {
- const mockNextHandler = jest.fn();
- const mockInternalNextHandler = jest.fn();
+ const mockNextHandler = vi.fn();
+ const mockInternalNextHandler = vi.fn();
beforeEach(() => {
- jest.clearAllMocks();
+ vi.clearAllMocks();
});
afterEach(() => {
diff --git a/packages/middleware-user-agent/vitest.config.integ.ts b/packages/middleware-user-agent/vitest.config.integ.ts
new file mode 100644
index 000000000000..5802db1ac64a
--- /dev/null
+++ b/packages/middleware-user-agent/vitest.config.integ.ts
@@ -0,0 +1,8 @@
+import { defineConfig } from "vitest/config";
+
+export default defineConfig({
+ test: {
+ include: ["**/*.integ.spec.ts"],
+ environment: "node",
+ },
+});
diff --git a/packages/middleware-user-agent/vitest.config.ts b/packages/middleware-user-agent/vitest.config.ts
new file mode 100644
index 000000000000..4e46707824a5
--- /dev/null
+++ b/packages/middleware-user-agent/vitest.config.ts
@@ -0,0 +1,9 @@
+import { defineConfig } from "vitest/config";
+
+export default defineConfig({
+ test: {
+ exclude: ["**/*.{integ,e2e,browser}.spec.ts"],
+ include: ["**/*.spec.ts"],
+ environment: "node",
+ },
+});
diff --git a/packages/middleware-websocket/jest.config.integ.js b/packages/middleware-websocket/jest.config.integ.js
deleted file mode 100644
index d09aba7398c7..000000000000
--- a/packages/middleware-websocket/jest.config.integ.js
+++ /dev/null
@@ -1,4 +0,0 @@
-module.exports = {
- preset: "ts-jest",
- testMatch: ["**/*.integ.spec.ts"],
-};
diff --git a/packages/middleware-websocket/jest.config.js b/packages/middleware-websocket/jest.config.js
deleted file mode 100644
index 64f3d932819c..000000000000
--- a/packages/middleware-websocket/jest.config.js
+++ /dev/null
@@ -1,7 +0,0 @@
-const base = require("../../jest.config.base.js");
-
-module.exports = {
- ...base,
- //only test cjs dist, avoid testing the package twice
- testPathIgnorePatterns: ["/node_modules/", "/es/"],
-};
diff --git a/packages/middleware-websocket/package.json b/packages/middleware-websocket/package.json
index c4f2089fcdeb..0078ae137360 100644
--- a/packages/middleware-websocket/package.json
+++ b/packages/middleware-websocket/package.json
@@ -12,8 +12,10 @@
"build:types": "tsc -p tsconfig.types.json",
"build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4",
"clean": "rimraf ./dist-* && rimraf *.tsbuildinfo",
- "test": "jest",
- "test:integration": "jest -c jest.config.integ.js"
+ "test": "vitest run",
+ "test:integration": "vitest run -c vitest.config.integ.ts",
+ "test:watch": "vitest watch",
+ "test:integration:watch": "vitest watch -c vitest.config.integ.ts"
},
"author": {
"name": "AWS SDK for JavaScript Team",
@@ -37,7 +39,7 @@
"@tsconfig/recommended": "1.0.1",
"concurrently": "7.0.0",
"downlevel-dts": "0.10.1",
- "jest-websocket-mock": "^2.0.2",
+ "vitest-websocket-mock": "0.2.3",
"mock-socket": "9.1.5",
"rimraf": "3.0.2",
"typescript": "~4.9.5",
diff --git a/packages/middleware-websocket/src/EventStreamPayloadHandler.spec.ts b/packages/middleware-websocket/src/EventStreamPayloadHandler.spec.ts
index f4975d7583d0..70a93a930106 100644
--- a/packages/middleware-websocket/src/EventStreamPayloadHandler.spec.ts
+++ b/packages/middleware-websocket/src/EventStreamPayloadHandler.spec.ts
@@ -1,34 +1,32 @@
-/**
- * @jest-environment jsdom
- */
import { EventStreamCodec } from "@smithy/eventstream-codec";
import { Decoder, Encoder, FinalizeHandler, FinalizeHandlerArguments, HttpRequest, MessageSigner } from "@smithy/types";
+import { afterEach, beforeEach, describe, expect, expect, test as it, vi } from "vitest";
import { ReadableStream, TransformStream } from "web-streams-polyfill";
import { EventStreamPayloadHandler } from "./EventStreamPayloadHandler";
import { getEventSigningTransformStream } from "./get-event-signing-stream";
-jest.mock("./get-event-signing-stream");
-jest.mock("@smithy/eventstream-codec");
+vi.mock("./get-event-signing-stream");
+vi.mock("@smithy/eventstream-codec");
describe(EventStreamPayloadHandler.name, () => {
const mockSigner: MessageSigner = {
- sign: jest.fn(),
- signMessage: jest.fn(),
+ sign: vi.fn(),
+ signMessage: vi.fn(),
};
- const mockUtf8Decoder: Decoder = jest.fn();
- const mockUtf8encoder: Encoder = jest.fn();
- const mockNextHandler: FinalizeHandler = jest.fn();
+ const mockUtf8Decoder: Decoder = vi.fn();
+ const mockUtf8encoder: Encoder = vi.fn();
+ const mockNextHandler: FinalizeHandler = vi.fn();
const originalTransformStreamCtor = window.TransformStream;
beforeEach(() => {
window.TransformStream = TransformStream;
- (getEventSigningTransformStream as unknown as jest.Mock).mockImplementation(() => new TransformStream());
- (EventStreamCodec as jest.Mock).mockImplementation(() => {});
+ (getEventSigningTransformStream as unknown as any).mockImplementation(() => new TransformStream());
+ vi.mocked(EventStreamCodec).mockImplementation(() => {});
});
afterEach(() => {
window.TransformStream = originalTransformStreamCtor;
- jest.clearAllMocks();
+ vi.clearAllMocks();
});
it("should throw if request payload is not a stream", () => {
diff --git a/packages/middleware-websocket/src/WebsocketSignatureV4.spec.ts b/packages/middleware-websocket/src/WebsocketSignatureV4.spec.ts
index d8e4b79729e6..8e14e446f78a 100644
--- a/packages/middleware-websocket/src/WebsocketSignatureV4.spec.ts
+++ b/packages/middleware-websocket/src/WebsocketSignatureV4.spec.ts
@@ -1,17 +1,18 @@
// TODO: remove this file as duplicated to @aws-sdk/middleware-websocket
import { HttpRequest } from "@smithy/protocol-http";
import { RequestPresigningArguments, RequestSigningArguments } from "@smithy/types";
+import { afterEach, beforeEach, describe, expect, test as it, vi } from "vitest";
import { WebsocketSignatureV4 } from "./WebsocketSignatureV4";
-jest.mock("@smithy/protocol-http");
+vi.mock("@smithy/protocol-http");
describe("WebsocketSignatureV4", () => {
const mockPresignedRequest = { req: "mockPresignedRequest" };
const mockSignedRequest = { req: "mockSignedRequest" };
- const presign = jest.fn().mockResolvedValue(mockPresignedRequest);
- const sign = jest.fn().mockResolvedValue(mockSignedRequest);
+ const presign = vi.fn().mockResolvedValue(mockPresignedRequest);
+ const sign = vi.fn().mockResolvedValue(mockSignedRequest);
const headers = {
"x-amz-foo": "foo",
@@ -25,7 +26,7 @@ describe("WebsocketSignatureV4", () => {
const sigV4 = new WebsocketSignatureV4({ signer: { sign, presign } as any });
afterEach(() => {
- jest.clearAllMocks();
+ vi.clearAllMocks();
});
describe("presign", () => {
@@ -55,7 +56,7 @@ describe("WebsocketSignatureV4", () => {
const { isInstance } = HttpRequest;
beforeEach(() => {
- (isInstance as unknown as jest.Mock).mockReturnValueOnce(true);
+ (isInstance as unknown as any).mockReturnValueOnce(true);
});
const expectSignArgs = (result: any, options: RequestPresigningArguments = {}) => {
@@ -94,7 +95,7 @@ describe("WebsocketSignatureV4", () => {
const { isInstance } = HttpRequest;
beforeEach(() => {
- (isInstance as unknown as jest.Mock).mockReturnValueOnce(false);
+ (isInstance as unknown as any).mockReturnValueOnce(false);
});
const expectSignArgs = (result: any, options?: RequestSigningArguments) => {
diff --git a/packages/middleware-websocket/src/get-event-signing-stream.spec.ts b/packages/middleware-websocket/src/get-event-signing-stream.spec.ts
index 2936ab3d3ee7..82ef6ea1bf5a 100644
--- a/packages/middleware-websocket/src/get-event-signing-stream.spec.ts
+++ b/packages/middleware-websocket/src/get-event-signing-stream.spec.ts
@@ -1,9 +1,7 @@
-/**
- * @jest-environment jsdom
- */
import { EventStreamCodec } from "@smithy/eventstream-codec";
import { Message, MessageHeaders, SignedMessage } from "@smithy/types";
import { fromUtf8, toUtf8 } from "@smithy/util-utf8";
+import { afterEach, beforeEach, describe, expect, test as it, vi } from "vitest";
import { TransformStream } from "web-streams-polyfill";
import { getEventSigningTransformStream } from "./get-event-signing-stream";
@@ -58,7 +56,7 @@ describe(getEventSigningTransformStream.name, () => {
headers: {},
body: fromUtf8("bar"),
};
- const mockMessageSigner = jest
+ const mockMessageSigner = vi
.fn()
.mockReturnValueOnce({ message: message1, signature: "7369676e617475726531" } as SignedMessage) //'signature1'
.mockReturnValueOnce({ message: message2, signature: "7369676e617475726532" } as SignedMessage); //'signature2'
diff --git a/packages/middleware-websocket/src/middleware-session-id.spec.ts b/packages/middleware-websocket/src/middleware-session-id.spec.ts
index cb9e6d05d6b2..6ca95c4fa706 100644
--- a/packages/middleware-websocket/src/middleware-session-id.spec.ts
+++ b/packages/middleware-websocket/src/middleware-session-id.spec.ts
@@ -1,7 +1,9 @@
+import { describe, expect, test as it, vi } from "vitest";
+
import { injectSessionIdMiddleware } from "./middleware-session-id";
describe(injectSessionIdMiddleware.name, () => {
- const mockNextHandler = jest.fn().mockResolvedValue({ output: {} });
+ const mockNextHandler = vi.fn().mockResolvedValue({ output: {} });
it("should populate the SessionId parameter in response", async () => {
const mw = injectSessionIdMiddleware();
const { output } = await mw(mockNextHandler as any, {} as any)({ input: { SessionId: "ID" } });
diff --git a/packages/middleware-websocket/src/middleware-websocket-endpoint.spec.ts b/packages/middleware-websocket/src/middleware-websocket-endpoint.spec.ts
index fe4658023d32..f2ba4ca18e07 100644
--- a/packages/middleware-websocket/src/middleware-websocket-endpoint.spec.ts
+++ b/packages/middleware-websocket/src/middleware-websocket-endpoint.spec.ts
@@ -1,30 +1,36 @@
import { HttpRequest } from "@smithy/protocol-http";
import { BuildHandlerArguments, RequestHandler } from "@smithy/types";
+import { describe, expect, test as it } from "vitest";
import { websocketEndpointMiddleware } from "./middleware-websocket-endpoint";
describe(websocketEndpointMiddleware.name, () => {
const config = { requestHandler: { metadata: { handlerProtocol: "websocket/h1.1" } } as RequestHandler };
const handlerOption = { headerPrefix: "some-thing" };
- it("should skip non-http request", (done) => {
+ it("should skip non-http request", async () => {
const nonHttpRequest = {
foo: "bar",
};
+ let resolve: (resolved?: unknown) => void;
+ const promise = new Promise((r) => (resolve = r));
const next = (args: BuildHandlerArguments) => {
expect(args.request).toEqual(nonHttpRequest);
- done();
+ resolve();
};
const mw = websocketEndpointMiddleware(config, handlerOption);
mw(next as any, {} as any)({ request: nonHttpRequest, input: {} });
+ await promise;
});
- it("should update endpoint to websocket url", (done) => {
+ it("should update endpoint to websocket url", async () => {
const request = new HttpRequest({
protocol: "https:",
hostname: "foo.us-east-1.amazonaws.com",
path: "/stream-operation",
method: "POST",
});
+ let resolve: (resolved?: unknown) => void;
+ const promise = new Promise((r) => (resolve = r));
const next = (args: BuildHandlerArguments) => {
expect(HttpRequest.isInstance(args.request)).toBeTruthy();
const processed = args.request as HttpRequest;
@@ -32,13 +38,14 @@ describe(websocketEndpointMiddleware.name, () => {
expect(processed.hostname).toEqual("foo.us-east-1.amazonaws.com");
expect(processed.path).toEqual("/stream-operation-websocket");
expect(processed.method).toEqual("GET");
- done();
+ resolve();
};
const mw = websocketEndpointMiddleware(config, handlerOption);
mw(next as any, {} as any)({ request, input: {} });
+ await promise;
});
- it("should remove content-type and sha256 hash header without transferring them to query parameters", (done) => {
+ it("should remove content-type and sha256 hash header without transferring them to query parameters", async () => {
const request = new HttpRequest({
headers: {
"content-type": "application/vnd.amazon.eventstream",
@@ -47,33 +54,39 @@ describe(websocketEndpointMiddleware.name, () => {
"X-Amz-Content-Sha256": "STREAMING-AWS4-HMAC-SHA256-EVENTS",
},
});
+ let resolve: (resolved?: unknown) => void;
+ const promise = new Promise((r) => (resolve = r));
const next = (args: BuildHandlerArguments) => {
expect(HttpRequest.isInstance(args.request)).toBeTruthy();
const processed = args.request as HttpRequest;
const queryKeys = Object.keys(processed.query).map((key) => key.toLowerCase());
expect(queryKeys).not.toContain("content-type");
expect(queryKeys).not.toContain("x-amz-content-sha256");
- done();
+ resolve();
};
const mw = websocketEndpointMiddleware(config, handlerOption);
mw(next as any, {} as any)({ request, input: {} });
+ await promise;
});
- it("should contain only a host header after adjustment", (done) => {
+ it("should contain only a host header after adjustment", async () => {
const request = new HttpRequest({});
+ let resolve: (resolved?: unknown) => void;
+ const promise = new Promise((r) => (resolve = r));
const next = (args: BuildHandlerArguments) => {
expect(HttpRequest.isInstance(args.request)).toBeTruthy();
const processed = args.request as HttpRequest;
const headerKeys = Object.keys(processed.headers).map((key) => key.toLowerCase());
expect(headerKeys).toEqual(["host"]);
expect(processed.headers["host"]).toBeDefined();
- done();
+ resolve();
};
const mw = websocketEndpointMiddleware(config, handlerOption);
mw(next as any, {} as any)({ request, input: {} });
+ await promise;
});
- it("should move API parameters from headers to query", (done) => {
+ it("should move API parameters from headers to query", async () => {
const request = new HttpRequest({
headers: {
"x-amzn-transcribe-language-code": "en-US",
@@ -83,6 +96,8 @@ describe(websocketEndpointMiddleware.name, () => {
"x-amzn-transcribe-sample-rate": "44100",
},
});
+ let resolve: (resolved?: unknown) => void;
+ const promise = new Promise((r) => (resolve = r));
const next = (args: BuildHandlerArguments) => {
expect(HttpRequest.isInstance(args.request)).toBeTruthy();
const processed = args.request as HttpRequest;
@@ -93,9 +108,10 @@ describe(websocketEndpointMiddleware.name, () => {
"vocabulary-name": "abc",
"sample-rate": "44100",
});
- done();
+ resolve();
};
const mw = websocketEndpointMiddleware(config, { headerPrefix: "x-amzn-transcribe-" });
mw(next as any, {} as any)({ request, input: {} });
+ await promise;
});
});
diff --git a/packages/middleware-websocket/src/middleware-websocket.integ.spec.ts b/packages/middleware-websocket/src/middleware-websocket.integ.spec.ts
index 26ce910f83f5..926bac4fb669 100644
--- a/packages/middleware-websocket/src/middleware-websocket.integ.spec.ts
+++ b/packages/middleware-websocket/src/middleware-websocket.integ.spec.ts
@@ -1,4 +1,5 @@
import { RekognitionStreaming } from "@aws-sdk/client-rekognitionstreaming";
+import { describe, test as it } from "vitest";
import { requireRequestsFrom } from "../../../private/aws-util-test/src";
diff --git a/packages/middleware-websocket/src/websocket-fetch-handler.spec.ts b/packages/middleware-websocket/src/websocket-fetch-handler.spec.ts
index 2125a8ebc21d..6194081a03de 100644
--- a/packages/middleware-websocket/src/websocket-fetch-handler.spec.ts
+++ b/packages/middleware-websocket/src/websocket-fetch-handler.spec.ts
@@ -1,19 +1,20 @@
import { FetchHttpHandler } from "@smithy/fetch-http-handler";
import { HttpRequest } from "@smithy/protocol-http";
-import WS from "jest-websocket-mock";
import { WebSocket } from "mock-socket";
import { PassThrough } from "stream";
+import { afterEach, beforeEach, describe, expect, expect, test as it, vi } from "vitest";
+import WS from "vitest-websocket-mock";
import { WebSocketFetchHandler } from "./websocket-fetch-handler";
-jest.mock("@smithy/fetch-http-handler");
+vi.mock("@smithy/fetch-http-handler");
describe(WebSocketFetchHandler.name, () => {
const mockHostname = "localhost:6789";
const mockUrl = `ws://${mockHostname}/`;
beforeEach(() => {
- jest.clearAllMocks();
+ vi.clearAllMocks();
});
describe("should handle WebSocket connections", () => {
@@ -117,7 +118,7 @@ describe(WebSocketFetchHandler.name, () => {
it("should return retryable error if cannot setup ws connection", async () => {
expect.assertions(5);
const originalFn = setTimeout;
- (global as any).setTimeout = jest.fn().mockImplementation(setTimeout);
+ (global as any).setTimeout = vi.fn().mockImplementation(setTimeout);
const connectionTimeout = 1000;
const handler = new WebSocketFetchHandler(async () => ({ connectionTimeout }));
//Using Node stream is fine because they are also async iterables.
@@ -138,7 +139,7 @@ describe(WebSocketFetchHandler.name, () => {
expect(err.$metadata).toBeDefined();
expect(err.$metadata.httpStatusCode >= 500).toBe(true);
expect(
- ((global as any).setTimeout as jest.Mock).mock.calls.filter((args) => {
+ ((global as any).setTimeout as any).mock.calls.filter((args) => {
//find the 'setTimeout' call from the websocket handler
return args[0].toString().indexOf("$metadata") >= 0;
})[0][1]
diff --git a/packages/middleware-websocket/vitest.config.integ.ts b/packages/middleware-websocket/vitest.config.integ.ts
new file mode 100644
index 000000000000..5802db1ac64a
--- /dev/null
+++ b/packages/middleware-websocket/vitest.config.integ.ts
@@ -0,0 +1,8 @@
+import { defineConfig } from "vitest/config";
+
+export default defineConfig({
+ test: {
+ include: ["**/*.integ.spec.ts"],
+ environment: "node",
+ },
+});
diff --git a/packages/middleware-websocket/vitest.config.ts b/packages/middleware-websocket/vitest.config.ts
new file mode 100644
index 000000000000..44808064872c
--- /dev/null
+++ b/packages/middleware-websocket/vitest.config.ts
@@ -0,0 +1,9 @@
+import { defineConfig } from "vitest/config";
+
+export default defineConfig({
+ test: {
+ exclude: ["**/*.{integ,e2e}.spec.ts"],
+ include: ["**/*.spec.ts"],
+ environment: "happy-dom",
+ },
+});
diff --git a/packages/s3-presigned-post/jest.config.e2e.js b/packages/s3-presigned-post/jest.config.e2e.js
deleted file mode 100644
index b4d9bee23f48..000000000000
--- a/packages/s3-presigned-post/jest.config.e2e.js
+++ /dev/null
@@ -1,4 +0,0 @@
-module.exports = {
- preset: "ts-jest",
- testMatch: ["**/*.e2e.spec.ts"],
-};
diff --git a/packages/s3-presigned-post/jest.config.js b/packages/s3-presigned-post/jest.config.js
deleted file mode 100644
index a8d1c2e49912..000000000000
--- a/packages/s3-presigned-post/jest.config.js
+++ /dev/null
@@ -1,5 +0,0 @@
-const base = require("../../jest.config.base.js");
-
-module.exports = {
- ...base,
-};
diff --git a/packages/s3-presigned-post/package.json b/packages/s3-presigned-post/package.json
index eef9078b57ba..fb84b6240dcd 100644
--- a/packages/s3-presigned-post/package.json
+++ b/packages/s3-presigned-post/package.json
@@ -10,8 +10,10 @@
"build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4",
"clean": "rimraf ./dist-* && rimraf *.tsbuildinfo",
"extract:docs": "api-extractor run --local",
- "test": "jest",
- "test:e2e": "jest -c jest.config.e2e.js"
+ "test": "vitest run",
+ "test:e2e": "vitest run -c vitest.config.e2e.ts",
+ "test:watch": "vitest watch",
+ "test:e2e:watch": "vitest watch -c vitest.config.e2e.ts"
},
"main": "./dist-cjs/index.js",
"module": "./dist-es/index.js",
diff --git a/packages/s3-presigned-post/src/createPresignedPost.e2e.spec.ts b/packages/s3-presigned-post/src/createPresignedPost.e2e.spec.ts
index 2a2686c44d4f..49d719c6e354 100644
--- a/packages/s3-presigned-post/src/createPresignedPost.e2e.spec.ts
+++ b/packages/s3-presigned-post/src/createPresignedPost.e2e.spec.ts
@@ -1,24 +1,27 @@
// Run using AWS_SMOKE_TEST_REGION=[Region] AWS_SMOKE_TEST_BUCKET=[Bucket] yarn test:e2e
// These params are established in /tests/e2e.
-
import { NoSuchKey, S3 } from "@aws-sdk/client-s3";
+import { afterAll, afterEach, beforeAll, beforeEach, describe, expect, test as it } from "vitest";
const FormData = require("form-data");
import { createReadStream, existsSync, rmSync, writeFileSync } from "fs";
import { join } from "path";
+import { getIntegTestResources } from "../../../tests/e2e/get-integ-test-resources";
import { createPresignedPost } from "./createPresignedPost";
-const region = process.env.AWS_SMOKE_TEST_REGION ?? "";
-const Bucket = process.env.AWS_SMOKE_TEST_BUCKET ?? "";
-if (!Bucket) {
- throw new Error("process.env.AWS_SMOKE_TEST_BUCKET is not set.");
-}
-if (!region) {
- throw new Error("process.env.AWS_SMOKE_TEST_REGION is not set.");
-}
-
describe(createPresignedPost.name, () => {
+ let Bucket: string;
+ let region: string;
+
+ beforeAll(async () => {
+ const integTestResourcesEnv = await getIntegTestResources();
+ Object.assign(process.env, integTestResourcesEnv);
+
+ region = process?.env?.AWS_SMOKE_TEST_REGION as string;
+ Bucket = process?.env?.AWS_SMOKE_TEST_BUCKET as string;
+ });
+
it("should allow custom endpoints to be modified by endpoint resolution options", async () => {
const Key = "test-key";
{
diff --git a/packages/s3-presigned-post/src/createPresignedPost.spec.ts b/packages/s3-presigned-post/src/createPresignedPost.spec.ts
index dd8d32bae25b..5387efc0fe80 100644
--- a/packages/s3-presigned-post/src/createPresignedPost.spec.ts
+++ b/packages/s3-presigned-post/src/createPresignedPost.spec.ts
@@ -1,5 +1,7 @@
import { defaultEndpointResolver } from "@aws-sdk/client-s3/src/endpoint/endpointResolver";
+import { createScope, getSigningKey } from "@smithy/signature-v4";
import { HttpRequest, SourceData } from "@smithy/types";
+import { afterAll, beforeEach, describe, expect, test as it, vi } from "vitest";
import {
ALGORITHM_IDENTIFIER,
@@ -8,22 +10,18 @@ import {
CREDENTIAL_QUERY_PARAM,
SIGNATURE_QUERY_PARAM,
} from "./constants";
+import { createPresignedPost } from "./createPresignedPost";
-const mockCreateScope = jest.fn().mockReturnValue("mock_credential_scope");
-const mockGetSigningKey = jest.fn().mockReturnValue(Buffer.from("mock_signing_key"));
-jest.mock("@smithy/signature-v4", () => ({
- createScope: mockCreateScope,
- getSigningKey: mockGetSigningKey,
+vi.mock("@smithy/signature-v4", () => ({
+ createScope: vi.fn().mockReturnValue("mock_credential_scope"),
+ getSigningKey: vi.fn().mockReturnValue(Buffer.from("mock_signing_key")),
SignatureV4: class {},
}));
-const mockHexEncoder = jest.fn().mockReturnValue("mock_hex_encoded");
-jest.mock("@smithy/util-hex-encoding", () => ({
- toHex: mockHexEncoder,
+vi.mock("@smithy/util-hex-encoding", () => ({
+ toHex: vi.fn().mockReturnValue("mock_hex_encoded"),
}));
-import { createPresignedPost } from "./createPresignedPost";
-
const endpoint: HttpRequest = {
method: "POST",
protocol: "https:",
@@ -36,8 +34,8 @@ const credentials = {
accessKeyId: "AKID",
secretAccessKey: "SECRET",
};
-const mockHashUpdate = jest.fn();
-const mockHashCtor = jest.fn();
+const mockHashUpdate = vi.fn();
+const mockHashCtor = vi.fn();
const sha256 = function (secret: SourceData) {
mockHashCtor(secret);
//@ts-ignore mock constructor
@@ -54,8 +52,8 @@ const mockS3Client = {
endpointProvider: defaultEndpointResolver,
forcePathStyle: true,
systemClockOffset: 0,
- base64Encoder: jest.fn().mockReturnValue("mock_base64_encoded"),
- utf8Decoder: jest.fn().mockReturnValue(Buffer.from("mock_utf8_decoded")),
+ base64Encoder: vi.fn().mockReturnValue("mock_base64_encoded"),
+ utf8Decoder: vi.fn().mockReturnValue(Buffer.from("mock_utf8_decoded")),
sha256,
region: async () => region,
credentials: async () => credentials,
@@ -66,10 +64,10 @@ describe("createPresignedPost", () => {
const Bucket = "bucket";
const Key = "key";
//Mock Date.now() to be 2020-10-28T22:56:49.535Z
- const dateNowMock = jest.spyOn(Date, "now").mockImplementation(() => 1603925809535);
+ const dateNowMock = vi.spyOn(Date, "now").mockImplementation(() => 1603925809535);
beforeEach(() => {
- jest.clearAllMocks();
+ vi.clearAllMocks();
});
afterAll(() => {
@@ -93,9 +91,9 @@ describe("createPresignedPost", () => {
[SIGNATURE_QUERY_PARAM]: "mock_hex_encoded",
});
- expect(mockCreateScope.mock.calls[0]).toEqual(["20201028", "us-foo-1", "s3"]);
+ expect(vi.mocked(createScope).mock.calls[0]).toEqual(["20201028", "us-foo-1", "s3"]);
expect(mockS3Client.config.utf8Decoder).toBeCalled();
- expect(mockGetSigningKey.mock.calls[0]).toEqual([sha256, credentials, "20201028", "us-foo-1", "s3"]);
+ expect(vi.mocked(getSigningKey).mock.calls[0]).toEqual([sha256, credentials, "20201028", "us-foo-1", "s3"]);
});
it("should generate presigned post with filename", async () => {
diff --git a/packages/s3-presigned-post/vitest.config.e2e.ts b/packages/s3-presigned-post/vitest.config.e2e.ts
new file mode 100644
index 000000000000..92073c6cfcf0
--- /dev/null
+++ b/packages/s3-presigned-post/vitest.config.e2e.ts
@@ -0,0 +1,8 @@
+import { defineConfig } from "vitest/config";
+
+export default defineConfig({
+ test: {
+ include: ["**/*.e2e.spec.ts"],
+ environment: "node",
+ },
+});
diff --git a/packages/s3-presigned-post/vitest.config.ts b/packages/s3-presigned-post/vitest.config.ts
new file mode 100644
index 000000000000..4e46707824a5
--- /dev/null
+++ b/packages/s3-presigned-post/vitest.config.ts
@@ -0,0 +1,9 @@
+import { defineConfig } from "vitest/config";
+
+export default defineConfig({
+ test: {
+ exclude: ["**/*.{integ,e2e,browser}.spec.ts"],
+ include: ["**/*.spec.ts"],
+ environment: "node",
+ },
+});
diff --git a/private/aws-middleware-test/jest.config.js b/private/aws-middleware-test/jest.config.js
deleted file mode 100644
index 37675d406a43..000000000000
--- a/private/aws-middleware-test/jest.config.js
+++ /dev/null
@@ -1,4 +0,0 @@
-module.exports = {
- preset: "ts-jest",
- testMatch: ["**/*.spec.ts"],
-};
diff --git a/private/aws-middleware-test/package.json b/private/aws-middleware-test/package.json
index 5b61d31c79cc..1d995edee168 100644
--- a/private/aws-middleware-test/package.json
+++ b/private/aws-middleware-test/package.json
@@ -10,7 +10,8 @@
"build:types": "exit 0",
"build:types:downlevel": "exit 0",
"clean": "rimraf ./dist-* && rimraf *.tsbuildinfo",
- "test": "jest --coverage --passWithNoTests"
+ "test": "vitest run",
+ "test:watch": "vitest watch"
},
"main": "./dist-cjs/index.js",
"types": "./dist-types/index.d.ts",
diff --git a/private/aws-middleware-test/src/middleware-apply-body-checksum.spec.ts b/private/aws-middleware-test/src/middleware-apply-body-checksum.spec.ts
index f913246e2045..859ec9cf31dc 100644
--- a/private/aws-middleware-test/src/middleware-apply-body-checksum.spec.ts
+++ b/private/aws-middleware-test/src/middleware-apply-body-checksum.spec.ts
@@ -1,4 +1,5 @@
import { S3Control } from "@aws-sdk/client-s3-control";
+import { describe, expect, test as it } from "vitest";
import { requireRequestsFrom } from "../../aws-util-test/src";
diff --git a/private/aws-middleware-test/src/middleware-content-length.spec.ts b/private/aws-middleware-test/src/middleware-content-length.spec.ts
index e4849e9ffa9d..1ac77a156a81 100644
--- a/private/aws-middleware-test/src/middleware-content-length.spec.ts
+++ b/private/aws-middleware-test/src/middleware-content-length.spec.ts
@@ -1,6 +1,7 @@
import { AccessAnalyzer } from "@aws-sdk/client-accessanalyzer";
import { S3 } from "@aws-sdk/client-s3";
import { XRay } from "@aws-sdk/client-xray";
+import { describe, expect, test as it } from "vitest";
import { requireRequestsFrom } from "../../../private/aws-util-test/src";
diff --git a/private/aws-middleware-test/src/middleware-endpoint.spec.ts b/private/aws-middleware-test/src/middleware-endpoint.spec.ts
index fd35effa31d4..6550d1c6d387 100644
--- a/private/aws-middleware-test/src/middleware-endpoint.spec.ts
+++ b/private/aws-middleware-test/src/middleware-endpoint.spec.ts
@@ -1,5 +1,6 @@
import { S3 } from "@aws-sdk/client-s3";
import { S3Control } from "@aws-sdk/client-s3-control";
+import { describe, expect, test as it } from "vitest";
import { requireRequestsFrom } from "../../aws-util-test/src";
diff --git a/private/aws-middleware-test/src/middleware-retry.spec.ts b/private/aws-middleware-test/src/middleware-retry.spec.ts
index f22880ffee54..9e8a649cf0fa 100644
--- a/private/aws-middleware-test/src/middleware-retry.spec.ts
+++ b/private/aws-middleware-test/src/middleware-retry.spec.ts
@@ -1,4 +1,5 @@
import { Lambda } from "@aws-sdk/client-lambda";
+import { describe, expect, test as it } from "vitest";
import { requireRequestsFrom } from "../../aws-util-test/src";
diff --git a/private/aws-middleware-test/src/middleware-serde.spec.ts b/private/aws-middleware-test/src/middleware-serde.spec.ts
index 88f476cf556a..7e86611c7462 100644
--- a/private/aws-middleware-test/src/middleware-serde.spec.ts
+++ b/private/aws-middleware-test/src/middleware-serde.spec.ts
@@ -2,6 +2,7 @@ import { EC2 } from "@aws-sdk/client-ec2";
import { S3 } from "@aws-sdk/client-s3";
import { SageMaker } from "@aws-sdk/client-sagemaker";
import { SageMakerRuntime } from "@aws-sdk/client-sagemaker-runtime";
+import { describe, test as it } from "vitest";
import { requireRequestsFrom } from "../../aws-util-test/src";
diff --git a/private/aws-middleware-test/src/util-stream.spec.ts b/private/aws-middleware-test/src/util-stream.spec.ts
index 9a171afd2ee6..dd22adc04365 100644
--- a/private/aws-middleware-test/src/util-stream.spec.ts
+++ b/private/aws-middleware-test/src/util-stream.spec.ts
@@ -4,6 +4,7 @@ import { HttpRequest as IHttpRequest } from "@smithy/types";
import { Uint8ArrayBlobAdapter } from "@smithy/util-stream";
import { fromUtf8 } from "@smithy/util-utf8";
import { Readable } from "stream";
+import { describe, expect, test as it } from "vitest";
import { requireRequestsFrom } from "../../aws-util-test/src";
diff --git a/private/aws-middleware-test/vitest.config.ts b/private/aws-middleware-test/vitest.config.ts
new file mode 100644
index 000000000000..4e46707824a5
--- /dev/null
+++ b/private/aws-middleware-test/vitest.config.ts
@@ -0,0 +1,9 @@
+import { defineConfig } from "vitest/config";
+
+export default defineConfig({
+ test: {
+ exclude: ["**/*.{integ,e2e,browser}.spec.ts"],
+ include: ["**/*.spec.ts"],
+ environment: "node",
+ },
+});
diff --git a/private/aws-util-test/jest.config.integ.js b/private/aws-util-test/jest.config.integ.js
deleted file mode 100644
index d09aba7398c7..000000000000
--- a/private/aws-util-test/jest.config.integ.js
+++ /dev/null
@@ -1,4 +0,0 @@
-module.exports = {
- preset: "ts-jest",
- testMatch: ["**/*.integ.spec.ts"],
-};
diff --git a/private/aws-util-test/package.json b/private/aws-util-test/package.json
index 73979c279706..b7bdf3bbbe66 100644
--- a/private/aws-util-test/package.json
+++ b/private/aws-util-test/package.json
@@ -10,7 +10,8 @@
"build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4",
"clean": "rimraf ./dist-* && rimraf *.tsbuildinfo",
"prepack": "yarn run clean && yarn run build",
- "test:integration": "jest --coverage --passWithNoTests --config jest.config.integ.js"
+ "test:integration": "vitest run -c vitest.config.integ.ts",
+ "test:integration:watch": "vitest watch -c vitest.config.integ.ts"
},
"main": "./dist-cjs/index.js",
"types": "./dist-types/index.d.ts",
diff --git a/private/aws-util-test/src/clients/Weather.integ.spec.ts b/private/aws-util-test/src/clients/Weather.integ.spec.ts
index 9e45c8ab6b18..4df5afaea2a6 100644
--- a/private/aws-util-test/src/clients/Weather.integ.spec.ts
+++ b/private/aws-util-test/src/clients/Weather.integ.spec.ts
@@ -1,4 +1,5 @@
import { Weather } from "@aws-sdk/weather";
+import { describe, expect, test as it } from "vitest";
import { requireRequestsFrom } from "../requests/test-http-handler";
diff --git a/private/aws-util-test/src/requests/test-http-handler.integ.spec.ts b/private/aws-util-test/src/requests/test-http-handler.integ.spec.ts
index b0ee38d6b192..85d8a8697da8 100644
--- a/private/aws-util-test/src/requests/test-http-handler.integ.spec.ts
+++ b/private/aws-util-test/src/requests/test-http-handler.integ.spec.ts
@@ -1,15 +1,14 @@
+import { describe, expect, test as it } from "vitest";
+
// import { JsonProtocol } from "@aws-sdk/aws-protocoltests-json";
// CI has difficult importing a named private client from the workspace.
// This file remains as a code sample.
-
import { TestHttpHandler } from "./test-http-handler";
describe(TestHttpHandler.name, () => {
it("checks requests using matchers", async () => {
// const client = new JsonProtocol({});
-
// expect.assertions(15);
-
// new TestHttpHandler({
// method: "POST",
// hostname: /jsonprotocol\.(.*?)\.amazonaws\.com/,
@@ -35,7 +34,6 @@ describe(TestHttpHandler.name, () => {
// expect(parse.Boolean).toBe(false);
// },
// }).watch(client);
-
// await client.kitchenSinkOperation({
// Blob: new Uint8Array(),
// Boolean: false,
diff --git a/private/aws-util-test/src/requests/test-http-handler.ts b/private/aws-util-test/src/requests/test-http-handler.ts
index 0be329ed7ddb..e27282cd780b 100644
--- a/private/aws-util-test/src/requests/test-http-handler.ts
+++ b/private/aws-util-test/src/requests/test-http-handler.ts
@@ -1,5 +1,6 @@
import { HttpHandler, HttpRequest, HttpResponse } from "@smithy/protocol-http";
import { Client, HttpHandlerOptions, RequestHandler, RequestHandlerOutput } from "@smithy/types";
+import { expect } from "vitest";
/**
* Instructs {@link TestHttpHandler} how to match the handled request and the expected request.
diff --git a/private/aws-util-test/tsconfig.json b/private/aws-util-test/tsconfig.json
index 78506bf92c0b..182e01894218 100644
--- a/private/aws-util-test/tsconfig.json
+++ b/private/aws-util-test/tsconfig.json
@@ -9,5 +9,5 @@
"rootDir": "src",
"useUnknownInCatchVariables": false
},
- "exclude": ["test/", "*.spec.ts"]
+ "exclude": ["test/", "*.spec.ts", "vitest.*.ts"]
}
diff --git a/private/aws-util-test/vitest.config.integ.ts b/private/aws-util-test/vitest.config.integ.ts
new file mode 100644
index 000000000000..5802db1ac64a
--- /dev/null
+++ b/private/aws-util-test/vitest.config.integ.ts
@@ -0,0 +1,8 @@
+import { defineConfig } from "vitest/config";
+
+export default defineConfig({
+ test: {
+ include: ["**/*.integ.spec.ts"],
+ environment: "node",
+ },
+});
diff --git a/scripts/runtime-dependency-version-check/check-dependencies.js b/scripts/runtime-dependency-version-check/check-dependencies.js
index c806252aeee0..2bf0e358e2fb 100644
--- a/scripts/runtime-dependency-version-check/check-dependencies.js
+++ b/scripts/runtime-dependency-version-check/check-dependencies.js
@@ -45,6 +45,8 @@ const node_libraries = [
"zlib",
];
+const ignored = [...node_libraries, "vitest"];
+
(async () => {
const errors = [];
@@ -85,7 +87,7 @@ const node_libraries = [
...new Set(
[...(contents.toString().match(/(from |import\()"(.*?)"\)?;/g) ?? [])]
.map((_) => _.replace(/(from ")|(import\(")/g, "").replace(/"\)?;$/, ""))
- .filter((_) => !_.startsWith(".") && !node_libraries.includes(_))
+ .filter((_) => !_.startsWith(".") && !ignored.includes(_))
)
);
diff --git a/scripts/runtime-dependency-version-check/runtime-dep-version-check.js b/scripts/runtime-dependency-version-check/runtime-dep-version-check.js
index 5f8aa0167aab..e55e8d37d901 100644
--- a/scripts/runtime-dependency-version-check/runtime-dep-version-check.js
+++ b/scripts/runtime-dependency-version-check/runtime-dep-version-check.js
@@ -50,6 +50,8 @@ const deps = {
} */
};
+const ignored = ["vitest"];
+
readPackages(clientPackages);
checkVersions();
@@ -132,6 +134,9 @@ function checkVersions() {
const errors = [];
for (const [pkg, versions] of Object.entries(deps)) {
+ if (ignored.includes(pkg)) {
+ continue;
+ }
const versionCount = Object.keys(versions).length;
if (versionCount > 1) {
console.error("There is more than one version of a declared runtime dependency.");
diff --git a/scripts/validation/vitest-validation.js b/scripts/validation/vitest-validation.js
index 4ceaa246038f..7ae496de613a 100644
--- a/scripts/validation/vitest-validation.js
+++ b/scripts/validation/vitest-validation.js
@@ -3,25 +3,62 @@ const path = require("path");
const walk = require("../utils/walk");
const paths = [
- path.join(__dirname, "..", "..", "lib", "lib-dynamodb"),
- path.join(__dirname, "..", "..", "lib", "lib-storage"),
- path.join(__dirname, "..", "..", "packages", "body-checksum-browser"),
- path.join(__dirname, "..", "..", "packages", "body-checksum-node"),
- path.join(__dirname, "..", "..", "packages", "chunked-stream-reader-node"),
- path.join(__dirname, "..", "..", "packages", "cloudfront-signer"),
- path.join(__dirname, "..", "..", "packages", "core"),
- path.join(__dirname, "..", "..", "packages", "credential-provider-cognito-identity"),
- path.join(__dirname, "..", "..", "packages", "credential-provider-env"),
- path.join(__dirname, "..", "..", "packages", "credential-provider-http"),
- path.join(__dirname, "..", "..", "packages", "credential-provider-ini"),
- path.join(__dirname, "..", "..", "packages", "credential-provider-node"),
- path.join(__dirname, "..", "..", "packages", "credential-provider-process"),
- path.join(__dirname, "..", "..", "packages", "credential-provider-sso"),
- path.join(__dirname, "..", "..", "packages", "credential-provider-web-identity"),
- path.join(__dirname, "..", "..", "packages", "credential-providers"),
- path.join(__dirname, "..", "..", "packages", "ec2-metadata-service"),
- path.join(__dirname, "..", "..", "packages", "endpoint-cache"),
- path.join(__dirname, "..", "..", "packages", "eventstream-handler-node"),
+ // path.join(__dirname, "..", "..", "clients", "client-kinesis"),
+ // path.join(__dirname, "..", "..", "clients", "client-s3"),
+ // path.join(__dirname, "..", "..", "clients", "client-sts"),
+ // path.join(__dirname, "..", "..", "clients", "client-transcribe-streaming"),
+
+ // path.join(__dirname, "..", "..", "lib", "lib-dynamodb"),
+ // path.join(__dirname, "..", "..", "lib", "lib-storage"),
+ // path.join(__dirname, "..", "..", "packages", "body-checksum-browser"),
+ // path.join(__dirname, "..", "..", "packages", "body-checksum-node"),
+ // path.join(__dirname, "..", "..", "packages", "chunked-stream-reader-node"),
+ // path.join(__dirname, "..", "..", "packages", "cloudfront-signer"),
+ // path.join(__dirname, "..", "..", "packages", "core"),
+ // path.join(__dirname, "..", "..", "packages", "credential-provider-cognito-identity"),
+ // path.join(__dirname, "..", "..", "packages", "credential-provider-env"),
+ // path.join(__dirname, "..", "..", "packages", "credential-provider-http"),
+ // path.join(__dirname, "..", "..", "packages", "credential-provider-ini"),
+ // path.join(__dirname, "..", "..", "packages", "credential-provider-node"),
+ // path.join(__dirname, "..", "..", "packages", "credential-provider-process"),
+ // path.join(__dirname, "..", "..", "packages", "credential-provider-sso"),
+ // path.join(__dirname, "..", "..", "packages", "credential-provider-web-identity"),
+ // path.join(__dirname, "..", "..", "packages", "credential-providers"),
+ // path.join(__dirname, "..", "..", "packages", "ec2-metadata-service"),
+ // path.join(__dirname, "..", "..", "packages", "endpoint-cache"),
+ // path.join(__dirname, "..", "..", "packages", "eventstream-handler-node"),
+
+ // path.join(__dirname, "..", "..", "packages", "middleware-api-key"),
+ // path.join(__dirname, "..", "..", "packages", "middleware-bucket-endpoint"),
+ // path.join(__dirname, "..", "..", "packages", "middleware-endpoint-discovery"),
+ // path.join(__dirname, "..", "..", "packages", "middleware-eventstream"),
+ // path.join(__dirname, "..", "..", "packages", "middleware-expect-continue"),
+ // path.join(__dirname, "..", "..", "packages", "middleware-flexible-checksums"),
+ // path.join(__dirname, "..", "..", "packages", "middleware-host-header"),
+ // path.join(__dirname, "..", "..", "packages", "middleware-location-constraint"),
+ // path.join(__dirname, "..", "..", "packages", "middleware-logger"),
+ // path.join(__dirname, "..", "..", "packages", "middleware-recursion-detection"),
+ // path.join(__dirname, "..", "..", "packages", "middleware-sdk-api-gateway"),
+ // path.join(__dirname, "..", "..", "packages", "middleware-sdk-ec2"),
+ // path.join(__dirname, "..", "..", "packages", "middleware-sdk-glacier"),
+ // path.join(__dirname, "..", "..", "packages", "middleware-sdk-machinelearning"),
+ // path.join(__dirname, "..", "..", "packages", "middleware-sdk-rds"),
+ // path.join(__dirname, "..", "..", "packages", "middleware-sdk-route53"),
+ // path.join(__dirname, "..", "..", "packages", "middleware-sdk-s3"),
+ // path.join(__dirname, "..", "..", "packages", "middleware-sdk-s3-control"),
+ // path.join(__dirname, "..", "..", "packages", "middleware-sdk-sqs"),
+ // path.join(__dirname, "..", "..", "packages", "middleware-sdk-sts"),
+ // path.join(__dirname, "..", "..", "packages", "middleware-sdk-transcribe-streaming"),
+ // path.join(__dirname, "..", "..", "packages", "middleware-signing"),
+ // path.join(__dirname, "..", "..", "packages", "middleware-ssec"),
+ // path.join(__dirname, "..", "..", "packages", "middleware-token"),
+ // path.join(__dirname, "..", "..", "packages", "middleware-user-agent"),
+ // path.join(__dirname, "..", "..", "packages", "middleware-websocket"),
+
+ // path.join(__dirname, "..", "..", "packages", "s3-presigned-post"),
+
+ // path.join(__dirname, "..", "..", "private", "aws-middleware-test"),
+ path.join(__dirname, "..", "..", "private", "aws-util-test"),
];
(async () => {
@@ -53,7 +90,7 @@ const paths = [
}
}
- for (const testType of [/* "integ", */ "e2e"]) {
+ for (const testType of ["integ", "e2e"]) {
const script = testType === "integ" ? "integration" : testType;
if (pkgJson.scripts[`test:${script}`]) {
pkgJson.scripts[`test:${script}:watch`] = `vitest watch -c vitest.config.${testType}.ts`;
@@ -120,8 +157,12 @@ const paths = [
}
}
+ if (contents.includes("expect.")) {
+ imports.push("expect");
+ }
+
contents = contents.replace(/import {(.*?)} from "(vitest|vtestest)";/g, "");
- contents = `import { ${imports.join(", ")} } from "vitest";\n\n` + contents;
+ contents = `import { ${[...new Set(imports)].join(", ")} } from "vitest";\n\n` + contents;
fs.writeFileSync(file, contents);
}
diff --git a/tests/e2e/get-integ-test-resources.d.ts b/tests/e2e/get-integ-test-resources.d.ts
new file mode 100644
index 000000000000..fe58c2acd5a8
--- /dev/null
+++ b/tests/e2e/get-integ-test-resources.d.ts
@@ -0,0 +1 @@
+export function getIntegTestResources(): Promise;
diff --git a/turbo.json b/turbo.json
index 67e299cd6222..7e1ec42b901c 100644
--- a/turbo.json
+++ b/turbo.json
@@ -44,6 +44,9 @@
},
"test:integration": {
"cache": false
+ },
+ "test:e2e": {
+ "cache": false
}
}
}
diff --git a/vitest.config.e2e.ts b/vitest.config.e2e.ts
index 63cc1b795d99..eff43a280d0a 100644
--- a/vitest.config.e2e.ts
+++ b/vitest.config.e2e.ts
@@ -2,7 +2,8 @@ import { defineConfig } from "vitest/config";
export default defineConfig({
test: {
- include: ["lib/lib-dynamodb/**/*.e2e.spec.{ts,js}", "lib/lib-storage/**/*.e2e.spec.{ts,js}"],
+ exclude: ["**/*.browser.e2e.spec.ts"],
+ include: ["**/*.e2e.spec.ts"],
environment: "node",
},
});
diff --git a/vitest.config.integ.ts b/vitest.config.integ.ts
new file mode 100644
index 000000000000..f24eb5805243
--- /dev/null
+++ b/vitest.config.integ.ts
@@ -0,0 +1,55 @@
+import { defineConfig } from "vitest/config";
+
+export default defineConfig({
+ test: {
+ exclude: ["**/*.{e2e,browser}.spec.ts"],
+ include: [
+ "lib/lib-dynamodb/**/*.integ.spec.ts",
+ "lib/lib-storage/**/*.integ.spec.ts",
+ // "packages/body-checksum-browser/**/*.integ.spec.ts",
+ "packages/body-checksum-node/**/*.integ.spec.ts",
+ "packages/chunked-stream-reader-node/**/*.integ.spec.ts",
+ "packages/cloudfront-signer/**/*.integ.spec.ts",
+ "packages/core/**/*.integ.spec.ts",
+ "packages/credential-provider-cognito-identity/**/*.integ.spec.ts",
+ "packages/credential-provider-env/**/*.integ.spec.ts",
+ "packages/credential-provider-http/**/*.integ.spec.ts",
+ "packages/credential-provider-ini/**/*.integ.spec.ts",
+ // "packages/credential-provider-node/**/*.integ.spec.ts",
+ "packages/credential-provider-process/**/*.integ.spec.ts",
+ "packages/credential-provider-sso/**/*.integ.spec.ts",
+ "packages/credential-provider-web-identity/**/*.integ.spec.ts",
+ "packages/credential-providers/**/*.integ.spec.ts",
+ "packages/ec2-metadata-service/**/*.integ.spec.ts",
+ "packages/endpoint-cache/**/*.integ.spec.ts",
+ "packages/eventstream-handler-node/**/*.integ.spec.ts",
+ "packages/middleware-api-key/**/*.integ.spec.ts",
+ "packages/middleware-bucket-endpoint/**/*.integ.spec.ts",
+ "packages/middleware-endpoint-discovery/**/*.integ.spec.ts",
+ "packages/middleware-eventstream/**/*.integ.spec.ts",
+ "packages/middleware-expect-continue/**/*.integ.spec.ts",
+ "packages/middleware-flexible-checksums/**/*.integ.spec.ts",
+ "packages/middleware-host-header/**/*.integ.spec.ts",
+ "packages/middleware-location-constraint/**/*.integ.spec.ts",
+ "packages/middleware-logger/**/*.integ.spec.ts",
+ "packages/middleware-recursion-detection/**/*.integ.spec.ts",
+ "packages/middleware-sdk-api-gateway/**/*.integ.spec.ts",
+ "packages/middleware-sdk-ec2/**/*.integ.spec.ts",
+ "packages/middleware-sdk-glacier/**/*.integ.spec.ts",
+ "packages/middleware-sdk-machinelearning/**/*.integ.spec.ts",
+ "packages/middleware-sdk-rds/**/*.integ.spec.ts",
+ "packages/middleware-sdk-route53/**/*.integ.spec.ts",
+ "packages/middleware-sdk-s3/**/*.integ.spec.ts",
+ "packages/middleware-sdk-s3-control/**/*.integ.spec.ts",
+ "packages/middleware-sdk-sqs/**/*.integ.spec.ts",
+ "packages/middleware-sdk-sts/**/*.integ.spec.ts",
+ "packages/middleware-sdk-transcribe-streaming/**/*.integ.spec.ts",
+ "packages/middleware-signing/**/*.integ.spec.ts",
+ "packages/middleware-ssec/**/*.integ.spec.ts",
+ "packages/middleware-token/**/*.integ.spec.ts",
+ "packages/middleware-user-agent/**/*.integ.spec.ts",
+ "packages/middleware-websocket/**/*.integ.spec.ts",
+ ],
+ environment: "node",
+ },
+});
diff --git a/vitest.config.ts b/vitest.config.ts
index e1db99b6dcbf..0e34a11c1215 100644
--- a/vitest.config.ts
+++ b/vitest.config.ts
@@ -2,27 +2,54 @@ import { defineConfig } from "vitest/config";
export default defineConfig({
test: {
- exclude: ["**/*.{integ,e2e,browser}.spec.{ts,js}"],
+ exclude: ["**/*.{integ,e2e,browser}.spec.ts"],
include: [
- "lib/lib-dynamodb/**/*.spec.{ts,js}",
- "lib/lib-storage/**/*.spec.{ts,js}",
- // "packages/body-checksum-browser/**/*.spec.{ts,js}",
- "packages/body-checksum-node/**/*.spec.{ts,js}",
- "packages/chunked-stream-reader-node/**/*.spec.{ts,js}",
- "packages/cloudfront-signer/**/*.spec.{ts,js}",
- "packages/core/**/*.spec.{ts,js}",
- "packages/credential-provider-cognito-identity/**/*.spec.{ts,js}",
- "packages/credential-provider-env/**/*.spec.{ts,js}",
- "packages/credential-provider-http/**/*.spec.{ts,js}",
- "packages/credential-provider-ini/**/*.spec.{ts,js}",
- "packages/credential-provider-node/**/*.spec.{ts,js}",
- "packages/credential-provider-process/**/*.spec.{ts,js}",
- "packages/credential-provider-sso/**/*.spec.{ts,js}",
- "packages/credential-provider-web-identity/**/*.spec.{ts,js}",
- "packages/credential-providers/**/*.spec.{ts,js}",
- "packages/ec2-metadata-service/**/*.spec.{ts,js}",
- "packages/endpoint-cache/**/*.spec.{ts,js}",
- "packages/eventstream-handler-node/**/*.spec.{ts,js}",
+ "clients/client-*/**/*.spec.ts",
+ "lib/lib-dynamodb/**/*.spec.ts",
+ "lib/lib-storage/**/*.spec.ts",
+ // "packages/body-checksum-browser/**/*.spec.ts",
+ "packages/body-checksum-node/**/*.spec.ts",
+ "packages/chunked-stream-reader-node/**/*.spec.ts",
+ "packages/cloudfront-signer/**/*.spec.ts",
+ "packages/core/**/*.spec.ts",
+ "packages/credential-provider-cognito-identity/**/*.spec.ts",
+ "packages/credential-provider-env/**/*.spec.ts",
+ "packages/credential-provider-http/**/*.spec.ts",
+ "packages/credential-provider-ini/**/*.spec.ts",
+ "packages/credential-provider-node/**/*.spec.ts",
+ "packages/credential-provider-process/**/*.spec.ts",
+ "packages/credential-provider-sso/**/*.spec.ts",
+ "packages/credential-provider-web-identity/**/*.spec.ts",
+ "packages/credential-providers/**/*.spec.ts",
+ "packages/ec2-metadata-service/**/*.spec.ts",
+ "packages/endpoint-cache/**/*.spec.ts",
+ "packages/eventstream-handler-node/**/*.spec.ts",
+ "packages/middleware-api-key/**/*.spec.ts",
+ "packages/middleware-bucket-endpoint/**/*.spec.ts",
+ "packages/middleware-endpoint-discovery/**/*.spec.ts",
+ "packages/middleware-eventstream/**/*.spec.ts",
+ "packages/middleware-expect-continue/**/*.spec.ts",
+ "packages/middleware-flexible-checksums/**/*.spec.ts",
+ "packages/middleware-host-header/**/*.spec.ts",
+ "packages/middleware-location-constraint/**/*.spec.ts",
+ "packages/middleware-logger/**/*.spec.ts",
+ "packages/middleware-recursion-detection/**/*.spec.ts",
+ "packages/middleware-sdk-api-gateway/**/*.spec.ts",
+ "packages/middleware-sdk-ec2/**/*.spec.ts",
+ "packages/middleware-sdk-glacier/**/*.spec.ts",
+ "packages/middleware-sdk-machinelearning/**/*.spec.ts",
+ "packages/middleware-sdk-rds/**/*.spec.ts",
+ "packages/middleware-sdk-route53/**/*.spec.ts",
+ "packages/middleware-sdk-s3/**/*.spec.ts",
+ "packages/middleware-sdk-s3-control/**/*.spec.ts",
+ "packages/middleware-sdk-sqs/**/*.spec.ts",
+ "packages/middleware-sdk-sts/**/*.spec.ts",
+ "packages/middleware-sdk-transcribe-streaming/**/*.spec.ts",
+ "packages/middleware-signing/**/*.spec.ts",
+ "packages/middleware-ssec/**/*.spec.ts",
+ "packages/middleware-token/**/*.spec.ts",
+ "packages/middleware-user-agent/**/*.spec.ts",
+ // "packages/middleware-websocket/**/*.spec.ts",
],
environment: "node",
},
diff --git a/yarn.lock b/yarn.lock
index a9d45230dcf1..05786cefc5c2 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -8432,7 +8432,7 @@ jest-config@^29.7.0:
slash "^3.0.0"
strip-json-comments "^3.1.1"
-jest-diff@^28.0.2, jest-diff@^28.1.3:
+jest-diff@^28.1.3:
version "28.1.3"
resolved "https://registry.npmjs.org/jest-diff/-/jest-diff-28.1.3.tgz"
integrity sha512-8RqP1B/OXzjjTWkqMX67iqgwBVJRgCyKD3L9nq+6ZqJMdvjE8RgHktqZ6jNrkdMT+dJuYNI3rhQpxaz7drJHfw==
@@ -8442,6 +8442,16 @@ jest-diff@^28.0.2, jest-diff@^28.1.3:
jest-get-type "^28.0.2"
pretty-format "^28.1.3"
+jest-diff@^29.2.0, jest-diff@^29.7.0:
+ version "29.7.0"
+ resolved "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz"
+ integrity sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==
+ dependencies:
+ chalk "^4.0.0"
+ diff-sequences "^29.6.3"
+ jest-get-type "^29.6.3"
+ pretty-format "^29.7.0"
+
jest-diff@^29.6.1:
version "29.6.1"
resolved "https://registry.npmjs.org/jest-diff/-/jest-diff-29.6.1.tgz"
@@ -8452,16 +8462,6 @@ jest-diff@^29.6.1:
jest-get-type "^29.4.3"
pretty-format "^29.6.1"
-jest-diff@^29.7.0:
- version "29.7.0"
- resolved "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz"
- integrity sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==
- dependencies:
- chalk "^4.0.0"
- diff-sequences "^29.6.3"
- jest-get-type "^29.6.3"
- pretty-format "^29.7.0"
-
jest-docblock@^28.1.1:
version "28.1.1"
resolved "https://registry.npmjs.org/jest-docblock/-/jest-docblock-28.1.1.tgz"
@@ -8999,14 +8999,6 @@ jest-watcher@^29.7.0:
jest-util "^29.7.0"
string-length "^4.0.1"
-jest-websocket-mock@^2.0.2:
- version "2.4.0"
- resolved "https://registry.npmjs.org/jest-websocket-mock/-/jest-websocket-mock-2.4.0.tgz"
- integrity sha512-AOwyuRw6fgROXHxMOiTDl1/T4dh3fV4jDquha5N0csS/PNp742HeTZWPAuKppVRSQ8s3fUGgJHoyZT9JDO0hMA==
- dependencies:
- jest-diff "^28.0.2"
- mock-socket "^9.1.0"
-
jest-worker@^27.4.5, jest-worker@^27.4.6:
version "27.5.1"
resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz"
@@ -10184,10 +10176,10 @@ mock-socket@9.1.5:
resolved "https://registry.npmjs.org/mock-socket/-/mock-socket-9.1.5.tgz"
integrity sha512-3DeNIcsQixWHHKk6NdoBhWI4t1VMj5/HzfnI1rE/pLl5qKx7+gd4DNA07ehTaZ6MoUU053si6Hd+YtiM/tQZfg==
-mock-socket@^9.1.0:
- version "9.2.1"
- resolved "https://registry.npmjs.org/mock-socket/-/mock-socket-9.2.1.tgz"
- integrity sha512-aw9F9T9G2zpGipLLhSNh6ZpgUyUl4frcVmRN08uE1NWPWg43Wx6+sGPDbQ7E5iFZZDJW5b5bypMeAEHqTbIFag==
+mock-socket@^9.2.1:
+ version "9.3.1"
+ resolved "https://registry.yarnpkg.com/mock-socket/-/mock-socket-9.3.1.tgz#24fb00c2f573c84812aa4a24181bb025de80cc8e"
+ integrity sha512-qxBgB7Qa2sEQgHFjj0dSigq7fX4k6Saisd5Nelwp2q8mlbAFh5dHV9JTTlF8viYJLSSWgMCZFUom8PJcMNBoJw==
modify-values@^1.0.0:
version "1.0.1"
@@ -13449,6 +13441,14 @@ vite@4.5.5, "vite@^3.0.0 || ^4.0.0", "vite@^3.0.0 || ^4.0.0 || ^5.0.0-0", "vite@
optionalDependencies:
fsevents "~2.3.2"
+vitest-websocket-mock@0.2.3:
+ version "0.2.3"
+ resolved "https://registry.yarnpkg.com/vitest-websocket-mock/-/vitest-websocket-mock-0.2.3.tgz#664a17a3f3ec38283810e4191dcc159c55b5fa33"
+ integrity sha512-Ea2CcXHWJj/DhXcFeZsAjCPQ/SD0LDkin8k5zexq4/1izaPqRROta4eYCBbD3l9NfEWOnvrcOPkk+jNNieLCWQ==
+ dependencies:
+ jest-diff "^29.2.0"
+ mock-socket "^9.2.1"
+
vitest@0.34.6:
version "0.34.6"
resolved "https://registry.yarnpkg.com/vitest/-/vitest-0.34.6.tgz#44880feeeef493c04b7f795ed268f24a543250d7"