@ -75,8 +75,38 @@ func (s *TestSuiteCommon) TestAuth(c *C) {
c . Assert ( len ( accessID ) , Equals , minioAccessID )
}
func ( s * TestSuiteCommon ) TestBucketSQSNotification ( c * C ) {
// Sample bucket notification.
bucketNotificationBuf := ` <NotificationConfiguration><QueueConfiguration><Event>s3:ObjectCreated:Put</Event><Filter><S3Key><FilterRule><Name>prefix</Name><Value>images/</Value></FilterRule></S3Key></Filter><Id>1</Id><Queue>arn:minio:sqs:us-east-1:444455556666:amqp</Queue></QueueConfiguration></NotificationConfiguration> `
// generate a random bucket Name.
bucketName := getRandomBucketName ( )
// HTTP request to create the bucket.
request , err := newTestSignedRequest ( "PUT" , getMakeBucketURL ( s . endPoint , bucketName ) ,
0 , nil , s . accessKey , s . secretKey )
c . Assert ( err , IsNil )
client := http . Client { }
// execute the request.
response , err := client . Do ( request )
c . Assert ( err , IsNil )
// assert the http response status code.
c . Assert ( response . StatusCode , Equals , http . StatusOK )
request , err = newTestSignedRequest ( "PUT" , getPutNotificationURL ( s . endPoint , bucketName ) ,
int64 ( len ( bucketNotificationBuf ) ) , bytes . NewReader ( [ ] byte ( bucketNotificationBuf ) ) , s . accessKey , s . secretKey )
c . Assert ( err , IsNil )
client = http . Client { }
// execute the HTTP request.
response , err = client . Do ( request )
c . Assert ( err , IsNil )
verifyError ( c , response , "InvalidArgument" , "A specified destination ARN does not exist or is not well-formed. Verify the destination ARN." , http . StatusBadRequest )
}
// TestBucketNotification - Inserts the bucket notification and verifies it by fetching the notification back.
func ( s * TestSuiteCommon ) TestBucketNotification ( c * C ) {
func ( s * TestSuiteCommon ) TestBucketSNS Notification ( c * C ) {
// Sample bucket notification.
bucketNotificationBuf := ` <NotificationConfiguration><TopicConfiguration><Event>s3:ObjectCreated:Put</Event><Filter><S3Key><FilterRule><Name>prefix</Name><Value>images/</Value></FilterRule></S3Key></Filter><Id>1</Id><Topic>arn:minio:sns:us-east-1:444455556666:listen</Topic></TopicConfiguration></NotificationConfiguration> `
@ -120,7 +150,7 @@ func (s *TestSuiteCommon) TestBucketNotification(c *C) {
// Verify if downloaded policy matches with previousy uploaded.
c . Assert ( bytes . Equal ( [ ] byte ( bucketNotificationBuf ) , bucketNotificationReadBuf ) , Equals , true )
invalidBucketNotificationBuf := ` <NotificationConfiguration><TopicConfiguration><Event>s3:ObjectCreated:Put</Event><Filter><S3Key><FilterRule><Name>prefix </Name><Value>images/</Value></FilterRule></S3Key></Filter><Id>1</Id><Topic>arn:minio:sns:us-east-1:444455556666:minio</Topic></TopicConfiguration></NotificationConfiguration> `
invalidBucketNotificationBuf := ` <NotificationConfiguration><TopicConfiguration><Event>s3:ObjectCreated:Put</Event><Filter><S3Key><FilterRule><Name>invalid </Name><Value>images/</Value></FilterRule></S3Key></Filter><Id>1</Id><Topic>arn:minio:sns:us-east-1:444455556666:minio</Topic></TopicConfiguration></NotificationConfiguration> `
request , err = newTestSignedRequest ( "PUT" , getPutNotificationURL ( s . endPoint , bucketName ) ,
int64 ( len ( invalidBucketNotificationBuf ) ) , bytes . NewReader ( [ ] byte ( invalidBucketNotificationBuf ) ) , s . accessKey , s . secretKey )
@ -133,6 +163,32 @@ func (s *TestSuiteCommon) TestBucketNotification(c *C) {
verifyError ( c , response , "InvalidArgument" , "A specified destination ARN does not exist or is not well-formed. Verify the destination ARN." , http . StatusBadRequest )
invalidBucketNotificationBuf = ` <NotificationConfiguration><TopicConfiguration><Event>s3:ObjectCreated:Put</Event><Filter><S3Key><FilterRule><Name>invalid</Name><Value>images/</Value></FilterRule></S3Key></Filter><Id>1</Id><Topic>arn:minio:sns:us-east-1:1:listen</Topic></TopicConfiguration></NotificationConfiguration> `
request , err = newTestSignedRequest ( "PUT" , getPutNotificationURL ( s . endPoint , bucketName ) ,
int64 ( len ( invalidBucketNotificationBuf ) ) , bytes . NewReader ( [ ] byte ( invalidBucketNotificationBuf ) ) , s . accessKey , s . secretKey )
c . Assert ( err , IsNil )
client = http . Client { }
// execute the HTTP request.
response , err = client . Do ( request )
c . Assert ( err , IsNil )
verifyError ( c , response , "InvalidArgument" , "filter rule name must be either prefix or suffix" , http . StatusBadRequest )
invalidBucketNotificationBuf = ` <NotificationConfiguration><TopicConfiguration><Event>s3:ObjectCreated:Put</Event><Filter><S3Key><FilterRule><Name>prefix</Name><Value>|||</Value></FilterRule></S3Key></Filter><Id>1</Id><Topic>arn:minio:sns:us-east-1:1:listen</Topic></TopicConfiguration></NotificationConfiguration> `
request , err = newTestSignedRequest ( "PUT" , getPutNotificationURL ( s . endPoint , bucketName ) ,
int64 ( len ( invalidBucketNotificationBuf ) ) , bytes . NewReader ( [ ] byte ( invalidBucketNotificationBuf ) ) , s . accessKey , s . secretKey )
c . Assert ( err , IsNil )
client = http . Client { }
// execute the HTTP request.
response , err = client . Do ( request )
c . Assert ( err , IsNil )
verifyError ( c , response , "InvalidArgument" , "Size of filter rule value cannot exceed 1024 bytes in UTF-8 representation" , http . StatusBadRequest )
invalidBucketNotificationBuf = ` <NotificationConfiguration><TopicConfiguration><Event>s3:ObjectCreated:Put</Event><Filter><S3Key><FilterRule><Name>prefix</Name><Value>images/</Value></FilterRule></S3Key></Filter><Id>1</Id><Topic>arn:minio:sns:us-west-1:444455556666:listen</Topic></TopicConfiguration></NotificationConfiguration> `
request , err = newTestSignedRequest ( "PUT" , getPutNotificationURL ( s . endPoint , bucketName ) ,
int64 ( len ( invalidBucketNotificationBuf ) ) , bytes . NewReader ( [ ] byte ( invalidBucketNotificationBuf ) ) , s . accessKey , s . secretKey )