@@ -628,6 +628,41 @@ func RestoreObjectToASelectedVersion(bucketName string, prefix string, versionID
628628 return response , err
629629}
630630
631+ func BucketSetPolicy (bucketName string , access string , definition string ) (* http.Response , error ) {
632+ /*
633+ Helper function to set policy on a bucket
634+ Name: Bucket Set Policy
635+ HTTP Verb: PUT
636+ URL: {{baseUrl}}/buckets/:name/set-policy
637+ Body:
638+ {
639+ "access": "PRIVATE",
640+ "definition": "dolo"
641+ }
642+ */
643+ requestDataAdd := map [string ]interface {}{
644+ "access" : access ,
645+ "definition" : definition ,
646+ }
647+ requestDataJSON , _ := json .Marshal (requestDataAdd )
648+ requestDataBody := bytes .NewReader (requestDataJSON )
649+ request , err := http .NewRequest (
650+ "PUT" ,
651+ "http://localhost:9090/api/v1/buckets/" + bucketName + "/set-policy" ,
652+ requestDataBody ,
653+ )
654+ if err != nil {
655+ log .Println (err )
656+ }
657+ request .Header .Add ("Cookie" , fmt .Sprintf ("token=%s" , token ))
658+ request .Header .Add ("Content-Type" , "application/json" )
659+ client := & http.Client {
660+ Timeout : 2 * time .Second ,
661+ }
662+ response , err := client .Do (request )
663+ return response , err
664+ }
665+
631666func TestAddBucket (t * testing.T ) {
632667 assert := assert .New (t )
633668 type args struct {
@@ -2047,3 +2082,72 @@ func TestRestoreObjectToASelectedVersion(t *testing.T) {
20472082 })
20482083 }
20492084}
2085+
2086+ func TestBucketSetPolicy (t * testing.T ) {
2087+
2088+ // Variables
2089+ assert := assert .New (t )
2090+ validBucketName := "testbucketsetpolicy"
2091+
2092+ // 1. Create bucket
2093+ response , err := AddBucket (validBucketName , true , true , nil , nil )
2094+ assert .Nil (err )
2095+ if err != nil {
2096+ log .Println (err )
2097+ assert .Fail ("Error creating the bucket" )
2098+ return
2099+ }
2100+ if response != nil {
2101+ assert .Equal (201 , response .StatusCode , inspectHTTPResponse (response ))
2102+ }
2103+
2104+ // 2. Set a bucket's policy using table driven tests
2105+ type args struct {
2106+ bucketName string
2107+ }
2108+ tests := []struct {
2109+ name string
2110+ expectedStatus int
2111+ args args
2112+ }{
2113+ {
2114+ name : "Valid bucket when setting a policy" ,
2115+ expectedStatus : 200 ,
2116+ args : args {
2117+ bucketName : validBucketName ,
2118+ },
2119+ },
2120+ {
2121+ name : "Invalid bucket when setting a bucket" ,
2122+ expectedStatus : 500 ,
2123+ args : args {
2124+ bucketName : "wlkjsdkalsjdklajsdlkajsdlkajsdlkajsdklajsdkljaslkdjaslkdj" ,
2125+ },
2126+ },
2127+ }
2128+ for _ , tt := range tests {
2129+ t .Run (tt .name , func (t * testing.T ) {
2130+
2131+ // Set Policy
2132+ restResp , restErr := BucketSetPolicy (
2133+ tt .args .bucketName ,
2134+ "PUBLIC" ,
2135+ "" ,
2136+ )
2137+ assert .Nil (restErr )
2138+ if restErr != nil {
2139+ log .Println (restErr )
2140+ return
2141+ }
2142+ finalResponse := inspectHTTPResponse (restResp )
2143+ if restResp != nil {
2144+ assert .Equal (
2145+ tt .expectedStatus ,
2146+ restResp .StatusCode ,
2147+ finalResponse ,
2148+ )
2149+ }
2150+
2151+ })
2152+ }
2153+ }
0 commit comments