@@ -461,12 +461,24 @@ func ListObjects(bucketName, prefix, withVersions string) (*http.Response, error
461461 return response , err
462462}
463463
464- func SharesAnObjectOnAUrl (bucketName , prefix , versionID , expires string ) (* http.Response , error ) {
465- // Helper function to share an object on a url
464+ func SharesAnObjectOnAUrl (bucketName , prefix , versionID , expires , accessKey , secretKey string ) (* http.Response , error ) {
465+ // Helper function to share an object on an url
466+
467+ requestDataAdd := map [string ]interface {}{
468+ "prefix" : prefix ,
469+ "version_id" : versionID ,
470+ "expires" : expires ,
471+ "access_key" : accessKey ,
472+ "secret_key" : secretKey ,
473+ }
474+
475+ requestDataJSON , _ := json .Marshal (requestDataAdd )
476+ requestDataBody := bytes .NewReader (requestDataJSON )
477+
466478 request , err := http .NewRequest (
467- "GET " ,
468- "http://localhost:9090/api/v1/buckets/" + bucketName + "/objects/share?prefix=" + prefix + "&version_id=" + versionID + "&expires=" + expires ,
469- nil ,
479+ "POST " ,
480+ "http://localhost:9090/api/v1/buckets/" + bucketName + "/objects/share" ,
481+ requestDataBody ,
470482 )
471483 if err != nil {
472484 log .Println (err )
@@ -743,6 +755,39 @@ func PutObjectsLegalholdStatus(bucketName, prefix, status, versionID string) (*h
743755 return response , err
744756}
745757
758+ func PostServiceAccountCredentials (accessKey , secretKey , policy string ) (* http.Response , error ) {
759+ /*
760+ Helper function to create a service account
761+ POST: {{baseUrl}}/service-account-credentials
762+ {
763+ "accessKey":"testsa",
764+ "secretKey":"secretsa",
765+ "policy":""
766+ }
767+ */
768+ requestDataAdd := map [string ]interface {}{
769+ "accessKey" : accessKey ,
770+ "secretKey" : secretKey ,
771+ "policy" : policy ,
772+ }
773+ requestDataJSON , _ := json .Marshal (requestDataAdd )
774+ requestDataBody := bytes .NewReader (requestDataJSON )
775+
776+ request , err := http .NewRequest ("POST" ,
777+ "http://localhost:9090/api/v1/service-account-credentials" ,
778+ requestDataBody )
779+ if err != nil {
780+ log .Println (err )
781+ }
782+ request .Header .Add ("Cookie" , fmt .Sprintf ("token=%s" , token ))
783+ request .Header .Add ("Content-Type" , "application/json" )
784+ client := & http.Client {
785+ Timeout : 2 * time .Second ,
786+ }
787+ response , err := client .Do (request )
788+ return response , err
789+ }
790+
746791func TestPutObjectsLegalholdStatus (t * testing.T ) {
747792 // Variables
748793 assert := assert .New (t )
@@ -1514,6 +1559,8 @@ func TestShareObjectOnURL(t *testing.T) {
15141559 tags := make (map [string ]string )
15151560 tags ["tag" ] = "testputobjecttagbucketonetagone"
15161561 versionID := "null"
1562+ accessKey := "testaccesskey"
1563+ secretKey := "secretAccessKey"
15171564
15181565 // 1. Create the bucket
15191566 if ! setupBucket (bucketName , false , false , nil , nil , assert , 200 ) {
@@ -1534,6 +1581,21 @@ func TestShareObjectOnURL(t *testing.T) {
15341581 inspectHTTPResponse (uploadResponse ),
15351582 )
15361583 }
1584+ // 2. Create Access Key
1585+ accKeyRsp , createError := PostServiceAccountCredentials (accessKey , secretKey , "" )
1586+
1587+ if createError != nil {
1588+ log .Println (createError )
1589+ return
1590+ }
1591+
1592+ if accKeyRsp != nil {
1593+ assert .Equal (
1594+ 201 ,
1595+ accKeyRsp .StatusCode ,
1596+ inspectHTTPResponse (accKeyRsp ),
1597+ )
1598+ }
15371599
15381600 type args struct {
15391601 prefix string
@@ -1561,7 +1623,7 @@ func TestShareObjectOnURL(t *testing.T) {
15611623 for _ , tt := range tests {
15621624 t .Run (tt .name , func (t * testing.T ) {
15631625 // 3. Share the object on a URL
1564- shareResponse , shareError := SharesAnObjectOnAUrl (bucketName , tt .args .prefix , versionID , "604800s" )
1626+ shareResponse , shareError := SharesAnObjectOnAUrl (bucketName , tt .args .prefix , versionID , "604800s" , accessKey , secretKey )
15651627 assert .Nil (shareError )
15661628 if shareError != nil {
15671629 log .Println (shareError )
0 commit comments