diff --git a/clients/client-dynamodb/package.json b/clients/client-dynamodb/package.json index de7195f0e3ab..bd4b370c4701 100644 --- a/clients/client-dynamodb/package.json +++ b/clients/client-dynamodb/package.json @@ -11,7 +11,9 @@ "build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4", "clean": "rimraf ./dist-* && rimraf *.tsbuildinfo", "extract:docs": "api-extractor run --local", - "generate:client": "node ../../scripts/generate-clients/single-service --solo dynamodb" + "generate:client": "node ../../scripts/generate-clients/single-service --solo dynamodb", + "test:e2e": "yarn g:vitest run -c vitest.config.e2e.mts", + "test:e2e:watch": "yarn g:vitest watch -c vitest.config.e2e.mts" }, "main": "./dist-cjs/index.js", "types": "./dist-types/index.d.ts", diff --git a/clients/client-dynamodb/test/DynamoDB.e2e.spec.ts b/clients/client-dynamodb/test/DynamoDB.e2e.spec.ts new file mode 100644 index 000000000000..f6495d698e8e --- /dev/null +++ b/clients/client-dynamodb/test/DynamoDB.e2e.spec.ts @@ -0,0 +1,39 @@ +import { DynamoDB, ResourceNotFoundException } from "@aws-sdk/client-dynamodb"; +import { TypeRegistry } from "@smithy/core/schema"; +import { StaticErrorSchema } from "@smithy/types"; +import { describe, expect, test as it } from "vitest"; + +describe(DynamoDB.name, () => { + const ddb = new DynamoDB({ + region: "us-west-2", + }); + + it("throws an error when table is not found", async () => { + const error = await ddb + .describeTable({ + TableName: "DynamoDB", + }) + .catch((e) => e); + + delete error.$response; + + expect(error).toMatchObject({ + message: "Requested resource not found: Table: DynamoDB not found", + $fault: "client", + $metadata: { + attempts: 1, + httpStatusCode: 400, + }, + name: "ResourceNotFoundException", + }); + + expect(error).toBeInstanceOf(ResourceNotFoundException); + + const registry = TypeRegistry.for("com.amazonaws.dynamodb"); + const errorSchema = registry.getSchema("ResourceNotFoundException") as StaticErrorSchema; + expect(errorSchema).toBeDefined(); + const errorCtor = registry.getErrorCtor(errorSchema); + + expect(errorCtor).toBe(ResourceNotFoundException); + }); +}); diff --git a/clients/client-dynamodb/vitest.config.e2e.mts b/clients/client-dynamodb/vitest.config.e2e.mts new file mode 100644 index 000000000000..ccea26a45905 --- /dev/null +++ b/clients/client-dynamodb/vitest.config.e2e.mts @@ -0,0 +1,10 @@ +import { defineConfig } from "vitest/config"; + +export default defineConfig({ + test: { + exclude: ["**/*.browser.e2e.spec.ts"], + include: ["**/*.e2e.spec.ts"], + environment: "node", + }, + mode: "development", +});