2023-07-19 14:18:55 +00:00
|
|
|
package api
|
|
|
|
|
|
|
|
import (
|
|
|
|
"context"
|
|
|
|
"encoding/json"
|
|
|
|
"net/http"
|
|
|
|
"testing"
|
|
|
|
|
|
|
|
"git.frostfs.info/TrueCloudLab/frostfs-s3-gw/api/auth"
|
|
|
|
"git.frostfs.info/TrueCloudLab/frostfs-s3-gw/api/data"
|
|
|
|
"git.frostfs.info/TrueCloudLab/frostfs-s3-gw/api/middleware"
|
2024-02-26 14:01:13 +00:00
|
|
|
"git.frostfs.info/TrueCloudLab/frostfs-s3-gw/creds/accessbox"
|
|
|
|
bearertest "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/bearer/test"
|
2023-07-19 14:18:55 +00:00
|
|
|
"github.com/stretchr/testify/require"
|
|
|
|
)
|
|
|
|
|
2024-02-26 14:01:13 +00:00
|
|
|
type anonCenterMock struct {
|
|
|
|
}
|
|
|
|
|
|
|
|
func (c *anonCenterMock) Authenticate(*http.Request) (*auth.Box, error) {
|
|
|
|
return &auth.Box{
|
|
|
|
AccessBox: &accessbox.Box{
|
|
|
|
Gate: &accessbox.GateData{},
|
|
|
|
},
|
|
|
|
}, nil
|
|
|
|
}
|
|
|
|
|
2023-07-19 14:18:55 +00:00
|
|
|
type centerMock struct {
|
|
|
|
}
|
|
|
|
|
|
|
|
func (c *centerMock) Authenticate(*http.Request) (*auth.Box, error) {
|
2024-02-26 14:01:13 +00:00
|
|
|
token := bearertest.Token()
|
|
|
|
return &auth.Box{
|
|
|
|
AccessBox: &accessbox.Box{
|
|
|
|
Gate: &accessbox.GateData{
|
|
|
|
BearerToken: &token,
|
|
|
|
},
|
|
|
|
},
|
|
|
|
}, nil
|
2023-07-19 14:18:55 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
type handlerMock struct {
|
|
|
|
t *testing.T
|
|
|
|
}
|
|
|
|
|
|
|
|
type handlerResult struct {
|
|
|
|
Method string
|
|
|
|
ReqInfo *middleware.ReqInfo
|
|
|
|
}
|
|
|
|
|
|
|
|
func (h *handlerMock) HeadObjectHandler(http.ResponseWriter, *http.Request) {
|
|
|
|
//TODO implement me
|
|
|
|
panic("implement me")
|
|
|
|
}
|
|
|
|
|
|
|
|
func (h *handlerMock) GetObjectACLHandler(http.ResponseWriter, *http.Request) {
|
|
|
|
//TODO implement me
|
|
|
|
panic("implement me")
|
|
|
|
}
|
|
|
|
|
|
|
|
func (h *handlerMock) PutObjectACLHandler(http.ResponseWriter, *http.Request) {
|
|
|
|
//TODO implement me
|
|
|
|
panic("implement me")
|
|
|
|
}
|
|
|
|
|
|
|
|
func (h *handlerMock) GetObjectTaggingHandler(http.ResponseWriter, *http.Request) {
|
|
|
|
//TODO implement me
|
|
|
|
panic("implement me")
|
|
|
|
}
|
|
|
|
|
|
|
|
func (h *handlerMock) PutObjectTaggingHandler(http.ResponseWriter, *http.Request) {
|
|
|
|
//TODO implement me
|
|
|
|
panic("implement me")
|
|
|
|
}
|
|
|
|
|
|
|
|
func (h *handlerMock) DeleteObjectTaggingHandler(http.ResponseWriter, *http.Request) {
|
|
|
|
//TODO implement me
|
|
|
|
panic("implement me")
|
|
|
|
}
|
|
|
|
|
|
|
|
func (h *handlerMock) SelectObjectContentHandler(http.ResponseWriter, *http.Request) {
|
|
|
|
//TODO implement me
|
|
|
|
panic("implement me")
|
|
|
|
}
|
|
|
|
|
|
|
|
func (h *handlerMock) GetObjectRetentionHandler(http.ResponseWriter, *http.Request) {
|
|
|
|
//TODO implement me
|
|
|
|
panic("implement me")
|
|
|
|
}
|
|
|
|
|
|
|
|
func (h *handlerMock) GetObjectLegalHoldHandler(http.ResponseWriter, *http.Request) {
|
|
|
|
//TODO implement me
|
|
|
|
panic("implement me")
|
|
|
|
}
|
|
|
|
|
|
|
|
func (h *handlerMock) GetObjectHandler(http.ResponseWriter, *http.Request) {
|
|
|
|
//TODO implement me
|
|
|
|
panic("implement me")
|
|
|
|
}
|
|
|
|
|
|
|
|
func (h *handlerMock) GetObjectAttributesHandler(http.ResponseWriter, *http.Request) {
|
|
|
|
//TODO implement me
|
|
|
|
panic("implement me")
|
|
|
|
}
|
|
|
|
|
|
|
|
func (h *handlerMock) CopyObjectHandler(http.ResponseWriter, *http.Request) {
|
|
|
|
//TODO implement me
|
|
|
|
panic("implement me")
|
|
|
|
}
|
|
|
|
|
|
|
|
func (h *handlerMock) PutObjectRetentionHandler(http.ResponseWriter, *http.Request) {
|
|
|
|
//TODO implement me
|
|
|
|
panic("implement me")
|
|
|
|
}
|
|
|
|
|
|
|
|
func (h *handlerMock) PutObjectLegalHoldHandler(http.ResponseWriter, *http.Request) {
|
|
|
|
//TODO implement me
|
|
|
|
panic("implement me")
|
|
|
|
}
|
|
|
|
|
|
|
|
func (h *handlerMock) PutObjectHandler(w http.ResponseWriter, r *http.Request) {
|
|
|
|
res := &handlerResult{
|
|
|
|
Method: "PutObject",
|
|
|
|
ReqInfo: middleware.GetReqInfo(r.Context()),
|
|
|
|
}
|
|
|
|
|
|
|
|
h.writeResponse(w, res)
|
|
|
|
}
|
|
|
|
|
|
|
|
func (h *handlerMock) DeleteObjectHandler(http.ResponseWriter, *http.Request) {
|
|
|
|
//TODO implement me
|
|
|
|
panic("implement me")
|
|
|
|
}
|
|
|
|
|
|
|
|
func (h *handlerMock) GetBucketLocationHandler(http.ResponseWriter, *http.Request) {
|
|
|
|
//TODO implement me
|
|
|
|
panic("implement me")
|
|
|
|
}
|
|
|
|
|
|
|
|
func (h *handlerMock) GetBucketPolicyHandler(http.ResponseWriter, *http.Request) {
|
|
|
|
//TODO implement me
|
|
|
|
panic("implement me")
|
|
|
|
}
|
|
|
|
|
|
|
|
func (h *handlerMock) GetBucketLifecycleHandler(http.ResponseWriter, *http.Request) {
|
|
|
|
//TODO implement me
|
|
|
|
panic("implement me")
|
|
|
|
}
|
|
|
|
|
|
|
|
func (h *handlerMock) GetBucketEncryptionHandler(http.ResponseWriter, *http.Request) {
|
|
|
|
//TODO implement me
|
|
|
|
panic("implement me")
|
|
|
|
}
|
|
|
|
|
|
|
|
func (h *handlerMock) GetBucketACLHandler(http.ResponseWriter, *http.Request) {
|
|
|
|
//TODO implement me
|
|
|
|
panic("implement me")
|
|
|
|
}
|
|
|
|
|
|
|
|
func (h *handlerMock) PutBucketACLHandler(http.ResponseWriter, *http.Request) {
|
|
|
|
//TODO implement me
|
|
|
|
panic("implement me")
|
|
|
|
}
|
|
|
|
|
|
|
|
func (h *handlerMock) GetBucketCorsHandler(http.ResponseWriter, *http.Request) {
|
|
|
|
//TODO implement me
|
|
|
|
panic("implement me")
|
|
|
|
}
|
|
|
|
|
|
|
|
func (h *handlerMock) PutBucketCorsHandler(http.ResponseWriter, *http.Request) {
|
|
|
|
//TODO implement me
|
|
|
|
panic("implement me")
|
|
|
|
}
|
|
|
|
|
|
|
|
func (h *handlerMock) DeleteBucketCorsHandler(http.ResponseWriter, *http.Request) {
|
|
|
|
//TODO implement me
|
|
|
|
panic("implement me")
|
|
|
|
}
|
|
|
|
|
|
|
|
func (h *handlerMock) GetBucketWebsiteHandler(http.ResponseWriter, *http.Request) {
|
|
|
|
//TODO implement me
|
|
|
|
panic("implement me")
|
|
|
|
}
|
|
|
|
|
|
|
|
func (h *handlerMock) GetBucketAccelerateHandler(http.ResponseWriter, *http.Request) {
|
|
|
|
//TODO implement me
|
|
|
|
panic("implement me")
|
|
|
|
}
|
|
|
|
|
|
|
|
func (h *handlerMock) GetBucketRequestPaymentHandler(http.ResponseWriter, *http.Request) {
|
|
|
|
//TODO implement me
|
|
|
|
panic("implement me")
|
|
|
|
}
|
|
|
|
|
|
|
|
func (h *handlerMock) GetBucketLoggingHandler(http.ResponseWriter, *http.Request) {
|
|
|
|
//TODO implement me
|
|
|
|
panic("implement me")
|
|
|
|
}
|
|
|
|
|
|
|
|
func (h *handlerMock) GetBucketReplicationHandler(http.ResponseWriter, *http.Request) {
|
|
|
|
//TODO implement me
|
|
|
|
panic("implement me")
|
|
|
|
}
|
|
|
|
|
|
|
|
func (h *handlerMock) GetBucketTaggingHandler(http.ResponseWriter, *http.Request) {
|
|
|
|
//TODO implement me
|
|
|
|
panic("implement me")
|
|
|
|
}
|
|
|
|
|
|
|
|
func (h *handlerMock) DeleteBucketWebsiteHandler(http.ResponseWriter, *http.Request) {
|
|
|
|
//TODO implement me
|
|
|
|
panic("implement me")
|
|
|
|
}
|
|
|
|
|
|
|
|
func (h *handlerMock) DeleteBucketTaggingHandler(http.ResponseWriter, *http.Request) {
|
|
|
|
//TODO implement me
|
|
|
|
panic("implement me")
|
|
|
|
}
|
|
|
|
|
|
|
|
func (h *handlerMock) GetBucketObjectLockConfigHandler(http.ResponseWriter, *http.Request) {
|
|
|
|
//TODO implement me
|
|
|
|
panic("implement me")
|
|
|
|
}
|
|
|
|
|
|
|
|
func (h *handlerMock) GetBucketVersioningHandler(http.ResponseWriter, *http.Request) {
|
|
|
|
//TODO implement me
|
|
|
|
panic("implement me")
|
|
|
|
}
|
|
|
|
|
|
|
|
func (h *handlerMock) GetBucketNotificationHandler(http.ResponseWriter, *http.Request) {
|
|
|
|
//TODO implement me
|
|
|
|
panic("implement me")
|
|
|
|
}
|
|
|
|
|
|
|
|
func (h *handlerMock) ListenBucketNotificationHandler(http.ResponseWriter, *http.Request) {
|
|
|
|
//TODO implement me
|
|
|
|
panic("implement me")
|
|
|
|
}
|
|
|
|
|
|
|
|
func (h *handlerMock) ListObjectsV2MHandler(http.ResponseWriter, *http.Request) {
|
|
|
|
//TODO implement me
|
|
|
|
panic("implement me")
|
|
|
|
}
|
|
|
|
|
2023-07-20 09:08:45 +00:00
|
|
|
func (h *handlerMock) ListObjectsV2Handler(w http.ResponseWriter, r *http.Request) {
|
|
|
|
res := &handlerResult{
|
|
|
|
Method: "ListObjectsV2",
|
|
|
|
ReqInfo: middleware.GetReqInfo(r.Context()),
|
|
|
|
}
|
|
|
|
|
|
|
|
h.writeResponse(w, res)
|
2023-07-19 14:18:55 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
func (h *handlerMock) ListBucketObjectVersionsHandler(http.ResponseWriter, *http.Request) {
|
|
|
|
//TODO implement me
|
|
|
|
panic("implement me")
|
|
|
|
}
|
|
|
|
|
2023-07-20 09:08:45 +00:00
|
|
|
func (h *handlerMock) ListObjectsV1Handler(w http.ResponseWriter, r *http.Request) {
|
|
|
|
res := &handlerResult{
|
|
|
|
Method: "ListObjectsV1",
|
|
|
|
ReqInfo: middleware.GetReqInfo(r.Context()),
|
|
|
|
}
|
|
|
|
|
|
|
|
h.writeResponse(w, res)
|
2023-07-19 14:18:55 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
func (h *handlerMock) PutBucketLifecycleHandler(http.ResponseWriter, *http.Request) {
|
|
|
|
//TODO implement me
|
|
|
|
panic("implement me")
|
|
|
|
}
|
|
|
|
|
|
|
|
func (h *handlerMock) PutBucketEncryptionHandler(http.ResponseWriter, *http.Request) {
|
|
|
|
//TODO implement me
|
|
|
|
panic("implement me")
|
|
|
|
}
|
|
|
|
|
|
|
|
func (h *handlerMock) PutBucketPolicyHandler(http.ResponseWriter, *http.Request) {
|
|
|
|
//TODO implement me
|
|
|
|
panic("implement me")
|
|
|
|
}
|
|
|
|
|
|
|
|
func (h *handlerMock) PutBucketObjectLockConfigHandler(http.ResponseWriter, *http.Request) {
|
|
|
|
//TODO implement me
|
|
|
|
panic("implement me")
|
|
|
|
}
|
|
|
|
|
|
|
|
func (h *handlerMock) PutBucketTaggingHandler(http.ResponseWriter, *http.Request) {
|
|
|
|
//TODO implement me
|
|
|
|
panic("implement me")
|
|
|
|
}
|
|
|
|
|
|
|
|
func (h *handlerMock) PutBucketVersioningHandler(http.ResponseWriter, *http.Request) {
|
|
|
|
//TODO implement me
|
|
|
|
panic("implement me")
|
|
|
|
}
|
|
|
|
|
|
|
|
func (h *handlerMock) PutBucketNotificationHandler(http.ResponseWriter, *http.Request) {
|
|
|
|
//TODO implement me
|
|
|
|
panic("implement me")
|
|
|
|
}
|
|
|
|
|
|
|
|
func (h *handlerMock) CreateBucketHandler(http.ResponseWriter, *http.Request) {
|
|
|
|
//TODO implement me
|
|
|
|
panic("implement me")
|
|
|
|
}
|
|
|
|
|
|
|
|
func (h *handlerMock) HeadBucketHandler(http.ResponseWriter, *http.Request) {
|
|
|
|
//TODO implement me
|
|
|
|
panic("implement me")
|
|
|
|
}
|
|
|
|
|
|
|
|
func (h *handlerMock) PostObject(http.ResponseWriter, *http.Request) {
|
|
|
|
//TODO implement me
|
|
|
|
panic("implement me")
|
|
|
|
}
|
|
|
|
|
|
|
|
func (h *handlerMock) DeleteMultipleObjectsHandler(http.ResponseWriter, *http.Request) {
|
|
|
|
//TODO implement me
|
|
|
|
panic("implement me")
|
|
|
|
}
|
|
|
|
|
|
|
|
func (h *handlerMock) DeleteBucketPolicyHandler(http.ResponseWriter, *http.Request) {
|
|
|
|
//TODO implement me
|
|
|
|
panic("implement me")
|
|
|
|
}
|
|
|
|
|
|
|
|
func (h *handlerMock) DeleteBucketLifecycleHandler(http.ResponseWriter, *http.Request) {
|
|
|
|
//TODO implement me
|
|
|
|
panic("implement me")
|
|
|
|
}
|
|
|
|
|
|
|
|
func (h *handlerMock) DeleteBucketEncryptionHandler(http.ResponseWriter, *http.Request) {
|
|
|
|
//TODO implement me
|
|
|
|
panic("implement me")
|
|
|
|
}
|
|
|
|
|
|
|
|
func (h *handlerMock) DeleteBucketHandler(http.ResponseWriter, *http.Request) {
|
|
|
|
//TODO implement me
|
|
|
|
panic("implement me")
|
|
|
|
}
|
|
|
|
|
|
|
|
func (h *handlerMock) ListBucketsHandler(http.ResponseWriter, *http.Request) {
|
|
|
|
//TODO implement me
|
|
|
|
panic("implement me")
|
|
|
|
}
|
|
|
|
|
|
|
|
func (h *handlerMock) Preflight(http.ResponseWriter, *http.Request) {
|
|
|
|
//TODO implement me
|
|
|
|
panic("implement me")
|
|
|
|
}
|
|
|
|
|
|
|
|
func (h *handlerMock) AppendCORSHeaders(http.ResponseWriter, *http.Request) {
|
|
|
|
}
|
|
|
|
|
|
|
|
func (h *handlerMock) CreateMultipartUploadHandler(http.ResponseWriter, *http.Request) {
|
|
|
|
//TODO implement me
|
|
|
|
panic("implement me")
|
|
|
|
}
|
|
|
|
|
|
|
|
func (h *handlerMock) UploadPartHandler(w http.ResponseWriter, r *http.Request) {
|
|
|
|
res := &handlerResult{
|
|
|
|
Method: "UploadPart",
|
|
|
|
ReqInfo: middleware.GetReqInfo(r.Context()),
|
|
|
|
}
|
|
|
|
|
|
|
|
h.writeResponse(w, res)
|
|
|
|
}
|
|
|
|
|
|
|
|
func (h *handlerMock) UploadPartCopy(http.ResponseWriter, *http.Request) {
|
|
|
|
//TODO implement me
|
|
|
|
panic("implement me")
|
|
|
|
}
|
|
|
|
|
|
|
|
func (h *handlerMock) CompleteMultipartUploadHandler(http.ResponseWriter, *http.Request) {
|
|
|
|
//TODO implement me
|
|
|
|
panic("implement me")
|
|
|
|
}
|
|
|
|
|
|
|
|
func (h *handlerMock) AbortMultipartUploadHandler(http.ResponseWriter, *http.Request) {
|
|
|
|
//TODO implement me
|
|
|
|
panic("implement me")
|
|
|
|
}
|
|
|
|
|
|
|
|
func (h *handlerMock) ListPartsHandler(http.ResponseWriter, *http.Request) {
|
|
|
|
//TODO implement me
|
|
|
|
panic("implement me")
|
|
|
|
}
|
|
|
|
|
2023-07-20 09:08:45 +00:00
|
|
|
func (h *handlerMock) ListMultipartUploadsHandler(w http.ResponseWriter, r *http.Request) {
|
|
|
|
res := &handlerResult{
|
|
|
|
Method: "ListMultipartUploads",
|
|
|
|
ReqInfo: middleware.GetReqInfo(r.Context()),
|
|
|
|
}
|
|
|
|
|
|
|
|
h.writeResponse(w, res)
|
2023-07-19 14:18:55 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
func (h *handlerMock) ResolveBucket(context.Context, string) (*data.BucketInfo, error) {
|
|
|
|
return &data.BucketInfo{}, nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func (h *handlerMock) writeResponse(w http.ResponseWriter, resp *handlerResult) {
|
|
|
|
respData, err := json.Marshal(resp)
|
|
|
|
require.NoError(h.t, err)
|
|
|
|
|
|
|
|
_, err = w.Write(respData)
|
|
|
|
require.NoError(h.t, err)
|
|
|
|
}
|