package s3api import ( "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/service/s3" "github.com/seaweedfs/seaweedfs/weed/s3api/s3err" "github.com/stretchr/testify/assert" "testing" "time" ) func TestInitiateMultipartUploadResult(t *testing.T) { expected := ` example-bucketexample-objectVXBsb2FkIElEIGZvciA2aWWpbmcncyBteS1tb3ZpZS5tMnRzIHVwbG9hZA` response := &InitiateMultipartUploadResult{ CreateMultipartUploadOutput: s3.CreateMultipartUploadOutput{ Bucket: aws.String("example-bucket"), Key: aws.String("example-object"), UploadId: aws.String("VXBsb2FkIElEIGZvciA2aWWpbmcncyBteS1tb3ZpZS5tMnRzIHVwbG9hZA"), }, } encoded := string(s3err.EncodeXMLResponse(response)) if encoded != expected { t.Errorf("unexpected output: %s\nexpecting:%s", encoded, expected) } } func TestListPartsResult(t *testing.T) { expected := ` "12345678"1970-01-01T00:00:00Z1123` response := &ListPartsResult{ Part: []*s3.Part{ { PartNumber: aws.Int64(int64(1)), LastModified: aws.Time(time.Unix(0, 0).UTC()), Size: aws.Int64(int64(123)), ETag: aws.String("\"12345678\""), }, }, } encoded := string(s3err.EncodeXMLResponse(response)) if encoded != expected { t.Errorf("unexpected output: %s\nexpecting:%s", encoded, expected) } } func Test_parsePartNumber(t *testing.T) { tests := []struct { name string fileName string partNum int }{ { "first", "0001_uuid.part", 1, }, { "second", "0002.part", 2, }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { partNumber, _ := parsePartNumber(tt.fileName) assert.Equalf(t, tt.partNum, partNumber, "parsePartNumber(%v)", tt.fileName) }) } }