Skip to content

Commit 338d9ea

Browse files
authored
Added KMS Scheduled Deletion Spec File (aquasecurity#1056)
1 parent 69a41eb commit 338d9ea

1 file changed

Lines changed: 160 additions & 0 deletions

File tree

Lines changed: 160 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,160 @@
1+
var expect = require('chai').expect;
2+
const kmsScheduledDeletion = require('./kmsScheduledDeletion');
3+
4+
const listKeys = [
5+
{
6+
KeyId: '60c4f21b-e271-4e97-86ae-6403618a9467',
7+
KeyArn: 'arn:aws:kms:us-east-1:112233445566:key/60c4f21b-e271-4e97-86ae-6403618a9467'
8+
}
9+
];
10+
11+
const describeKey = [
12+
{
13+
KeyMetadata: {
14+
AWSAccountId: "111122223333",
15+
Arn: "arn:aws:kms:us-east-1:111122223333:key/60c4f21b-e271-4e97-86ae-6403618a9467",
16+
CreationDate: "2020-08-26T16:55:28+00:00",
17+
CustomerMasterKeySpec: "SYMMETRIC_DEFAULT",
18+
Description: "",
19+
Enabled: true,
20+
EncryptionAlgorithms: [
21+
"SYMMETRIC_DEFAULT"
22+
],
23+
KeyId: "60c4f21b-e271-4e97-86ae-6403618a9467",
24+
KeyManager: "CUSTOMER",
25+
KeyState: "PendingDeletion",
26+
KeyUsage: "ENCRYPT_DECRYPT",
27+
MultiRegion: false,
28+
Origin: "AWS_KMS"
29+
}
30+
},
31+
{
32+
KeyMetadata: {
33+
AWSAccountId: "111122223333",
34+
Arn: "arn:aws:kms:us-east-1:111122223333:key/60c4f21b-e271-4e97-86ae-6403618a9467",
35+
CreationDate: "2020-08-26T16:55:28+00:00",
36+
CustomerMasterKeySpec: "SYMMETRIC_DEFAULT",
37+
Description: "",
38+
Enabled: true,
39+
EncryptionAlgorithms: [
40+
"SYMMETRIC_DEFAULT"
41+
],
42+
KeyId: "60c4f21b-e271-4e97-86ae-6403618a9467",
43+
KeyManager: "CUSTOMER",
44+
KeyState: "Enabled",
45+
KeyUsage: "ENCRYPT_DECRYPT",
46+
MultiRegion: false,
47+
Origin: "AWS_KMS"
48+
}
49+
},
50+
]
51+
52+
const createCache = (keys, describeKeys) => {
53+
var keyId = (keys && keys.length) ? keys[0].KeyId : null;
54+
return {
55+
kms:{
56+
listKeys: {
57+
'us-east-1': {
58+
data: keys
59+
},
60+
},
61+
describeKey: {
62+
'us-east-1': {
63+
[keyId]: {
64+
data: describeKeys
65+
},
66+
},
67+
},
68+
},
69+
};
70+
};
71+
72+
const createErrorCache = () => {
73+
return {
74+
kms: {
75+
listKeys: {
76+
'us-east-1': {
77+
err: {
78+
message: 'error listing kms keys'
79+
},
80+
},
81+
},
82+
describeKey: {
83+
'us-east-1': {
84+
err: {
85+
message: 'error listing kms key resources'
86+
},
87+
},
88+
},
89+
},
90+
};
91+
};
92+
93+
const createNullCache = () => {
94+
return {
95+
kms: {
96+
listKeys: {
97+
'us-east-1': null,
98+
},
99+
describeKey: {
100+
'us-east-1': null
101+
},
102+
},
103+
};
104+
};
105+
106+
describe('kmsScheduledDeletion', function () {
107+
describe('run', function () {
108+
it('should WARN if Key is scheduled for deletion', function (done) {
109+
const cache = createCache([listKeys[0]], describeKey[0]);
110+
kmsScheduledDeletion.run(cache, {}, (err, results) => {
111+
expect(results.length).to.equal(1);
112+
expect(results[0].status).to.equal(1);
113+
expect(results[0].message).to.include('Key is scheduled for deletion');
114+
expect(results[0].region).to.equal('us-east-1');
115+
done();
116+
});
117+
});
118+
119+
it('should PASS if Key is not scheduled for deletion', function (done) {
120+
const cache = createCache([listKeys[0]], describeKey[1]);
121+
kmsScheduledDeletion.run(cache, {}, (err, results) => {
122+
expect(results.length).to.equal(1);
123+
expect(results[0].status).to.equal(0);
124+
expect(results[0].message).to.include('Key is not scheduled for deletion');
125+
expect(results[0].region).to.equal('us-east-1');
126+
done();
127+
});
128+
});
129+
130+
it('should PASS if no KMS keys found', function (done) {
131+
const cache = createCache([], describeKey[0]);
132+
kmsScheduledDeletion.run(cache, {}, (err, results) => {
133+
expect(results.length).to.equal(1);
134+
expect(results[0].status).to.equal(0);
135+
expect(results[0].message).to.include('No KMS keys found');
136+
expect(results[0].region).to.equal('us-east-1');
137+
done();
138+
});
139+
});
140+
141+
it('should UNKNOWN if unable to list KMS keys', function (done) {
142+
const cache = createErrorCache();
143+
kmsScheduledDeletion.run(cache, {}, (err, results) => {
144+
expect(results.length).to.equal(1);
145+
expect(results[0].status).to.equal(3);
146+
expect(results[0].message).to.include('Unable to list KMS keys');
147+
expect(results[0].region).to.equal('us-east-1');
148+
done();
149+
});
150+
});
151+
152+
it('should not return any result if list keys response is not found', function (done) {
153+
const cache = createNullCache();
154+
kmsScheduledDeletion.run(cache, {}, (err, results) => {
155+
expect(results.length).to.equal(0);
156+
done();
157+
});
158+
});
159+
});
160+
});

0 commit comments

Comments
 (0)