@@ -34,6 +34,8 @@ public class S3TransferManagerCopyIntegrationTest extends S3IntegrationTestBase
34
34
private static final String BUCKET = temporaryBucketName (S3TransferManagerCopyIntegrationTest .class );
35
35
private static final String ORIGINAL_OBJ = "test_file.dat" ;
36
36
private static final String COPIED_OBJ = "test_file_copy.dat" ;
37
+ private static final String ORIGINAL_OBJ_SPECIAL_CHARACTER = "original-special-chars-@$%" ;
38
+ private static final String COPIED_OBJ_SPECIAL_CHARACTER = "special-special-chars-@$%" ;
37
39
private static final long OBJ_SIZE = ThreadLocalRandom .current ().nextLong (8 * MB , 16 * MB + 1 );
38
40
39
41
private static S3TransferManager tm ;
@@ -60,34 +62,42 @@ public static void teardown() throws Exception {
60
62
@ Test
61
63
void copy_copiedObject_hasSameContent () {
62
64
byte [] originalContent = randomBytes (OBJ_SIZE );
63
- createOriginalObject (originalContent );
64
- copyObject ();
65
- validateCopiedObject (originalContent );
65
+ createOriginalObject (originalContent , ORIGINAL_OBJ );
66
+ copyObject (ORIGINAL_OBJ , COPIED_OBJ );
67
+ validateCopiedObject (originalContent , ORIGINAL_OBJ );
66
68
}
67
69
68
- private void createOriginalObject (byte [] originalContent ) {
70
+ @ Test
71
+ void copy_specialCharacters_hasSameContent () {
72
+ byte [] originalContent = randomBytes (OBJ_SIZE );
73
+ createOriginalObject (originalContent , ORIGINAL_OBJ_SPECIAL_CHARACTER );
74
+ copyObject (ORIGINAL_OBJ_SPECIAL_CHARACTER , COPIED_OBJ_SPECIAL_CHARACTER );
75
+ validateCopiedObject (originalContent , COPIED_OBJ_SPECIAL_CHARACTER );
76
+ }
77
+
78
+ private void createOriginalObject (byte [] originalContent , String originalKey ) {
69
79
s3 .putObject (r -> r .bucket (BUCKET )
70
- .key (ORIGINAL_OBJ ),
80
+ .key (originalKey ),
71
81
RequestBody .fromBytes (originalContent ));
72
82
}
73
83
74
- private void copyObject () {
84
+ private void copyObject (String original , String destination ) {
75
85
Copy copy = tm .copy (c -> c
76
86
.copyObjectRequest (r -> r
77
87
.sourceBucket (BUCKET )
78
- .sourceKey (ORIGINAL_OBJ )
88
+ .sourceKey (original )
79
89
.destinationBucket (BUCKET )
80
- .destinationKey (COPIED_OBJ ))
90
+ .destinationKey (destination ))
81
91
.overrideConfiguration (o -> o .addListener (LoggingTransferListener .create ())));
82
92
83
93
CompletedCopy completedCopy = copy .completionFuture ().join ();
84
94
assertThat (completedCopy .response ().responseMetadata ().requestId ()).isNotNull ();
85
95
assertThat (completedCopy .response ().sdkHttpResponse ()).isNotNull ();
86
96
}
87
97
88
- private void validateCopiedObject (byte [] originalContent ) {
98
+ private void validateCopiedObject (byte [] originalContent , String originalKey ) {
89
99
ResponseBytes <GetObjectResponse > copiedObject = s3 .getObject (r -> r .bucket (BUCKET )
90
- .key (COPIED_OBJ ),
100
+ .key (originalKey ),
91
101
ResponseTransformer .toBytes ());
92
102
assertThat (computeCheckSum (copiedObject .asByteArrayUnsafe ())).isEqualTo (computeCheckSum (originalContent ));
93
103
}
0 commit comments