@@ -52,6 +52,8 @@ let http_server = null;
52
52
let server_done = false ;
53
53
let expected_bucket ;
54
54
let expected_event_name ;
55
+ let expected_key ;
56
+ let expected_eTag ;
55
57
56
58
// eslint-disable-next-line max-lines-per-function
57
59
mocha . describe ( 'notifications' , function ( ) {
@@ -91,9 +93,10 @@ mocha.describe('notifications', function() {
91
93
if ( notif !== "test notification" ) {
92
94
assert . strictEqual ( notif . Records [ 0 ] . s3 . bucket . name , expected_bucket , 'wrong bucket name in notification' ) ;
93
95
assert . strictEqual ( notif . Records [ 0 ] . eventName , expected_event_name , 'wrong event name in notification' ) ;
94
-
96
+ assert . strictEqual ( notif . Records [ 0 ] . s3 . object . key , expected_key , 'wrong key in notification' ) ;
97
+ const expected_eTag_trimmed = expected_eTag && expected_eTag . substring ( 1 , expected_eTag . length - 1 ) ;
98
+ assert . strictEqual ( notif . Records [ 0 ] . s3 . object . eTag , expected_eTag_trimmed , 'wrong eTag in notification' ) ;
95
99
}
96
-
97
100
res . writeHead ( 200 , { 'Content-Type' : 'text/plain' } ) ;
98
101
res . end ( ) ;
99
102
server_done = true ;
@@ -120,13 +123,18 @@ mocha.describe('notifications', function() {
120
123
} ) ;
121
124
122
125
mocha . it ( 'simple notif put' , async ( ) => {
123
- await s3 . putObject ( {
126
+ const res = await s3 . putObject ( {
124
127
Bucket : bucket ,
125
128
Key : 'f1' ,
126
129
Body : 'this is the body' ,
127
130
} ) ;
128
131
129
- await notify_await_result ( { bucket_name : bucket , event_name : 'ObjectCreated:Put' } ) ;
132
+ await notify_await_result ( {
133
+ bucket_name : bucket ,
134
+ event_name : 'ObjectCreated:Put' ,
135
+ key : "f1" ,
136
+ etag : res . ETag
137
+ } ) ;
130
138
} ) ;
131
139
132
140
@@ -136,7 +144,12 @@ mocha.describe('notifications', function() {
136
144
Key : 'f1' ,
137
145
} ) ;
138
146
139
- await notify_await_result ( { bucket_name : bucket , event_name : 'ObjectRemoved:Delete' } ) ;
147
+ await notify_await_result ( {
148
+ bucket_name : bucket ,
149
+ event_name : 'ObjectRemoved:Delete' ,
150
+ key : "f1" ,
151
+ etag : undefined
152
+ } ) ;
140
153
} ) ;
141
154
142
155
@@ -155,13 +168,18 @@ mocha.describe('notifications', function() {
155
168
156
169
assert . strictEqual ( set . $metadata . httpStatusCode , 200 ) ;
157
170
158
- await s3 . putObject ( {
171
+ const res = await s3 . putObject ( {
159
172
Bucket : bucket ,
160
173
Key : 'f2' ,
161
174
Body : 'this is the body' ,
162
175
} ) ;
163
176
164
- await notify_await_result ( { bucket_name : bucket , event_name : 'ObjectCreated:Put' } ) ;
177
+ await notify_await_result ( {
178
+ bucket_name : bucket ,
179
+ event_name : 'ObjectCreated:Put' ,
180
+ key : "f2" ,
181
+ etag : res . ETag
182
+ } ) ;
165
183
166
184
await s3 . deleteObject ( {
167
185
Bucket : bucket ,
@@ -171,16 +189,53 @@ mocha.describe('notifications', function() {
171
189
//there shouldn't be a notification for the delete, wait 2 seconds to validate this
172
190
await notify_await_result ( { timeout : 2000 } ) ;
173
191
} ) ;
192
+
193
+ mocha . it ( 'multipart' , async ( ) => {
194
+ const res_create = await s3 . createMultipartUpload ( {
195
+ Bucket : bucket ,
196
+ Key : 'mp1'
197
+ } ) ;
198
+
199
+ const res_upload = await s3 . uploadPart ( {
200
+ Bucket : bucket ,
201
+ Key : 'mp1' ,
202
+ UploadId : res_create . UploadId ,
203
+ PartNumber : 1 ,
204
+ Body : 'this is the body'
205
+ } ) ;
206
+
207
+ const res_complete = await s3 . completeMultipartUpload ( {
208
+ Bucket : bucket ,
209
+ Key : 'mp1' ,
210
+ UploadId : res_create . UploadId ,
211
+ MultipartUpload : {
212
+ Parts : [ {
213
+ ETag : res_upload . ETag ,
214
+ PartNumber : 1
215
+ } ]
216
+ }
217
+ } ) ;
218
+
219
+ await notify_await_result ( {
220
+ bucket_name : bucket ,
221
+ event_name : 'ObjectCreated:CompleteMultipartUpload' ,
222
+ key : "mp1" ,
223
+ etag : res_complete . ETag
224
+ } ) ;
225
+ } ) ;
226
+
174
227
} ) ;
175
228
176
229
} ) ;
177
230
178
231
const step_wait = 100 ;
179
- async function notify_await_result ( { bucket_name, event_name, timeout} ) {
232
+ async function notify_await_result ( { bucket_name, event_name, etag , key , timeout = undefined } ) {
180
233
181
234
//remember expected result here so server could compare it to actual result later
182
235
expected_bucket = bucket_name ;
183
236
expected_event_name = event_name ;
237
+ expected_eTag = etag ;
238
+ expected_key = key ;
184
239
server_done = false ;
185
240
186
241
//busy-sync wait for server
0 commit comments