@@ -8,10 +8,7 @@ module QueryTransformTest {
8
8
import opened DynamoDbEncryptionTransforms
9
9
import opened TestFixtures
10
10
import DDB = ComAmazonawsDynamodbTypes
11
- import DBT = AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes
12
- import DBE = AwsCryptographyDbEncryptionSdkDynamoDbTypes
13
- import Types = AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes
14
- import AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes
11
+ import AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes
15
12
16
13
method {:test} TestQueryInputPassthrough () {
17
14
var middlewareUnderTest := TestFixtures. GetDynamoDbEncryptionTransforms ();
@@ -56,7 +53,23 @@ module QueryTransformTest {
56
53
);
57
54
var tableName := GetTableName ("no_such_table");
58
55
var input := DDB. QueryInput (
59
- TableName := tableName
56
+ TableName := tableName,
57
+ IndexName := None(),
58
+ Select := None (),
59
+ AttributesToGet := None (),
60
+ Limit := None (),
61
+ ConsistentRead := None (),
62
+ KeyConditions := None (),
63
+ QueryFilter := None (),
64
+ ConditionalOperator := None (),
65
+ ScanIndexForward := None (),
66
+ ExclusiveStartKey := None (),
67
+ ReturnConsumedCapacity := None (),
68
+ ProjectionExpression := None (),
69
+ FilterExpression := None (),
70
+ KeyConditionExpression := None (),
71
+ ExpressionAttributeNames := None (),
72
+ ExpressionAttributeValues := None ()
60
73
);
61
74
var transformed := middlewareUnderTest. QueryOutputTransform (
62
75
AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.QueryOutputTransformInput(
@@ -68,152 +81,4 @@ module QueryTransformTest {
68
81
expect_ok ("QueryOutput", transformed);
69
82
expect_equal ("QueryOutput", transformed.value.transformedOutput, output);
70
83
}
71
-
72
- function method DDBS (x : string ) : DDB. AttributeValue {
73
- DDB. AttributeValue. S (x)
74
- }
75
-
76
- const Actions1 : DBE. AttributeActions := map [
77
- GetAttrName ("bar") := CSE. SIGN_ONLY,
78
- GetAttrName ("sortKey") := CSE. SIGN_ONLY,
79
- GetAttrName ("encrypt1") := CSE. ENCRYPT_AND_SIGN,
80
- GetAttrName ("encrypt2") := CSE. ENCRYPT_AND_SIGN,
81
- GetAttrName ("sign1") := CSE. SIGN_ONLY,
82
- GetAttrName ("sign2") := CSE. SIGN_ONLY
83
- ]
84
-
85
- method {:test} TestDecryptErrorWithSortKey () {
86
- var config := TestFixtures. GetEncryptorConfigFromActions (Actions1, Some("sortKey"));
87
- var encryptor := TestFixtures. GetDynamoDbItemEncryptorFrom (config);
88
-
89
- var inputItem : map < DDB. AttributeName, DDB. AttributeValue> := map [
90
- "bar" := DDB. AttributeValue. N ("00001234"),
91
- "sortKey" := DDB. AttributeValue. B ([1,2,3,4]),
92
- "encrypt1" := DDBS ("some text"),
93
- "encrypt2" := DDBS ("more text"),
94
- "sign1" := DDBS ("stuff"),
95
- "sign2" := DDB. AttributeValue. BOOL (false)
96
- ];
97
-
98
- var encryptRes :- expect encryptor. EncryptItem (
99
- Types.EncryptItemInput(
100
- plaintextItem:=inputItem
101
- )
102
- );
103
- var item1 := encryptRes. encryptedItem;
104
- expect "encrypt1" in item1;
105
- expect item1["encrypt1"] != DDBS ("some text");
106
-
107
- inputItem := map [
108
- "bar" := DDB. AttributeValue. N ("567"),
109
- "sortKey" := DDB. AttributeValue. B ([5,6,7]),
110
- "encrypt1" := DDBS ("some text"),
111
- "encrypt2" := DDBS ("more text"),
112
- "sign1" := DDBS ("stuff"),
113
- "sign2" := DDB. AttributeValue. BOOL (false)
114
- ];
115
- encryptRes :- expect encryptor. EncryptItem (
116
- Types.EncryptItemInput(
117
- plaintextItem:=inputItem
118
- )
119
- );
120
- var item2 := encryptRes. encryptedItem;
121
- expect "encrypt1" in item2;
122
- expect item2["encrypt1"] != DDBS ("some text");
123
-
124
- inputItem := map [
125
- "bar" := DDB. AttributeValue. N ("890"),
126
- "sortKey" := DDB. AttributeValue. B ([3,1,4]),
127
- "encrypt1" := DDBS ("some text"),
128
- "encrypt2" := DDBS ("more text"),
129
- "sign1" := DDBS ("stuff"),
130
- "sign2" := DDB. AttributeValue. BOOL (false)
131
- ];
132
- encryptRes :- expect encryptor. EncryptItem (
133
- Types.EncryptItemInput(
134
- plaintextItem:=inputItem
135
- )
136
- );
137
- var item3 := encryptRes. encryptedItem;
138
- expect "encrypt1" in item3;
139
- expect item3["encrypt1"] != DDBS ("some text");
140
-
141
- var middlewareUnderTest := TestFixtures. GetDynamoDbEncryptionTransforms2 (Actions1, Some("sortKey"));
142
- var tableName := GetTableName ("foo");
143
- var input := DDB. QueryInput (
144
- TableName := tableName
145
- );
146
-
147
- var transformed := middlewareUnderTest. QueryOutputTransform (
148
- AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.QueryOutputTransformInput(
149
- sdkOutput := DDB.QueryOutput(Items := Some([item1, item2, item3])),
150
- originalInput := input
151
- )
152
- );
153
-
154
- TestFixtures. expect_ok ("QueryOutput", transformed);
155
- expect transformed. value. transformedOutput. Items. Some?;
156
- var itemList := transformed. value. transformedOutput. Items. value;
157
- expect |itemList| == 3;
158
- expect "encrypt1" in itemList[0];
159
- expect itemList[0]["encrypt1"] == DDBS ("some text");
160
-
161
-
162
- // / now do some damage
163
- item1 := item1["encrypt1" := item2["encrypt1"]];
164
- transformed := middlewareUnderTest. QueryOutputTransform (
165
- AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.QueryOutputTransformInput(
166
- sdkOutput := DDB.QueryOutput(Items := Some([item1, item2, item3])),
167
- originalInput := input
168
- )
169
- );
170
- expect transformed. Failure?;
171
- print "\n", transformed. error, "\n";
172
- expect transformed. error ==
173
- AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes. Error. CollectionOfErrors (
174
- [
175
- AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Error.AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptor(AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Error.AwsCryptographyDbEncryptionSdkDynamoDb(AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error.AwsCryptographyDbEncryptionSdkStructuredEncryption(AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Error.StructuredEncryptionException(message := "Signature of record does not match the signature computed when the record was encrypted.")))),
176
- AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes. Error. DynamoDbEncryptionTransformsException (message := "bar = 1234; sortKey = 01020304")
177
- ],
178
- message := "Error (s) found decrypting Query results. "
179
- );
180
-
181
- // / do more damage
182
- item3 := item3["encrypt1" := item2["encrypt1"]];
183
- transformed := middlewareUnderTest. QueryOutputTransform (
184
- AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.QueryOutputTransformInput(
185
- sdkOutput := DDB.QueryOutput(Items := Some([item1, item2, item3])),
186
- originalInput := input
187
- )
188
- );
189
- expect transformed. Failure?;
190
- print "\n", transformed. error, "\n";
191
- expect transformed. error ==
192
- AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes. Error. CollectionOfErrors (
193
- [
194
- AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Error.AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptor(AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Error.AwsCryptographyDbEncryptionSdkDynamoDb(AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error.AwsCryptographyDbEncryptionSdkStructuredEncryption(AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Error.StructuredEncryptionException(message := "Signature of record does not match the signature computed when the record was encrypted.")))),
195
- AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes. Error. DynamoDbEncryptionTransformsException (message := "bar = 1234; sortKey = 01020304"),
196
- AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes. Error. DynamoDbEncryptionTransformsException (message := "bar = 890; sortKey = 030104")
197
- ],
198
- message := "Error (s) found decrypting Query results. "
199
- );
200
-
201
- var transformed_scan := middlewareUnderTest. ScanOutputTransform (
202
- AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ScanOutputTransformInput(
203
- sdkOutput := DDB.ScanOutput(Items := Some([item1, item2, item3])),
204
- originalInput := DDB. ScanInput (TableName := tableName)
205
- )
206
- );
207
- expect transformed_scan. Failure?;
208
- print "\n", transformed_scan. error, "\n";
209
- expect transformed_scan. error ==
210
- AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes. Error. CollectionOfErrors (
211
- [
212
- AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Error.AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptor(AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Error.AwsCryptographyDbEncryptionSdkDynamoDb(AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error.AwsCryptographyDbEncryptionSdkStructuredEncryption(AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Error.StructuredEncryptionException(message := "Signature of record does not match the signature computed when the record was encrypted.")))),
213
- AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes. Error. DynamoDbEncryptionTransformsException (message := "bar = 1234; sortKey = 01020304"),
214
- AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes. Error. DynamoDbEncryptionTransformsException (message := "bar = 890; sortKey = 030104")
215
- ],
216
- message := "Error (s) found decrypting Scan results. "
217
- );
218
- }
219
84
}
0 commit comments