Test Core CopyObjectPart implementation for SSEC encrypted to SSE-S3 encrypted copy
()
| 10713 | |
| 10714 | // Test Core CopyObjectPart implementation for SSEC encrypted to SSE-S3 encrypted copy |
| 10715 | func testSSECEncryptedToSSES3CopyObjectPart() { |
| 10716 | // initialize logging params |
| 10717 | startTime := time.Now() |
| 10718 | testName := getFuncName() |
| 10719 | function := "CopyObjectPart(destination, source)" |
| 10720 | args := map[string]interface{}{} |
| 10721 | |
| 10722 | client, err := NewClient(ClientConfig{}) |
| 10723 | if err != nil { |
| 10724 | logError(testName, function, args, startTime, "", "MinIO v4 client object creation failed", err) |
| 10725 | return |
| 10726 | } |
| 10727 | |
| 10728 | // Instantiate new core client object. |
| 10729 | c := minio.Core{Client: client} |
| 10730 | |
| 10731 | // Generate a new random bucket name. |
| 10732 | bucketName := randString(60, rand.NewSource(time.Now().UnixNano()), "minio-go-test") |
| 10733 | |
| 10734 | // Make a new bucket. |
| 10735 | err = c.MakeBucket(context.Background(), bucketName, minio.MakeBucketOptions{Region: "us-east-1"}) |
| 10736 | if err != nil { |
| 10737 | logError(testName, function, args, startTime, "", "MakeBucket failed", err) |
| 10738 | return |
| 10739 | } |
| 10740 | defer cleanupBucket(bucketName, client) |
| 10741 | // Make a buffer with 5MB of data |
| 10742 | buf := bytes.Repeat([]byte("abcde"), 1024*1024) |
| 10743 | |
| 10744 | // Save the data |
| 10745 | objectName := randString(60, rand.NewSource(time.Now().UnixNano()), "") |
| 10746 | password := "correct horse battery staple" |
| 10747 | srcencryption := encrypt.DefaultPBKDF([]byte(password), []byte(bucketName+objectName)) |
| 10748 | putmetadata := map[string]string{ |
| 10749 | "Content-Type": "binary/octet-stream", |
| 10750 | } |
| 10751 | opts := minio.PutObjectOptions{ |
| 10752 | UserMetadata: putmetadata, |
| 10753 | ServerSideEncryption: srcencryption, |
| 10754 | } |
| 10755 | |
| 10756 | uploadInfo, err := c.PutObject(context.Background(), bucketName, objectName, bytes.NewReader(buf), int64(len(buf)), "", "", opts) |
| 10757 | if err != nil { |
| 10758 | logError(testName, function, args, startTime, "", "PutObject call failed", err) |
| 10759 | return |
| 10760 | } |
| 10761 | |
| 10762 | st, err := c.StatObject(context.Background(), bucketName, objectName, minio.StatObjectOptions{ServerSideEncryption: srcencryption}) |
| 10763 | if err != nil { |
| 10764 | logError(testName, function, args, startTime, "", "StatObject call failed", err) |
| 10765 | return |
| 10766 | } |
| 10767 | |
| 10768 | if st.Size != int64(len(buf)) { |
| 10769 | logError(testName, function, args, startTime, "", fmt.Sprintf("Error: number of bytes does not match, want %v, got %v\n", len(buf), st.Size), err) |
| 10770 | return |
| 10771 | } |
| 10772 |
no test coverage detected