@Override protected void doStartElement( String uri, String name, String qName, Attributes attrs) { if (in("ListBucketResult")) { if (name.equals("Contents")) { currentObject = new S3ObjectSummary(); currentObject.setBucketName(objectListing.getBucketName()); } } else if (in("ListBucketResult", "Contents")) { if (name.equals("Owner")) { currentOwner = new Owner(); } } }
@Override protected void doStartElement( String uri, String name, String qName, Attributes attrs) { if (in("ListBucketResult")) { if (name.equals("Contents")) { currentObject = new S3ObjectSummary(); currentObject.setBucketName(result.getBucketName()); } } else if (in("ListBucketResult", "Contents")) { if (name.equals("Owner")) { currentOwner = new Owner(); } } }
private static List<S3ObjectSummary> getNextObjectSummary() { List<S3ObjectSummary> list = new ArrayList<>(); S3ObjectSummary summary = new S3ObjectSummary(); summary.setKey( "test_backup/" + region + "/fakecluster/123456/201108110030/SNAP/ks2/cf1/f1.db"); list.add(summary); summary = new S3ObjectSummary(); summary.setKey( "test_backup/" + region + "/fakecluster/123456/201108110430/SST/ks2/cf1/f2.db"); list.add(summary); summary = new S3ObjectSummary(); summary.setKey( "test_backup/" + region + "/fakecluster/123456/201108110600/SST/ks2/cf1/f3.db"); list.add(summary); return list; } }
private static List<S3ObjectSummary> getObjectSummary() { List<S3ObjectSummary> list = new ArrayList<>(); S3ObjectSummary summary = new S3ObjectSummary(); summary.setKey( "test_backup/" + region + "/fakecluster/123456/201108110030/SNAP/ks1/cf1/f1.db"); list.add(summary); summary = new S3ObjectSummary(); summary.setKey( "test_backup/" + region + "/fakecluster/123456/201108110430/SST/ks1/cf1/f2.db"); list.add(summary); summary = new S3ObjectSummary(); summary.setKey( "test_backup/" + region + "/fakecluster/123456/201108110600/SST/ks1/cf1/f3.db"); list.add(summary); summary = new S3ObjectSummary(); summary.setKey("test_backup/" + region + "/fakecluster/123456/201108110030/META/meta.json"); list.add(summary); return list; }
@Override protected void doStartElement( String uri, String name, String qName, Attributes attrs) { if (in("ListBucketResult")) { if (name.equals("Contents")) { currentObject = new S3ObjectSummary(); currentObject.setBucketName(result.getBucketName()); } } else if (in("ListBucketResult", "Contents")) { if (name.equals("Owner")) { currentOwner = new Owner(); } } }
@Override protected void doStartElement( String uri, String name, String qName, Attributes attrs) { if (in("ListBucketResult")) { if (name.equals("Contents")) { currentObject = new S3ObjectSummary(); currentObject.setBucketName(objectListing.getBucketName()); } } else if (in("ListBucketResult", "Contents")) { if (name.equals("Owner")) { currentOwner = new Owner(); } } }
@Override protected void doStartElement( String uri, String name, String qName, Attributes attrs) { if (in("ListBucketResult")) { if (name.equals("Contents")) { currentObject = new S3ObjectSummary(); currentObject.setBucketName(result.getBucketName()); } } else if (in("ListBucketResult", "Contents")) { if (name.equals("Owner")) { currentOwner = new Owner(); } } }
@Override protected void doStartElement( String uri, String name, String qName, Attributes attrs) { if (in("ListBucketResult")) { if (name.equals("Contents")) { currentObject = new S3ObjectSummary(); currentObject.setBucketName(objectListing.getBucketName()); } } else if (in("ListBucketResult", "Contents")) { if (name.equals("Owner")) { currentOwner = new Owner(); } } }
@Override protected void doStartElement( String uri, String name, String qName, Attributes attrs) { if (in("ListBucketResult")) { if (name.equals("Contents")) { currentObject = new S3ObjectSummary(); currentObject.setBucketName(objectListing.getBucketName()); } } else if (in("ListBucketResult", "Contents")) { if (name.equals("Owner")) { currentOwner = new Owner(); } } }
@Override protected void doStartElement( String uri, String name, String qName, Attributes attrs) { if (in("ListBucketResult")) { if (name.equals("Contents")) { currentObject = new S3ObjectSummary(); currentObject.setBucketName(result.getBucketName()); } } else if (in("ListBucketResult", "Contents")) { if (name.equals("Owner")) { currentOwner = new Owner(); } } }
private ObjectListing s3objectList(String key, StorageClass storageClass) throws Exception { ObjectListing list = new ObjectListing(); S3ObjectSummary element = new S3ObjectSummary(); element.setKey(key); element.setStorageClass(storageClass.toString()); List<S3ObjectSummary> objectSummaries = new ArrayList<>(); objectSummaries.add(element); Field field = list.getClass().getDeclaredField("objectSummaries"); field.setAccessible(true); field.set(list, objectSummaries); return list; }
/** * Creates an S3 object summary. * * @param filePath the file path * @param fileSizeInBytes the file size in bytes * * @return the S3 object summary */ private S3ObjectSummary createS3ObjectSummary(String filePath, long fileSizeInBytes) { S3ObjectSummary s3ObjectSummary = new S3ObjectSummary(); s3ObjectSummary.setKey(filePath); s3ObjectSummary.setSize(fileSizeInBytes); return s3ObjectSummary; }
@Test public void testListDirectoryIgnoreZeroByteDirectoryMarkers() { // Create an S3 file transfer request parameters DTO. S3FileTransferRequestParamsDto s3FileTransferRequestParamsDto = new S3FileTransferRequestParamsDto(); // Create a list of S3 object summaries. List<S3ObjectSummary> s3ObjectSummaries = Collections.singletonList(new S3ObjectSummary()); // Mock the external calls. when(s3Dao.listDirectory(s3FileTransferRequestParamsDto, true)).thenReturn(s3ObjectSummaries); // Call the method under test. List<S3ObjectSummary> result = s3Service.listDirectory(s3FileTransferRequestParamsDto, true); // Verify the external calls. verify(s3Dao).listDirectory(s3FileTransferRequestParamsDto, true); verifyNoMoreInteractions(s3Dao); // Validate the returned object. assertEquals(s3ObjectSummaries, result); }
private S3ObjectSummary getS3ObjectSummary(String bucketName, String key, long size) { S3ObjectSummary objectSummary = new S3ObjectSummary(); objectSummary.setBucketName(bucketName); objectSummary.setKey(key); objectSummary.setSize(size); return objectSummary; } }
@Test public void testListDirectory() { // Create an S3 file transfer request parameters DTO. S3FileTransferRequestParamsDto s3FileTransferRequestParamsDto = new S3FileTransferRequestParamsDto(); // Create a list of S3 object summaries. List<S3ObjectSummary> s3ObjectSummaries = Collections.singletonList(new S3ObjectSummary()); // Mock the external calls. when(s3Dao.listDirectory(s3FileTransferRequestParamsDto, false)).thenReturn(s3ObjectSummaries); // Call the method under test. List<S3ObjectSummary> result = s3Service.listDirectory(s3FileTransferRequestParamsDto); // Verify the external calls. By default, we do not ignore 0 byte objects that represent S3 directories. verify(s3Dao).listDirectory(s3FileTransferRequestParamsDto, false); verifyNoMoreInteractions(s3Dao); // Validate the returned object. assertEquals(s3ObjectSummaries, result); }
@Bean public AmazonS3 amazonS3() { AmazonS3 amazonS3 = Mockito.mock(AmazonS3.class); willAnswer(invocation -> { ObjectListing objectListing = new ObjectListing(); List<S3ObjectSummary> objectSummaries = objectListing.getObjectSummaries(); for (S3Object s3Object : S3_OBJECTS) { S3ObjectSummary s3ObjectSummary = new S3ObjectSummary(); s3ObjectSummary.setBucketName(S3_BUCKET); s3ObjectSummary.setKey(s3Object.getKey()); s3ObjectSummary.setLastModified(new Date(new File(s3Object.getKey()).lastModified())); objectSummaries.add(s3ObjectSummary); } return objectListing; }).given(amazonS3).listObjects(any(ListObjectsRequest.class)); for (final S3Object s3Object : S3_OBJECTS) { willAnswer(invocation -> s3Object).given(amazonS3).getObject(S3_BUCKET, s3Object.getKey()); } return amazonS3; }
@Bean public AmazonS3 amazonS3() { AmazonS3 amazonS3 = Mockito.mock(AmazonS3.class); willAnswer(invocation -> { ObjectListing objectListing = new ObjectListing(); List<S3ObjectSummary> objectSummaries = objectListing.getObjectSummaries(); for (S3Object s3Object : S3_OBJECTS) { S3ObjectSummary s3ObjectSummary = new S3ObjectSummary(); s3ObjectSummary.setBucketName(S3_BUCKET); s3ObjectSummary.setKey(s3Object.getKey()); Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.DATE, 1); s3ObjectSummary.setLastModified(calendar.getTime()); objectSummaries.add(s3ObjectSummary); } return objectListing; }).given(amazonS3).listObjects(any(ListObjectsRequest.class)); for (final S3Object s3Object : S3_OBJECTS) { willAnswer(invocation -> s3Object).given(amazonS3).getObject(S3_BUCKET, s3Object.getKey()); } return amazonS3; }
@Test public void testTagObjects() { // Create an S3 file transfer request parameters DTO to access S3 objects. S3FileTransferRequestParamsDto s3FileTransferRequestParamsDto = new S3FileTransferRequestParamsDto(); // Create an S3 file transfer request parameters DTO to tag S3 objects. S3FileTransferRequestParamsDto s3ObjectTaggerParamsDto = new S3FileTransferRequestParamsDto(); s3ObjectTaggerParamsDto.setAwsAccessKeyId(AWS_ASSUMED_ROLE_ACCESS_KEY); s3ObjectTaggerParamsDto.setAwsSecretKey(AWS_ASSUMED_ROLE_SECRET_KEY); s3ObjectTaggerParamsDto.setSessionToken(AWS_ASSUMED_ROLE_SESSION_TOKEN); // Create an S3 object summary. S3ObjectSummary s3ObjectSummary = new S3ObjectSummary(); s3ObjectSummary.setKey(S3_KEY); // Create an S3 object tag. Tag tag = new Tag(S3_OBJECT_TAG_KEY, S3_OBJECT_TAG_VALUE); // Call the method under test. s3Service.tagObjects(s3FileTransferRequestParamsDto, s3ObjectTaggerParamsDto, Collections.singletonList(s3ObjectSummary), tag); // Verify the external calls. verify(s3Dao).tagObjects(s3FileTransferRequestParamsDto, s3ObjectTaggerParamsDto, Collections.singletonList(s3ObjectSummary), tag); verifyNoMoreInteractions(s3Dao); }
@Override public ObjectListing answer(InvocationOnMock invocation) throws Throwable { ListObjectsRequest listObjectsRequest = invocation.getArgument(0); String marker = listObjectsRequest.getMarker(); ObjectListing objectListing = new ObjectListing(); if (marker == null) { objectListing.setNextMarker("marker"); objectListing.setTruncated(true); } else { assertEquals("marker", marker); S3ObjectSummary s3ObjectSummary = new S3ObjectSummary(); s3ObjectSummary.setKey(expectedFilePath); s3ObjectSummary.setSize(expectedFileSize); objectListing.getObjectSummaries().add(s3ObjectSummary); } return objectListing; } });
@Test public void testTagObjects() { // Create an S3 file transfer request parameters DTO to access S3 objects. S3FileTransferRequestParamsDto params = new S3FileTransferRequestParamsDto(); params.setS3BucketName(S3_BUCKET_NAME); // Create an S3 object summary. S3ObjectSummary s3ObjectSummary = new S3ObjectSummary(); s3ObjectSummary.setKey(TARGET_S3_KEY); // Create an S3 object tag. Tag tag = new Tag(S3_OBJECT_TAG_KEY, S3_OBJECT_TAG_VALUE); // Put a file in S3. s3Operations.putObject(new PutObjectRequest(S3_BUCKET_NAME, TARGET_S3_KEY, new ByteArrayInputStream(new byte[1]), new ObjectMetadata()), null); // Tag the file with an S3 object tag. s3Dao.tagObjects(params, new S3FileTransferRequestParamsDto(), Collections.singletonList(s3ObjectSummary), tag); // Validate that the object got tagged. GetObjectTaggingResult getObjectTaggingResult = s3Operations.getObjectTagging(new GetObjectTaggingRequest(S3_BUCKET_NAME, TARGET_S3_KEY), null); assertEquals(Collections.singletonList(tag), getObjectTaggingResult.getTagSet()); }