Skip to content

Commit 79c8ad9

Browse files
committed
chore: convert bdd tests to e2e tests
1 parent 6900953 commit 79c8ad9

File tree

15 files changed

+183
-89
lines changed

15 files changed

+183
-89
lines changed

clients/client-acm/package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@
1111
"build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4",
1212
"clean": "rimraf ./dist-* && rimraf *.tsbuildinfo",
1313
"extract:docs": "api-extractor run --local",
14-
"generate:client": "node ../../scripts/generate-clients/single-service --solo acm"
14+
"generate:client": "node ../../scripts/generate-clients/single-service --solo acm",
15+
"test:e2e": "yarn g:vitest run -c vitest.config.e2e.mts"
1516
},
1617
"main": "./dist-cjs/index.js",
1718
"types": "./dist-types/index.d.ts",
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
import { getE2eTestResources } from "@aws-sdk/aws-util-test/src";
2+
import { beforeAll, describe, expect, test as it } from "vitest";
3+
4+
import { ACM } from "../src/index";
5+
6+
describe("@aws-sdk/client-acm", () => {
7+
let client: ACM;
8+
let region: string;
9+
10+
beforeAll(async () => {
11+
const e2eTestResourcesEnv = await getE2eTestResources();
12+
Object.assign(process.env, e2eTestResourcesEnv);
13+
14+
region = process?.env?.AWS_SMOKE_TEST_REGION as string;
15+
16+
client = new ACM({ region });
17+
});
18+
19+
describe("Making a request to ACM service", () => {
20+
it("should successfully list certificates", async () => {
21+
const result = await client.listCertificates({});
22+
23+
expect(result).toBeDefined();
24+
expect(result.CertificateSummaryList).toBeDefined();
25+
expect(Array.isArray(result.CertificateSummaryList)).toBe(true);
26+
});
27+
});
28+
29+
describe("Error handling", () => {
30+
it("should handle ValidationException for invalid certificate ARN", async () => {
31+
await expect(
32+
client.describeCertificate({
33+
CertificateArn: "fake_arn",
34+
})
35+
).rejects.toThrow(
36+
expect.objectContaining({
37+
name: "ValidationException",
38+
})
39+
);
40+
});
41+
});
42+
});
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import { defineConfig } from "vitest/config";
2+
3+
export default defineConfig({
4+
test: {
5+
exclude: ["**/*.browser.e2e.spec.ts"],
6+
include: ["**/*.e2e.spec.ts"],
7+
environment: "node",
8+
},
9+
mode: "development",
10+
});

clients/client-api-gateway/package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@
1111
"build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4",
1212
"clean": "rimraf ./dist-* && rimraf *.tsbuildinfo",
1313
"extract:docs": "api-extractor run --local",
14-
"generate:client": "node ../../scripts/generate-clients/single-service --solo api-gateway"
14+
"generate:client": "node ../../scripts/generate-clients/single-service --solo api-gateway",
15+
"test:e2e": "yarn g:vitest run -c vitest.config.e2e.mts"
1516
},
1617
"main": "./dist-cjs/index.js",
1718
"types": "./dist-types/index.d.ts",
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
import { getE2eTestResources } from "@aws-sdk/aws-util-test/src";
2+
import { beforeAll, describe, expect, test as it } from "vitest";
3+
4+
import { APIGateway } from "../src/index";
5+
6+
describe("@aws-sdk/client-api-gateway", () => {
7+
let client: APIGateway;
8+
let region: string;
9+
10+
beforeAll(async () => {
11+
const e2eTestResourcesEnv = await getE2eTestResources();
12+
Object.assign(process.env, e2eTestResourcesEnv);
13+
14+
region = process?.env?.AWS_SMOKE_TEST_REGION as string;
15+
16+
client = new APIGateway({ region });
17+
});
18+
19+
describe("Making a request", () => {
20+
it("should successfully get REST APIs", async () => {
21+
const result = await client.getRestApis({});
22+
23+
expect(result).toBeDefined();
24+
expect(result.items).toBeDefined();
25+
expect(Array.isArray(result.items)).toBe(true);
26+
});
27+
});
28+
29+
describe("Error handling", () => {
30+
it("should handle NotFoundException for invalid REST API ID", async () => {
31+
await expect(
32+
client.getRestApi({
33+
restApiId: "fake_id",
34+
})
35+
).rejects.toThrow(
36+
expect.objectContaining({
37+
name: "NotFoundException",
38+
})
39+
);
40+
});
41+
});
42+
});
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import { defineConfig } from "vitest/config";
2+
3+
export default defineConfig({
4+
test: {
5+
exclude: ["**/*.browser.e2e.spec.ts"],
6+
include: ["**/*.e2e.spec.ts"],
7+
environment: "node",
8+
},
9+
mode: "development",
10+
});

