forked from mongodb/libmongocrypt
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathgenerate-kek-tests.py
More file actions
69 lines (64 loc) · 1.86 KB
/
generate-kek-tests.py
File metadata and controls
69 lines (64 loc) · 1.86 KB
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
import json
keks = {
"aws": {
"template": {
"provider": "aws",
"key": "example arn",
"region": "example region",
"endpoint": "example.com"
},
"optional": [ "endpoint" ],
"endpoints": [ "endpoint" ]
},
"local": {
"template": {
"provider": "local"
}
},
"azure": {
"template": {
"provider": "azure",
"keyVaultEndpoint": "keyvault.example.com",
"keyName": "example keyName",
"keyVersion": "example keyVersion"
},
"optional": [ "keyVersion" ],
"endpoints": [ "keyVaultEndpoint" ]
},
"gcp": {
"template": {
"provider": "gcp",
"projectId": "example projectId",
"location": "example location",
"keyRing": "example keyRing",
"keyName": "example keyName",
"keyVersion": "example keyVersion",
"endpoint": "example.com"
},
"optional": [ "endpoint", "keyVersion" ],
"endpoints": [ "endpoint" ]
}
}
testcases = []
def add_testcase (input, expect):
testcases.append ({
"input": input,
"expect": expect
})
for name, kek in keks.items():
# Add successful case.
add_testcase (kek["template"], "ok")
# Test that endpoints are validated.
if "endpoints" in kek:
testcase = kek["template"].copy()
for endpoint in kek["endpoints"]:
testcase[endpoint] = "invalid endpoint"
add_testcase (testcase, "invalid endpoint")
# Test with all optional fields removed.
if "optional" in kek:
testcase = {}
for k,v in kek["template"].items():
if k not in kek["optional"]:
testcase[k] = v
add_testcase (testcase, "ok")
print (json.dumps(testcases, indent=4))