@@ -18,6 +18,7 @@ const {
1818 validateBucket,
1919 metadataGetObjects,
2020 metadataGetObject,
21+ storeServerAccessLogInfo,
2122} = require ( '../../../lib/metadata/metadataUtils' ) ;
2223const metadata = require ( '../../../lib/metadata/wrapper' ) ;
2324
@@ -150,3 +151,35 @@ describe('metadataGetObject', () => {
150151 } ) ;
151152 } ) ;
152153} ) ;
154+
155+ describe ( 'storeServerAccessLogInfo - copySource aclRequired' , ( ) => {
156+ it ( 'should move source aclRequired to sourceServerAccessLog and restore destination value' , ( ) => {
157+ // Destination auth set aclRequired='Yes', then source auth ran on the
158+ // same request object and did not set aclRequired (owner on source).
159+ const request = {
160+ serverAccessLog : { } ,
161+ } ;
162+ const options = {
163+ copySource : true ,
164+ savedAclRequired : 'Yes' ,
165+ } ;
166+ storeServerAccessLogInfo ( request , null , null , options ) ;
167+ assert . strictEqual ( request . sourceServerAccessLog . aclRequired , undefined ) ;
168+ assert . strictEqual ( request . serverAccessLog . aclRequired , 'Yes' ) ;
169+ } ) ;
170+
171+ it ( 'should swap aclRequired when source auth also required ACL check' , ( ) => {
172+ // Destination auth did not set aclRequired (owner on dest), then
173+ // source auth set aclRequired='Yes' on the same request object.
174+ const request = {
175+ serverAccessLog : { aclRequired : 'Yes' } ,
176+ } ;
177+ const options = {
178+ copySource : true ,
179+ savedAclRequired : undefined ,
180+ } ;
181+ storeServerAccessLogInfo ( request , null , null , options ) ;
182+ assert . strictEqual ( request . sourceServerAccessLog . aclRequired , 'Yes' ) ;
183+ assert . strictEqual ( request . serverAccessLog . aclRequired , undefined ) ;
184+ } ) ;
185+ } ) ;
0 commit comments