@@ -129,74 +129,49 @@ mocha.describe('s3_ops', function() {
129129
130130 mocha . describe ( 'list_buckets permissions' , function ( ) {
131131 this . timeout ( 60000 ) ;
132- let s3_user ;
133- const test_user = 'test-user' ;
134- const user_bucket = 'user-buck' ;
135- const admin_bucket = 'admin-buck' ;
132+ let s3_account_a ;
133+ let s3_account_b ;
136134
137- mocha . before ( async function ( ) {
135+ async function create_account_and_client ( name ) {
138136 const account = await rpc_client . account . create_account ( {
139- name : test_user ,
140- email : test_user ,
141- has_login : false ,
142- s3_access : true ,
137+ name, email : name , has_login : false , s3_access : true ,
143138 default_resource : coretest . POOL_LIST [ 0 ] . name
144139 } ) ;
145-
146- s3_user = new S3Client ( {
140+ return new S3Client ( {
147141 ...s3_client_params ,
148142 credentials : {
149143 accessKeyId : account . access_keys [ 0 ] . access_key . unwrap ( ) ,
150144 secretAccessKey : account . access_keys [ 0 ] . secret_key . unwrap ( ) ,
151145 }
152146 } ) ;
147+ }
153148
154- await s3_user . send ( new CreateBucketCommand ( { Bucket : user_bucket } ) ) ;
155- await s3 . send ( new CreateBucketCommand ( { Bucket : admin_bucket } ) ) ;
149+ mocha . before ( async function ( ) {
150+ s3_account_a = await create_account_and_client ( 'account-a' ) ;
151+ s3_account_b = await create_account_and_client ( 'account-b' ) ;
152+ await s3_account_a . send ( new CreateBucketCommand ( { Bucket : 'bucket-a' } ) ) ;
153+ await s3_account_b . send ( new CreateBucketCommand ( { Bucket : 'bucket-b' } ) ) ;
154+ await s3 . send ( new CreateBucketCommand ( { Bucket : 'admin-buck' } ) ) ;
156155 } ) ;
157156
158157 mocha . after ( async function ( ) {
159- await s3_user . send ( new DeleteBucketCommand ( { Bucket : user_bucket } ) ) ;
160- await s3 . send ( new DeleteBucketCommand ( { Bucket : admin_bucket } ) ) ;
161- await rpc_client . account . delete_account ( { email : test_user } ) ;
158+ await s3_account_a . send ( new DeleteBucketCommand ( { Bucket : 'bucket-a' } ) ) ;
159+ await s3_account_b . send ( new DeleteBucketCommand ( { Bucket : 'bucket-b' } ) ) ;
160+ await s3 . send ( new DeleteBucketCommand ( { Bucket : 'admin-buck' } ) ) ;
161+ await rpc_client . account . delete_account ( { email : 'account-a' } ) ;
162+ await rpc_client . account . delete_account ( { email : 'account-b' } ) ;
162163 } ) ;
163164
164- mocha . it ( 'user should list only owned buckets' , async function ( ) {
165- const buckets = ( await s3_user . send ( new ListBucketsCommand ( ) ) ) . Buckets . map ( b => b . Name ) ;
166- assert ( buckets . includes ( user_bucket ) && ! buckets . includes ( admin_bucket ) ) ;
165+ mocha . it ( 'accounts should list only owned buckets' , async function ( ) {
166+ const buckets_a = ( await s3_account_a . send ( new ListBucketsCommand ( ) ) ) . Buckets . map ( b => b . Name ) ;
167+ const buckets_b = ( await s3_account_b . send ( new ListBucketsCommand ( ) ) ) . Buckets . map ( b => b . Name ) ;
168+ assert . deepStrictEqual ( buckets_a , [ 'bucket-a' ] ) ;
169+ assert . deepStrictEqual ( buckets_b , [ 'bucket-b' ] ) ;
167170 } ) ;
168171
169- mocha . it ( 'admin should list all buckets' , async function ( ) {
172+ mocha . it ( 'admin should lists all the buckets' , async function ( ) {
170173 const buckets = ( await s3 . send ( new ListBucketsCommand ( ) ) ) . Buckets . map ( b => b . Name ) ;
171- assert ( buckets . length >= 2 ) ;
172- assert ( buckets . includes ( user_bucket ) ) ;
173- assert ( buckets . includes ( admin_bucket ) ) ;
174- } ) ;
175-
176- mocha . it ( 'bucket policy grants list access' , async function ( ) {
177- let buckets = ( await s3_user . send ( new ListBucketsCommand ( ) ) ) . Buckets . map ( b => b . Name ) ;
178- assert ( ! buckets . includes ( admin_bucket ) ) ;
179-
180- await rpc_client . bucket . put_bucket_policy ( {
181- name : admin_bucket ,
182- policy : {
183- Version : '2012-10-17' ,
184- Statement : [ {
185- Effect : 'Allow' ,
186- Principal : { AWS : test_user } ,
187- Action : [ 's3:ListBucket' ] ,
188- Resource : [ `arn:aws:s3:::${ admin_bucket } ` ]
189- } ]
190- }
191- } ) ;
192-
193- buckets = ( await s3_user . send ( new ListBucketsCommand ( ) ) ) . Buckets . map ( b => b . Name ) ;
194- assert ( buckets . includes ( admin_bucket ) ) ;
195-
196- await rpc_client . bucket . delete_bucket_policy ( { name : admin_bucket } ) ;
197-
198- buckets = ( await s3_user . send ( new ListBucketsCommand ( ) ) ) . Buckets . map ( b => b . Name ) ;
199- assert ( ! buckets . includes ( admin_bucket ) ) ;
174+ assert ( buckets . includes ( 'bucket-a' ) && buckets . includes ( 'bucket-b' ) && buckets . includes ( 'admin-buck' ) ) ;
200175 } ) ;
201176 } ) ;
202177
0 commit comments