-
Notifications
You must be signed in to change notification settings - Fork 5.8k
/
Copy pathsetup.steps.unit.test.js
136 lines (125 loc) · 4 KB
/
setup.steps.unit.test.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
import { describe, it, expect, vi, afterEach } from "vitest";
import { ChecksumAlgorithm } from "@aws-sdk/client-s3";
import * as Scenarios from "@aws-doc-sdk-examples/lib/scenario/index.js";
import {
createBucketsAction,
populateBucketsAction,
updateRetentionAction,
updateLockPolicyAction,
} from "./setup.steps.js";
describe.skip("setup.steps.js", () => {
const mockClient = {
send: vi.fn(),
};
const state = {
noLockBucketName: "js-object-locking-no-lock",
lockEnabledBucketName: "js-object-locking-lock-enabled",
retentionBucketName: "js-object-locking-retention-after-creation",
};
afterEach(() => {
vi.resetAllMocks();
});
describe.skip("createBucketsAction", () => {
it("should create three buckets with the correct configurations", async () => {
const action = createBucketsAction(Scenarios, mockClient);
await action.handle(state);
expect(mockClient.send).toHaveBeenCalledTimes(3);
expect(mockClient.send).toHaveBeenCalledWith(
expect.objectContaining({
input: {
Bucket: state.noLockBucketName,
},
}),
);
expect(mockClient.send).toHaveBeenCalledWith(
expect.objectContaining({
input: {
Bucket: state.lockEnabledBucketName,
ObjectLockEnabledForBucket: true,
},
}),
);
expect(mockClient.send).toHaveBeenCalledWith(
expect.objectContaining({
input: {
Bucket: state.retentionBucketName,
},
}),
);
});
});
describe.skip("populateBucketsAction", () => {
it("should upload six files to the three buckets", async () => {
const action = populateBucketsAction(Scenarios, mockClient);
await action.handle(state);
expect(mockClient.send).toHaveBeenCalledTimes(6);
for (const stateKey in state) {
for (const fileName of ["file0.txt", "file1.txt"]) {
expect(mockClient.send).toHaveBeenCalledWith(
expect.objectContaining({
input: {
Bucket: state[stateKey],
Key: fileName,
Body: "Content",
ChecksumAlgorithm: ChecksumAlgorithm.SHA256,
},
}),
);
}
}
});
});
describe.skip("updateRetentionAction", () => {
it("should enable versioning and set a retention period on the retention bucket", async () => {
const action = updateRetentionAction(Scenarios, mockClient);
await action.handle(state);
expect(mockClient.send).toHaveBeenCalledTimes(2);
expect(mockClient.send).toHaveBeenCalledWith(
expect.objectContaining({
input: {
Bucket: state.retentionBucketName,
VersioningConfiguration: {
MFADelete: "Disabled",
Status: "Enabled",
},
},
}),
);
expect(mockClient.send).toHaveBeenCalledWith(
expect.objectContaining({
input: {
Bucket: state.retentionBucketName,
ObjectLockConfiguration: {
ObjectLockEnabled: "Enabled",
Rule: {
DefaultRetention: {
Mode: "GOVERNANCE",
Years: 1,
},
},
},
},
}),
);
});
});
describe.skip("updateLockPolicyAction", () => {
it("should add an object lock policy to the lock-enabled bucket", async () => {
const action = updateLockPolicyAction(Scenarios, mockClient);
await action.handle(state);
expect(mockClient.send).toHaveBeenCalledTimes(1);
expect(mockClient.send).toHaveBeenCalledWith(
expect.objectContaining({
input: {
Bucket: state.lockEnabledBucketName,
ObjectLockConfiguration: {
ObjectLockEnabled: "Enabled",
},
},
}),
);
});
});
});