clients/client-cloudformation/package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@
1111
"build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4",
1212
"clean": "rimraf ./dist-* && rimraf *.tsbuildinfo",
1313
"extract:docs": "api-extractor run --local",
14-
"generate:client": "node ../../scripts/generate-clients/single-service --solo cloudformation"
14+
"generate:client": "node ../../scripts/generate-clients/single-service --solo cloudformation",
15+
"test:e2e": "yarn g:vitest run -c vitest.config.e2e.mts"
1516
},
1617
"main": "./dist-cjs/index.js",
1718
"types": "./dist-types/index.d.ts",
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
import { getE2eTestResources } from "@aws-sdk/aws-util-test/src";
2+
import { beforeAll, describe, expect, test as it } from "vitest";
3+
4+
import { CloudFormation, paginateListStacks } from "../src/index";
5+
6+
describe("@aws-sdk/client-cloudformation", () => {
7+
let client: CloudFormation;
8+
let region: string;
9+
10+
beforeAll(async () => {
11+
const e2eTestResourcesEnv = await getE2eTestResources();
12+
Object.assign(process.env, e2eTestResourcesEnv);
13+
14+
region = process?.env?.AWS_SMOKE_TEST_REGION as string;
15+
16+
client = new CloudFormation({ region });
17+
});
18+
19+
describe("Describing stacks", () => {
20+
it("should return stacks list when describing stacks is called", async () => {
21+
const result = await client.describeStacks({});
22+
23+
expect(result).toBeDefined();
24+
expect(result.Stacks).toBeDefined();
25+
expect(Array.isArray(result.Stacks)).toBe(true);
26+
});
27+
});
28+
29+
describe("Error handling", () => {
30+
it("should handle ValidationError for invalid stack creation", async () => {
31+
const templateBody = '{"Resources":{"member":{"Type":"AWS::SQS::Queue"}}}';
32+
33+
await expect(
34+
client.createStack({
35+
TemplateBody: templateBody,
36+
StackName: "", // Empty name should cause ValidationError
37+
})
38+
).rejects.toThrow(
39+
expect.objectContaining({
40+
name: "ValidationError",
41+
})
42+
);
43+
});
44+
});
45+
46+
describe("Paginating responses", () => {
47+
it("should paginate listStacks operation", async () => {
48+
const paginator = paginateListStacks({ client }, {});
49+
50+
let pageCount = 0;
51+
let lastPage;
52+
53+
for await (const page of paginator) {
54+
pageCount++;
55+
lastPage = page;
56+
if (pageCount >= 3) break; // Get at least three pages
57+
}
58+
59+
expect(pageCount).toBeGreaterThanOrEqual(1);
60+
expect(lastPage).toBeDefined();
61+
});
62+
});
63+
});
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import { defineConfig } from "vitest/config";
2+
3+
export default defineConfig({
4+
test: {
5+
exclude: ["**/*.browser.e2e.spec.ts"],
6+
include: ["**/*.e2e.spec.ts"],
7+
environment: "node",
8+
},
9+
mode: "development",
10+
});

features/acm/acm.feature

Lines changed: 0 additions & 17 deletions
This file was deleted.

0 commit comments

Comments
 (0)