11const assert = require ( 'assert' ) ;
2- const async = require ( 'async' ) ;
2+ const {
3+ CreateBucketCommand,
4+ PutBucketVersioningCommand,
5+ DeleteBucketCommand,
6+ PutObjectCommand,
7+ DeleteObjectCommand,
8+ } = require ( '@aws-sdk/client-s3' ) ;
39
410const withV4 = require ( '../support/withV4' ) ;
511const BucketUtility = require ( '../../lib/utility/bucket-util' ) ;
@@ -12,11 +18,7 @@ const key = 'anObject';
1218
1319function checkError ( err , code ) {
1420 assert . notEqual ( err , null , 'Expected failure but got success' ) ;
15- assert . strictEqual ( err . code , code ) ;
16- }
17-
18- function checkNoError ( err ) {
19- assert . ifError ( err , `Expected success, got error ${ JSON . stringify ( err ) } ` ) ;
21+ assert . strictEqual ( err . Code , code ) ;
2022}
2123
2224describe ( 'aws-node-sdk test delete bucket' , ( ) => {
@@ -25,72 +27,68 @@ describe('aws-node-sdk test delete bucket', () => {
2527 const s3 = bucketUtil . s3 ;
2628
2729 // setup test
28- beforeEach ( done => {
29- async . waterfall ( [
30- next => s3 . createBucket ( { Bucket : bucketName } ,
31- err => next ( err ) ) ,
32- next => s3 . putBucketVersioning ( {
33- Bucket : bucketName ,
34- VersioningConfiguration : {
35- Status : 'Enabled' ,
36- } ,
37- } , err => next ( err ) ) ,
38- ] , done ) ;
30+ beforeEach ( async ( ) => {
31+ await s3 . send ( new CreateBucketCommand ( { Bucket : bucketName } ) ) ;
32+ await s3 . send ( new PutBucketVersioningCommand ( {
33+ Bucket : bucketName ,
34+ VersioningConfiguration : {
35+ Status : 'Enabled' ,
36+ } ,
37+ } ) ) ;
3938 } ) ;
4039
4140 // empty and delete bucket after testing if bucket exists
42- afterEach ( done => {
43- removeAllVersions ( { Bucket : bucketName } , err => {
44- if ( err && err . code === 'NoSuchBucket' ) {
45- return done ( ) ;
46- } else if ( err ) {
47- return done ( err ) ;
41+ afterEach ( async ( ) => {
42+ try {
43+ await removeAllVersions ( { Bucket : bucketName } ) ;
44+ await s3 . send ( new DeleteBucketCommand ( { Bucket : bucketName } ) ) ;
45+ } catch ( err ) {
46+ if ( err && err . Code === 'NoSuchBucket' ) {
47+ return ;
48+ } else {
49+ throw err ;
4850 }
49- return s3 . deleteBucket ( { Bucket : bucketName } , done ) ;
50- } ) ;
51+ }
5152 } ) ;
5253
5354 it ( 'should be able to delete empty bucket with version enabled' ,
54- done => {
55- s3 . deleteBucket ( { Bucket : bucketName } , err => {
56- checkNoError ( err ) ;
57- return done ( ) ;
58- } ) ;
55+ async ( ) => {
56+ await s3 . send ( new DeleteBucketCommand ( { Bucket : bucketName } ) ) ;
5957 } ) ;
6058
6159 it ( 'should return error 409 BucketNotEmpty if trying to delete bucket' +
62- ' containing delete marker' , done => {
63- s3 . deleteObject ( { Bucket : bucketName , Key : key } , err => {
64- if ( err ) {
65- return done ( err ) ;
66- }
67- return s3 . deleteBucket ( { Bucket : bucketName } , err => {
68- checkError ( err , 'BucketNotEmpty' ) ;
69- return done ( ) ;
70- } ) ;
71- } ) ;
60+ ' containing delete marker' , async ( ) => {
61+ await s3 . send ( new DeleteObjectCommand ( { Bucket : bucketName , Key : key } ) ) ;
62+
63+ try {
64+ await s3 . send ( new DeleteBucketCommand ( { Bucket : bucketName } ) ) ;
65+ assert . fail ( 'Expected BucketNotEmpty error but got success' ) ;
66+ } catch ( err ) {
67+ checkError ( err , 'BucketNotEmpty' ) ;
68+ }
7269 } ) ;
7370
7471 it ( 'should return error 409 BucketNotEmpty if trying to delete bucket' +
75- ' containing version and delete marker' , done => {
76- async . waterfall ( [
77- next => s3 . putObject ( { Bucket : bucketName , Key : key } ,
78- err => next ( err ) ) ,
79- next => s3 . deleteObject ( { Bucket : bucketName , Key : key } ,
80- err => next ( err ) ) ,
81- next => s3 . deleteBucket ( { Bucket : bucketName } , err => {
82- checkError ( err , 'BucketNotEmpty' ) ;
83- return next ( ) ;
84- } ) ,
85- ] , done ) ;
72+ ' containing version and delete marker' , async ( ) => {
73+ await s3 . send ( new PutObjectCommand ( { Bucket : bucketName , Key : key } ) ) ;
74+ await s3 . send ( new DeleteObjectCommand ( { Bucket : bucketName , Key : key } ) ) ;
75+
76+ try {
77+ await s3 . send ( new DeleteBucketCommand ( { Bucket : bucketName } ) ) ;
78+ assert . fail ( 'Expected BucketNotEmpty error but got success' ) ;
79+ } catch ( err ) {
80+ checkError ( err , 'BucketNotEmpty' ) ;
81+ }
8682 } ) ;
8783
8884 it ( 'should return error 404 NoSuchBucket if the bucket name is invalid' ,
89- done => {
90- s3 . deleteBucket ( { Bucket : 'bucketA' } , err => {
85+ async ( ) => {
86+ try {
87+ await s3 . send ( new DeleteBucketCommand ( { Bucket : 'bucketA' } ) ) ;
88+ assert . fail ( 'Expected NoSuchBucket error but got success' ) ;
89+ } catch ( err ) {
9190 checkError ( err , 'NoSuchBucket' ) ;
92- return done ( ) ;
93- } ) ;
91+ }
9492 } ) ;
9593 } ) ;
9694} ) ;
0 commit comments