@@ -377,3 +377,66 @@ describe('aws-node-sdk test putBucketReplication configuration rules', () => {
377377 return checkError ( config , 'MalformedXML' , done ) ;
378378 } ) ;
379379} ) ;
380+
381+ describe ( 'aws-node-sdk test putBucketReplication CORS' , ( ) => {
382+ let s3 ;
383+ const bucket = 'source-bucket-cors' ;
384+
385+ beforeEach ( done => {
386+ const config = getConfig ( 'default' , { signatureVersion : 'v4' } ) ;
387+ s3 = new S3 ( config ) ;
388+ series ( [
389+ next => s3 . createBucket ( { Bucket : bucket } , next ) ,
390+ next => s3 . putBucketVersioning ( {
391+ Bucket : bucket ,
392+ VersioningConfiguration : { Status : 'Enabled' } ,
393+ } , next ) ,
394+ next => s3 . putBucketCors ( {
395+ Bucket : bucket ,
396+ CORSConfiguration : {
397+ CORSRules : [ {
398+ AllowedOrigins : [ '*' ] ,
399+ AllowedMethods : [ 'PUT' ] ,
400+ AllowedHeaders : [ '*' ] ,
401+ } ] ,
402+ } ,
403+ } , next ) ,
404+ ] , done ) ;
405+ } ) ;
406+
407+ afterEach ( done => {
408+ series ( [
409+ next => s3 . deleteBucketCors ( { Bucket : bucket } , err => {
410+ if ( err && err . code !== 'NoSuchCORSConfiguration' ) {
411+ return next ( err ) ;
412+ }
413+ return next ( ) ;
414+ } ) ,
415+ next => s3 . deleteBucket ( { Bucket : bucket } , next ) ,
416+ ] , done ) ;
417+ } ) ;
418+
419+ it ( 'should return CORS headers on malformed XML error' , done => {
420+ const replicationParams = {
421+ Bucket : bucket ,
422+ ReplicationConfiguration : {
423+ Role : 'arn:aws:iam::account-id:role/src-resource,' +
424+ 'arn:aws:iam::account-id:role/dest-resource' ,
425+ Rules : [ ] ,
426+ } ,
427+ } ;
428+ const request = s3 . putBucketReplication ( replicationParams ) ;
429+ request . on ( 'build' , ( ) => {
430+ request . httpRequest . headers . Origin = 'http://example.com' ;
431+ } ) ;
432+ request . send ( err => {
433+ console . log ( { err } ) ;
434+ assertError ( err , 'MalformedXML' ) ;
435+ assert . strictEqual (
436+ err . httpResponse . headers [ 'access-control-allow-origin' ] ,
437+ '*'
438+ ) ;
439+ done ( ) ;
440+ } ) ;
441+ } ) ;
442+ } ) ;
0 commit comments