@@ -15,7 +15,7 @@ const rpc = api.new_rpc();
15
15
const test_utils = require ( './test_utils' ) ;
16
16
17
17
const fs = require ( 'fs' ) ;
18
- const AWS = require ( 'aws-sdk' ) ;
18
+ const { S3 } = require ( '@ aws-sdk/client-s3 ' ) ;
19
19
const crypto = require ( 'crypto' ) ;
20
20
const assert = require ( 'assert' ) ;
21
21
@@ -150,12 +150,15 @@ async function setup() {
150
150
function get_new_server ( user ) {
151
151
const access_key = user . access_keys . access_key ;
152
152
const secret_key = user . access_keys . secret_key ;
153
- return new AWS . S3 ( {
153
+ return new S3 ( {
154
154
endpoint : target_s3_endpoint ,
155
- s3ForcePathStyle : true ,
156
- accessKeyId : access_key . unwrap ( ) ,
157
- secretAccessKey : secret_key . unwrap ( ) ,
158
- maxRedirects : 10 ,
155
+ forcePathStyle : true ,
156
+ credentials : {
157
+ accessKeyId : access_key . unwrap ( ) ,
158
+ secretAccessKey : secret_key . unwrap ( ) ,
159
+ } ,
160
+ // v3: Deprecated. SDK does not follow redirects to avoid unintentional cross-region requests.
161
+ //maxRedirects: 10,
159
162
} ) ;
160
163
}
161
164
@@ -194,8 +197,8 @@ async function test_bucket_write_allowed() {
194
197
Key : file_name ,
195
198
Body : fs . createReadStream ( file_name )
196
199
} ;
197
- await server . upload ( params1 ) . promise ( ) ;
198
- await server . upload ( params2 ) . promise ( ) ;
200
+ await server . putObject ( { Bucket : params1 . Bucket , Key : params1 . Key , Body : params1 . Body } ) ;
201
+ await server . putObject ( { Bucket : params2 . Bucket , Key : params2 . Key , Body : params2 . Body } ) ;
199
202
200
203
file_name = await ops . generate_random_file ( 1 ) ;
201
204
// upload with full_access_user to both buckets:
@@ -205,7 +208,7 @@ async function test_bucket_write_allowed() {
205
208
Key : file_name ,
206
209
Body : fs . createReadStream ( file_name )
207
210
} ;
208
- await server . upload ( params ) . promise ( ) ;
211
+ await server . putObject ( { Bucket : params . Bucket , Key : params . Key , Body : params . Body } ) ;
209
212
console . log ( 'test_bucket_write_allowed PASSED' ) ;
210
213
}
211
214
@@ -218,13 +221,13 @@ async function test_bucket_read_allowed() {
218
221
Key : file_name ,
219
222
Body : fs . createReadStream ( file_name )
220
223
} ;
221
- await server . upload ( params1 ) . promise ( ) ;
224
+ await server . putObject ( { Bucket : params1 . Bucket , Key : params1 . Key , Body : params1 . Body } ) ;
222
225
const server2 = get_new_server ( bucket1_user ) ;
223
226
const params2 = {
224
227
Bucket : 'bucket1' ,
225
228
Key : file_name
226
229
} ;
227
- await server2 . getObject ( params2 ) . promise ( ) ;
230
+ await server2 . getObject ( params2 ) ;
228
231
console . log ( 'test_bucket_read_allowed PASSED' ) ;
229
232
}
230
233
@@ -238,13 +241,13 @@ async function test_bucket_list_allowed() {
238
241
Key : file_name ,
239
242
Body : fs . createReadStream ( file_name )
240
243
} ;
241
- await server . upload ( params1 ) . promise ( ) ;
244
+ await server . putObject ( params1 ) ;
242
245
243
246
const server2 = get_new_server ( bucket1_user ) ;
244
247
const params2 = {
245
248
Bucket : 'bucket1'
246
249
} ;
247
- await server2 . listObjects ( params2 ) . promise ( ) ;
250
+ await server2 . listObjects ( params2 ) ;
248
251
249
252
}
250
253
@@ -260,7 +263,7 @@ async function test_bucket_write_denied() {
260
263
Body : fs . createReadStream ( file_name )
261
264
} ;
262
265
try {
263
- await server . upload ( params1 ) . promise ( ) ;
266
+ await server . putObject ( params1 ) ;
264
267
265
268
throw new Error ( 'expecting upload to fail with statusCode 403- AccessDenied' ) ;
266
269
@@ -279,14 +282,14 @@ async function test_bucket_read_denied() {
279
282
Key : file_name ,
280
283
Body : fs . createReadStream ( file_name )
281
284
} ;
282
- await server . upload ( params1 ) . promise ( ) ;
285
+ await server . putObject ( params1 ) ;
283
286
const server2 = get_new_server ( bucket1_user ) ;
284
287
const params2 = {
285
288
Bucket : 'bucket2' ,
286
289
Key : file_name
287
290
} ;
288
291
try {
289
- await server2 . getObject ( params2 ) . promise ( ) ;
292
+ await server2 . getObject ( params2 ) ;
290
293
throw new Error ( 'expecting read to fail with statusCode 403- AccessDenied' ) ;
291
294
} catch ( err ) {
292
295
assert ( err . statusCode === 403 , 'expecting read to fail with statusCode 403- AccessDenied' ) ;
@@ -304,14 +307,14 @@ async function test_bucket_list_denied() {
304
307
Key : file_name ,
305
308
Body : fs . createReadStream ( file_name )
306
309
} ;
307
- await server . upload ( params1 ) . promise ( ) ;
310
+ await server . putObject ( params1 ) ;
308
311
309
312
const server2 = get_new_server ( bucket1_user ) ;
310
313
const params2 = {
311
314
Bucket : 'bucket2'
312
315
} ;
313
316
try {
314
- await server2 . listObjects ( params2 ) . promise ( ) ;
317
+ await server2 . listObjects ( params2 ) ;
315
318
throw new Error ( 'expecting read to fail with statusCode 403- AccessDenied' ) ;
316
319
} catch ( err ) {
317
320
assert ( err . statusCode === 403 , 'expecting read to fail with statusCode 403- AccessDenied' ) ;
@@ -326,7 +329,7 @@ async function test_create_bucket_add_creator_permissions() {
326
329
const params = {
327
330
Bucket : unique_bucket_name
328
331
} ;
329
- await server . createBucket ( params ) . promise ( ) ;
332
+ await server . createBucket ( params ) ;
330
333
331
334
// Owners have full access to the bucket
332
335
const bucket = await client . bucket . read_bucket ( { rpc_params : { name : unique_bucket_name } } ) ;
@@ -338,12 +341,12 @@ async function test_delete_bucket_deletes_permissions() {
338
341
const server = get_new_server ( full_access_user ) ;
339
342
const unique_bucket_name = 'bucket' + crypto . randomUUID ( ) ;
340
343
341
- await server . createBucket ( { Bucket : unique_bucket_name } ) . promise ( ) ;
344
+ await server . createBucket ( { Bucket : unique_bucket_name } ) ;
342
345
343
346
const bucket = await client . bucket . read_bucket ( { rpc_params : { name : unique_bucket_name } } ) ;
344
347
assert ( bucket . owner_account . email . unwrap ( ) === full_access_user . email , 'expecting full_access_user to have permissions to access ' + unique_bucket_name ) ;
345
348
346
- await server . deleteBucket ( { Bucket : unique_bucket_name } ) . promise ( ) ;
349
+ await server . deleteBucket ( { Bucket : unique_bucket_name } ) ;
347
350
348
351
try {
349
352
await client . bucket . read_bucket ( { rpc_params : { name : unique_bucket_name } } ) ;
@@ -356,7 +359,7 @@ async function test_delete_bucket_deletes_permissions() {
356
359
async function test_no_s3_access ( ) {
357
360
console . log ( `Starting test_no_s3_access` ) ;
358
361
const server = get_new_server ( no_access_user ) ;
359
- const data = await server . listBuckets ( ) . promise ( ) ;
362
+ const data = await server . listBuckets ( ) ;
360
363
assert ( data . Buckets . length === 0 , 'expecting an empty bucket list for no_access_user' ) ;
361
364
}
362
365
@@ -378,21 +381,21 @@ async function test_ip_restrictions() {
378
381
379
382
await client . account . update_account ( single_ip_restriction ) ;
380
383
try {
381
- await server . listBuckets ( ) . promise ( ) ;
384
+ await server . listBuckets ( ) ;
382
385
} catch ( err ) {
383
386
assert ( err . statusCode === 403 , 'expecting read to fail with statusCode 403- AccessDenied' ) ;
384
387
}
385
388
await client . account . update_account ( no_ip_restriction ) ;
386
- let data = await server . listBuckets ( ) . promise ( ) ;
389
+ let data = await server . listBuckets ( ) ;
387
390
assert ( data . Buckets . length !== 0 , 'expecting none empty bucket list for none-restricted IP' ) ;
388
391
await client . account . update_account ( range_ip_restriction ) ;
389
392
try {
390
- await server . listBuckets ( ) . promise ( ) ;
393
+ await server . listBuckets ( ) ;
391
394
} catch ( err ) {
392
395
assert ( err . statusCode === 403 , 'expecting read to fail with statusCode 403- AccessDenied' ) ;
393
396
}
394
397
await client . account . update_account ( no_ip_restriction ) ;
395
- data = await server . listBuckets ( ) . promise ( ) ;
398
+ data = await server . listBuckets ( ) ;
396
399
assert ( data . Buckets . length !== 0 , 'expecting none empty bucket list for none-restricted IP' ) ;
397
400
}
398
401
0 commit comments