Changed Share Object logic to use Access Keys (#2827)
Signed-off-by: Benjamin Perez <benjamin@bexsoft.net>
This commit is contained in:
@@ -461,12 +461,24 @@ func ListObjects(bucketName, prefix, withVersions string) (*http.Response, error
|
||||
return response, err
|
||||
}
|
||||
|
||||
func SharesAnObjectOnAUrl(bucketName, prefix, versionID, expires string) (*http.Response, error) {
|
||||
// Helper function to share an object on a url
|
||||
func SharesAnObjectOnAUrl(bucketName, prefix, versionID, expires, accessKey, secretKey string) (*http.Response, error) {
|
||||
// Helper function to share an object on an url
|
||||
|
||||
requestDataAdd := map[string]interface{}{
|
||||
"prefix": prefix,
|
||||
"version_id": versionID,
|
||||
"expires": expires,
|
||||
"access_key": accessKey,
|
||||
"secret_key": secretKey,
|
||||
}
|
||||
|
||||
requestDataJSON, _ := json.Marshal(requestDataAdd)
|
||||
requestDataBody := bytes.NewReader(requestDataJSON)
|
||||
|
||||
request, err := http.NewRequest(
|
||||
"GET",
|
||||
"http://localhost:9090/api/v1/buckets/"+bucketName+"/objects/share?prefix="+prefix+"&version_id="+versionID+"&expires="+expires,
|
||||
nil,
|
||||
"POST",
|
||||
"http://localhost:9090/api/v1/buckets/"+bucketName+"/objects/share",
|
||||
requestDataBody,
|
||||
)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
@@ -743,6 +755,39 @@ func PutObjectsLegalholdStatus(bucketName, prefix, status, versionID string) (*h
|
||||
return response, err
|
||||
}
|
||||
|
||||
func PostServiceAccountCredentials(accessKey, secretKey, policy string) (*http.Response, error) {
|
||||
/*
|
||||
Helper function to create a service account
|
||||
POST: {{baseUrl}}/service-account-credentials
|
||||
{
|
||||
"accessKey":"testsa",
|
||||
"secretKey":"secretsa",
|
||||
"policy":""
|
||||
}
|
||||
*/
|
||||
requestDataAdd := map[string]interface{}{
|
||||
"accessKey": accessKey,
|
||||
"secretKey": secretKey,
|
||||
"policy": policy,
|
||||
}
|
||||
requestDataJSON, _ := json.Marshal(requestDataAdd)
|
||||
requestDataBody := bytes.NewReader(requestDataJSON)
|
||||
|
||||
request, err := http.NewRequest("POST",
|
||||
"http://localhost:9090/api/v1/service-account-credentials",
|
||||
requestDataBody)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
}
|
||||
request.Header.Add("Cookie", fmt.Sprintf("token=%s", token))
|
||||
request.Header.Add("Content-Type", "application/json")
|
||||
client := &http.Client{
|
||||
Timeout: 2 * time.Second,
|
||||
}
|
||||
response, err := client.Do(request)
|
||||
return response, err
|
||||
}
|
||||
|
||||
func TestPutObjectsLegalholdStatus(t *testing.T) {
|
||||
// Variables
|
||||
assert := assert.New(t)
|
||||
@@ -1514,6 +1559,8 @@ func TestShareObjectOnURL(t *testing.T) {
|
||||
tags := make(map[string]string)
|
||||
tags["tag"] = "testputobjecttagbucketonetagone"
|
||||
versionID := "null"
|
||||
accessKey := "testaccesskey"
|
||||
secretKey := "secretAccessKey"
|
||||
|
||||
// 1. Create the bucket
|
||||
if !setupBucket(bucketName, false, false, nil, nil, assert, 200) {
|
||||
@@ -1534,6 +1581,21 @@ func TestShareObjectOnURL(t *testing.T) {
|
||||
inspectHTTPResponse(uploadResponse),
|
||||
)
|
||||
}
|
||||
// 2. Create Access Key
|
||||
accKeyRsp, createError := PostServiceAccountCredentials(accessKey, secretKey, "")
|
||||
|
||||
if createError != nil {
|
||||
log.Println(createError)
|
||||
return
|
||||
}
|
||||
|
||||
if accKeyRsp != nil {
|
||||
assert.Equal(
|
||||
201,
|
||||
accKeyRsp.StatusCode,
|
||||
inspectHTTPResponse(accKeyRsp),
|
||||
)
|
||||
}
|
||||
|
||||
type args struct {
|
||||
prefix string
|
||||
@@ -1561,7 +1623,7 @@ func TestShareObjectOnURL(t *testing.T) {
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
// 3. Share the object on a URL
|
||||
shareResponse, shareError := SharesAnObjectOnAUrl(bucketName, tt.args.prefix, versionID, "604800s")
|
||||
shareResponse, shareError := SharesAnObjectOnAUrl(bucketName, tt.args.prefix, versionID, "604800s", accessKey, secretKey)
|
||||
assert.Nil(shareError)
|
||||
if shareError != nil {
|
||||
log.Println(shareError)
|
||||
|
||||
Reference in New Issue
Block a user