From c14c993a6bf4385702839c080e88658b1eb74073 Mon Sep 17 00:00:00 2001 From: chaaran Date: Thu, 4 Aug 2022 16:22:45 +0100 Subject: [PATCH 1/8] Migrated exception assertion to assertThrows on BlackblazeDataTransferTest --- .../BackblazeDataTransferClientTest.java | 393 +++++++++--------- 1 file changed, 208 insertions(+), 185 deletions(-) diff --git a/extensions/data-transfer/portability-data-transfer-backblaze/src/test/java/org/datatransferproject/datatransfer/backblaze/common/BackblazeDataTransferClientTest.java b/extensions/data-transfer/portability-data-transfer-backblaze/src/test/java/org/datatransferproject/datatransfer/backblaze/common/BackblazeDataTransferClientTest.java index 586779e57..597d9cd57 100644 --- a/extensions/data-transfer/portability-data-transfer-backblaze/src/test/java/org/datatransferproject/datatransfer/backblaze/common/BackblazeDataTransferClientTest.java +++ b/extensions/data-transfer/portability-data-transfer-backblaze/src/test/java/org/datatransferproject/datatransfer/backblaze/common/BackblazeDataTransferClientTest.java @@ -26,11 +26,13 @@ import java.io.File; import java.io.IOException; + import org.datatransferproject.api.launcher.Monitor; import org.datatransferproject.datatransfer.backblaze.exception.BackblazeCredentialsException; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; +import org.junit.jupiter.api.Assertions; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.junit.MockitoJUnitRunner; @@ -53,192 +55,213 @@ @RunWith(MockitoJUnitRunner.class) public class BackblazeDataTransferClientTest { - @Mock private Monitor monitor; - @Mock private BackblazeS3ClientFactory backblazeS3ClientFactory; - @Mock private S3Client s3Client; - private static File testFile; - private static final String KEY_ID = "keyId"; - private static final String APP_KEY = "appKey"; - private static final String EXPORT_SERVICE = "exp-serv"; - private static final String FILE_KEY = "fileKey"; - private static final String VALID_BUCKET_NAME = EXPORT_SERVICE + "-data-transfer-bucket"; - - @BeforeClass - public static void setUpClass() { - testFile = new File("src/test/resources/test.txt"); - } - - @Before - public void setUp() { - when(backblazeS3ClientFactory.createS3Client(anyString(), anyString(), anyString())) - .thenReturn(s3Client); - } - - private void createValidBucketList() { - Bucket bucket = Bucket.builder().name(VALID_BUCKET_NAME).build(); - when(s3Client.listBuckets()).thenReturn(ListBucketsResponse.builder().buckets(bucket).build()); - } - - private void createEmptyBucketList() { - when(s3Client.listBuckets()).thenReturn(ListBucketsResponse.builder().build()); - } - - private BackblazeDataTransferClient createDefaultClient() { - return new BackblazeDataTransferClient(monitor, backblazeS3ClientFactory, 1000, 500); - } - - @Test(expected = IllegalArgumentException.class) - public void testWrongPartSize() { - // Act - new BackblazeDataTransferClient(monitor, backblazeS3ClientFactory, 10, 0); - // Assert: expected exception - } - - @Test - public void testInitBucketNameMatches() throws BackblazeCredentialsException, IOException { - // Arrange - createValidBucketList(); - BackblazeDataTransferClient client = createDefaultClient(); - // Act - client.init(KEY_ID, APP_KEY, EXPORT_SERVICE); - // Assert: no bucket is created - verify(s3Client, times(0)).createBucket(any(CreateBucketRequest.class)); - } - - @Test - public void testInitBucketCreated() throws BackblazeCredentialsException, IOException { - // Arrange - Bucket bucket = Bucket.builder().name("invalid-name").build(); - when(s3Client.listBuckets()).thenReturn(ListBucketsResponse.builder().buckets(bucket).build()); - BackblazeDataTransferClient client = createDefaultClient(); - // Act - client.init(KEY_ID, APP_KEY, EXPORT_SERVICE); - // Assert: bucket created once - verify(s3Client, times(1)).createBucket(any(CreateBucketRequest.class)); - } - - @Test(expected = IOException.class) - public void testInitBucketNameExists() throws BackblazeCredentialsException, IOException { - // Arrange - createEmptyBucketList(); - when(s3Client.createBucket(any(CreateBucketRequest.class))) - .thenThrow(BucketAlreadyExistsException.builder().build()); - BackblazeDataTransferClient client = createDefaultClient(); - // Act - try { - client.init(KEY_ID, APP_KEY, EXPORT_SERVICE); - } catch (Exception ex) { - // Assert - verify(monitor, atLeast(1)).info(any()); - throw ex; - } - } - - @Test(expected = IOException.class) - public void testInitErrorCreatingBucket() throws BackblazeCredentialsException, IOException { - // Arrange - createEmptyBucketList(); - when(s3Client.createBucket(any(CreateBucketRequest.class))) - .thenThrow(AwsServiceException.builder().build()); - BackblazeDataTransferClient client = createDefaultClient(); - // Act - client.init(KEY_ID, APP_KEY, EXPORT_SERVICE); - // Assert: expected exception - } - - @Test(expected = BackblazeCredentialsException.class) - public void testInitListBucketException() throws BackblazeCredentialsException, IOException { - // Arrange - when(s3Client.listBuckets()).thenThrow(S3Exception.builder().statusCode(403).build()); - BackblazeDataTransferClient client = createDefaultClient(); - // Act - try { - client.init(KEY_ID, APP_KEY, EXPORT_SERVICE); - } catch (Exception ex) { - // Assert: closed client - verify(s3Client, atLeast(1)).close(); - verify(monitor, atLeast(1)).debug(any()); - throw ex; - } - } - - @Test(expected = IllegalStateException.class) - public void testUploadFileNonInitialized() throws IOException { - // Arrange - BackblazeDataTransferClient client = createDefaultClient(); - // Act - client.uploadFile(FILE_KEY, testFile); - // Assert: expected exception - } - - @Test - public void testUploadFileSingle() throws BackblazeCredentialsException, IOException { - // Arrange - final String expectedVersionId = "123"; - createValidBucketList(); - when(s3Client.putObject(any(PutObjectRequest.class), any(RequestBody.class))) - .thenReturn(PutObjectResponse.builder().versionId(expectedVersionId).build()); - BackblazeDataTransferClient client = createDefaultClient(); + + @Mock + private Monitor monitor; + @Mock + private BackblazeS3ClientFactory backblazeS3ClientFactory; + @Mock + private S3Client s3Client; + private static File testFile; + private static final String KEY_ID = "keyId"; + private static final String APP_KEY = "appKey"; + private static final String EXPORT_SERVICE = "exp-serv"; + private static final String FILE_KEY = "fileKey"; + private static final String VALID_BUCKET_NAME = EXPORT_SERVICE + "-data-transfer-bucket"; + + @BeforeClass + public static void setUpClass() { + testFile = new File("src/test/resources/test.txt"); + } + + @Before + public void setUp() { + when(backblazeS3ClientFactory.createS3Client(anyString(), anyString(), anyString())) + .thenReturn(s3Client); + } + + private void createValidBucketList() { + Bucket bucket = Bucket.builder().name(VALID_BUCKET_NAME).build(); + when(s3Client.listBuckets()).thenReturn(ListBucketsResponse.builder().buckets(bucket).build()); + } + + private void createEmptyBucketList() { + when(s3Client.listBuckets()).thenReturn(ListBucketsResponse.builder().build()); + } + + private BackblazeDataTransferClient createDefaultClient() { + return new BackblazeDataTransferClient(monitor, backblazeS3ClientFactory, 1000, 500); + } + + @Test + public void testWrongPartSize() { + // Assert: expected exception + Assertions.assertThrows(IllegalArgumentException.class, () -> { + // Act + new BackblazeDataTransferClient(monitor, backblazeS3ClientFactory, 10, 0); + }); + } + + @Test + public void testInitBucketNameMatches() throws BackblazeCredentialsException, IOException { + // Arrange + createValidBucketList(); + BackblazeDataTransferClient client = createDefaultClient(); + // Act + client.init(KEY_ID, APP_KEY, EXPORT_SERVICE); + // Assert: no bucket is created + verify(s3Client, times(0)).createBucket(any(CreateBucketRequest.class)); + } + + @Test + public void testInitBucketCreated() throws BackblazeCredentialsException, IOException { + // Arrange + Bucket bucket = Bucket.builder().name("invalid-name").build(); + when(s3Client.listBuckets()).thenReturn(ListBucketsResponse.builder().buckets(bucket).build()); + BackblazeDataTransferClient client = createDefaultClient(); + // Act + client.init(KEY_ID, APP_KEY, EXPORT_SERVICE); + // Assert: bucket created once + verify(s3Client, times(1)).createBucket(any(CreateBucketRequest.class)); + } + + @Test + public void testInitBucketNameExists() throws BackblazeCredentialsException, IOException { + // Arrange + createEmptyBucketList(); + when(s3Client.createBucket(any(CreateBucketRequest.class))) + .thenThrow(BucketAlreadyExistsException.builder().build()); + BackblazeDataTransferClient client = createDefaultClient(); + + Assertions.assertThrows(IOException.class, () -> { + // Act + try { client.init(KEY_ID, APP_KEY, EXPORT_SERVICE); - // Act - String actualVersionId = client.uploadFile(FILE_KEY, testFile); + } catch (Exception ex) { // Assert - verify(s3Client, times(1)).putObject(any(PutObjectRequest.class), any(RequestBody.class)); - assertEquals(expectedVersionId, actualVersionId); - } - - @Test(expected = IOException.class) - public void testUploadFileSingleException() throws BackblazeCredentialsException, IOException { - // Arrange - createValidBucketList(); - when(s3Client.putObject(any(PutObjectRequest.class), any(RequestBody.class))) - .thenThrow(AwsServiceException.builder().build()); - BackblazeDataTransferClient client = createDefaultClient(); - client.init(KEY_ID, APP_KEY, EXPORT_SERVICE); - // Act - client.uploadFile(FILE_KEY, testFile); - // Assert: expected exception - } - - @Test - public void testUploadFileMultipart() throws BackblazeCredentialsException, IOException { - // Arrange - final String expectedVersionId = "123"; - createValidBucketList(); - when(s3Client.createMultipartUpload(any(CreateMultipartUploadRequest.class))) - .thenReturn(CreateMultipartUploadResponse.builder().uploadId("xyz").build()); - when(s3Client.uploadPart(any(UploadPartRequest.class), any(RequestBody.class))) - .thenReturn(UploadPartResponse.builder().build()); - when(s3Client.completeMultipartUpload(any(CompleteMultipartUploadRequest.class))) - .thenReturn(CompleteMultipartUploadResponse.builder().versionId(expectedVersionId).build()); - final long partSize = 10; - final long fileSize = testFile.length(); - final long expectedParts = fileSize / partSize + (fileSize % partSize == 0 ? 0 : 1); - BackblazeDataTransferClient client = - new BackblazeDataTransferClient(monitor, backblazeS3ClientFactory, fileSize / 2, partSize); - client.init(KEY_ID, APP_KEY, EXPORT_SERVICE); - // Act - String actualVersionId = client.uploadFile(FILE_KEY, testFile); - // Assert: uploaded in 8 parts - verify(s3Client, times((int) expectedParts)) - .uploadPart(any(UploadPartRequest.class), any(RequestBody.class)); - assertEquals(expectedVersionId, actualVersionId); - } - - @Test(expected = IOException.class) - public void testUploadFileMultipartException() throws BackblazeCredentialsException, IOException { - // Arrange - createValidBucketList(); - when(s3Client.createMultipartUpload(any(CreateMultipartUploadRequest.class))) - .thenReturn(CreateMultipartUploadResponse.builder().uploadId("xyz").build()); - when(s3Client.uploadPart(any(UploadPartRequest.class), any(RequestBody.class))) - .thenThrow(AwsServiceException.builder().build()); - final long fileSize = testFile.length(); - BackblazeDataTransferClient client = - new BackblazeDataTransferClient(monitor, backblazeS3ClientFactory, fileSize / 2, fileSize / 8); + verify(monitor, atLeast(1)).info(any()); + throw ex; + } + }); + + } + + @Test + public void testInitErrorCreatingBucket() throws BackblazeCredentialsException, IOException { + // Arrange + createEmptyBucketList(); + when(s3Client.createBucket(any(CreateBucketRequest.class))) + .thenThrow(AwsServiceException.builder().build()); + BackblazeDataTransferClient client = createDefaultClient(); + // Assert: expected exception + Assertions.assertThrows(IOException.class, () -> { + // Act + client.init(KEY_ID, APP_KEY, EXPORT_SERVICE); + }); + } + + @Test + public void testInitListBucketException() throws BackblazeCredentialsException, IOException { + // Arrange + when(s3Client.listBuckets()).thenThrow(S3Exception.builder().statusCode(403).build()); + BackblazeDataTransferClient client = createDefaultClient(); + Assertions.assertThrows(BackblazeCredentialsException.class, () -> { + // Act + try { client.init(KEY_ID, APP_KEY, EXPORT_SERVICE); - // Act - client.uploadFile(FILE_KEY, testFile); - // Assert: expected exception - } + } catch (Exception ex) { + // Assert: closed client + verify(s3Client, atLeast(1)).close(); + verify(monitor, atLeast(1)).debug(any()); + throw ex; + } + }); + } + + @Test + public void testUploadFileNonInitialized() throws IOException { + // Arrange + BackblazeDataTransferClient client = createDefaultClient(); + // Assert: expected exception + Assertions.assertThrows(IllegalStateException.class, () -> { + // Act + client.uploadFile(FILE_KEY, testFile); + }); + } + + @Test + public void testUploadFileSingle() throws BackblazeCredentialsException, IOException { + // Arrange + final String expectedVersionId = "123"; + createValidBucketList(); + when(s3Client.putObject(any(PutObjectRequest.class), any(RequestBody.class))) + .thenReturn(PutObjectResponse.builder().versionId(expectedVersionId).build()); + BackblazeDataTransferClient client = createDefaultClient(); + client.init(KEY_ID, APP_KEY, EXPORT_SERVICE); + // Act + String actualVersionId = client.uploadFile(FILE_KEY, testFile); + // Assert + verify(s3Client, times(1)).putObject(any(PutObjectRequest.class), any(RequestBody.class)); + assertEquals(expectedVersionId, actualVersionId); + } + + @Test + public void testUploadFileSingleException() throws BackblazeCredentialsException, IOException { + // Arrange + createValidBucketList(); + when(s3Client.putObject(any(PutObjectRequest.class), any(RequestBody.class))) + .thenThrow(AwsServiceException.builder().build()); + BackblazeDataTransferClient client = createDefaultClient(); + client.init(KEY_ID, APP_KEY, EXPORT_SERVICE); + // Assert: expected exception + Assertions.assertThrows(IOException.class, () -> { + // Act + client.uploadFile(FILE_KEY, testFile); + }); + } + + @Test + public void testUploadFileMultipart() throws BackblazeCredentialsException, IOException { + // Arrange + final String expectedVersionId = "123"; + createValidBucketList(); + when(s3Client.createMultipartUpload(any(CreateMultipartUploadRequest.class))) + .thenReturn(CreateMultipartUploadResponse.builder().uploadId("xyz").build()); + when(s3Client.uploadPart(any(UploadPartRequest.class), any(RequestBody.class))) + .thenReturn(UploadPartResponse.builder().build()); + when(s3Client.completeMultipartUpload(any(CompleteMultipartUploadRequest.class))) + .thenReturn(CompleteMultipartUploadResponse.builder().versionId(expectedVersionId).build()); + final long partSize = 10; + final long fileSize = testFile.length(); + final long expectedParts = fileSize / partSize + (fileSize % partSize == 0 ? 0 : 1); + BackblazeDataTransferClient client = + new BackblazeDataTransferClient(monitor, backblazeS3ClientFactory, fileSize / 2, partSize); + client.init(KEY_ID, APP_KEY, EXPORT_SERVICE); + // Act + String actualVersionId = client.uploadFile(FILE_KEY, testFile); + // Assert: uploaded in 8 parts + verify(s3Client, times((int) expectedParts)) + .uploadPart(any(UploadPartRequest.class), any(RequestBody.class)); + assertEquals(expectedVersionId, actualVersionId); + } + + @Test + public void testUploadFileMultipartException() throws BackblazeCredentialsException, IOException { + // Arrange + createValidBucketList(); + when(s3Client.createMultipartUpload(any(CreateMultipartUploadRequest.class))) + .thenReturn(CreateMultipartUploadResponse.builder().uploadId("xyz").build()); + when(s3Client.uploadPart(any(UploadPartRequest.class), any(RequestBody.class))) + .thenThrow(AwsServiceException.builder().build()); + final long fileSize = testFile.length(); + BackblazeDataTransferClient client = + new BackblazeDataTransferClient(monitor, backblazeS3ClientFactory, fileSize / 2, + fileSize / 8); + client.init(KEY_ID, APP_KEY, EXPORT_SERVICE); + // Assert: expected exception + Assertions.assertThrows(IOException.class, () -> { + // Act + client.uploadFile(FILE_KEY, testFile); + }); + } } From 9cdaee78933d0508897933c971ad6c6f33b14c88 Mon Sep 17 00:00:00 2001 From: chaaran Date: Thu, 4 Aug 2022 16:55:30 +0100 Subject: [PATCH 2/8] Update BackblazeDataTransferClientTest.java Summary: Test Plan: Reviewers: Subscribers: Tasks: Tags: Differential Revision: https://phabricator.intern.facebook.com/D38427899 --- .../BackblazeDataTransferClientTest.java | 393 +++++++++--------- 1 file changed, 208 insertions(+), 185 deletions(-) diff --git a/extensions/data-transfer/portability-data-transfer-backblaze/src/test/java/org/datatransferproject/datatransfer/backblaze/common/BackblazeDataTransferClientTest.java b/extensions/data-transfer/portability-data-transfer-backblaze/src/test/java/org/datatransferproject/datatransfer/backblaze/common/BackblazeDataTransferClientTest.java index 586779e57..597d9cd57 100644 --- a/extensions/data-transfer/portability-data-transfer-backblaze/src/test/java/org/datatransferproject/datatransfer/backblaze/common/BackblazeDataTransferClientTest.java +++ b/extensions/data-transfer/portability-data-transfer-backblaze/src/test/java/org/datatransferproject/datatransfer/backblaze/common/BackblazeDataTransferClientTest.java @@ -26,11 +26,13 @@ import java.io.File; import java.io.IOException; + import org.datatransferproject.api.launcher.Monitor; import org.datatransferproject.datatransfer.backblaze.exception.BackblazeCredentialsException; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; +import org.junit.jupiter.api.Assertions; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.junit.MockitoJUnitRunner; @@ -53,192 +55,213 @@ @RunWith(MockitoJUnitRunner.class) public class BackblazeDataTransferClientTest { - @Mock private Monitor monitor; - @Mock private BackblazeS3ClientFactory backblazeS3ClientFactory; - @Mock private S3Client s3Client; - private static File testFile; - private static final String KEY_ID = "keyId"; - private static final String APP_KEY = "appKey"; - private static final String EXPORT_SERVICE = "exp-serv"; - private static final String FILE_KEY = "fileKey"; - private static final String VALID_BUCKET_NAME = EXPORT_SERVICE + "-data-transfer-bucket"; - - @BeforeClass - public static void setUpClass() { - testFile = new File("src/test/resources/test.txt"); - } - - @Before - public void setUp() { - when(backblazeS3ClientFactory.createS3Client(anyString(), anyString(), anyString())) - .thenReturn(s3Client); - } - - private void createValidBucketList() { - Bucket bucket = Bucket.builder().name(VALID_BUCKET_NAME).build(); - when(s3Client.listBuckets()).thenReturn(ListBucketsResponse.builder().buckets(bucket).build()); - } - - private void createEmptyBucketList() { - when(s3Client.listBuckets()).thenReturn(ListBucketsResponse.builder().build()); - } - - private BackblazeDataTransferClient createDefaultClient() { - return new BackblazeDataTransferClient(monitor, backblazeS3ClientFactory, 1000, 500); - } - - @Test(expected = IllegalArgumentException.class) - public void testWrongPartSize() { - // Act - new BackblazeDataTransferClient(monitor, backblazeS3ClientFactory, 10, 0); - // Assert: expected exception - } - - @Test - public void testInitBucketNameMatches() throws BackblazeCredentialsException, IOException { - // Arrange - createValidBucketList(); - BackblazeDataTransferClient client = createDefaultClient(); - // Act - client.init(KEY_ID, APP_KEY, EXPORT_SERVICE); - // Assert: no bucket is created - verify(s3Client, times(0)).createBucket(any(CreateBucketRequest.class)); - } - - @Test - public void testInitBucketCreated() throws BackblazeCredentialsException, IOException { - // Arrange - Bucket bucket = Bucket.builder().name("invalid-name").build(); - when(s3Client.listBuckets()).thenReturn(ListBucketsResponse.builder().buckets(bucket).build()); - BackblazeDataTransferClient client = createDefaultClient(); - // Act - client.init(KEY_ID, APP_KEY, EXPORT_SERVICE); - // Assert: bucket created once - verify(s3Client, times(1)).createBucket(any(CreateBucketRequest.class)); - } - - @Test(expected = IOException.class) - public void testInitBucketNameExists() throws BackblazeCredentialsException, IOException { - // Arrange - createEmptyBucketList(); - when(s3Client.createBucket(any(CreateBucketRequest.class))) - .thenThrow(BucketAlreadyExistsException.builder().build()); - BackblazeDataTransferClient client = createDefaultClient(); - // Act - try { - client.init(KEY_ID, APP_KEY, EXPORT_SERVICE); - } catch (Exception ex) { - // Assert - verify(monitor, atLeast(1)).info(any()); - throw ex; - } - } - - @Test(expected = IOException.class) - public void testInitErrorCreatingBucket() throws BackblazeCredentialsException, IOException { - // Arrange - createEmptyBucketList(); - when(s3Client.createBucket(any(CreateBucketRequest.class))) - .thenThrow(AwsServiceException.builder().build()); - BackblazeDataTransferClient client = createDefaultClient(); - // Act - client.init(KEY_ID, APP_KEY, EXPORT_SERVICE); - // Assert: expected exception - } - - @Test(expected = BackblazeCredentialsException.class) - public void testInitListBucketException() throws BackblazeCredentialsException, IOException { - // Arrange - when(s3Client.listBuckets()).thenThrow(S3Exception.builder().statusCode(403).build()); - BackblazeDataTransferClient client = createDefaultClient(); - // Act - try { - client.init(KEY_ID, APP_KEY, EXPORT_SERVICE); - } catch (Exception ex) { - // Assert: closed client - verify(s3Client, atLeast(1)).close(); - verify(monitor, atLeast(1)).debug(any()); - throw ex; - } - } - - @Test(expected = IllegalStateException.class) - public void testUploadFileNonInitialized() throws IOException { - // Arrange - BackblazeDataTransferClient client = createDefaultClient(); - // Act - client.uploadFile(FILE_KEY, testFile); - // Assert: expected exception - } - - @Test - public void testUploadFileSingle() throws BackblazeCredentialsException, IOException { - // Arrange - final String expectedVersionId = "123"; - createValidBucketList(); - when(s3Client.putObject(any(PutObjectRequest.class), any(RequestBody.class))) - .thenReturn(PutObjectResponse.builder().versionId(expectedVersionId).build()); - BackblazeDataTransferClient client = createDefaultClient(); + + @Mock + private Monitor monitor; + @Mock + private BackblazeS3ClientFactory backblazeS3ClientFactory; + @Mock + private S3Client s3Client; + private static File testFile; + private static final String KEY_ID = "keyId"; + private static final String APP_KEY = "appKey"; + private static final String EXPORT_SERVICE = "exp-serv"; + private static final String FILE_KEY = "fileKey"; + private static final String VALID_BUCKET_NAME = EXPORT_SERVICE + "-data-transfer-bucket"; + + @BeforeClass + public static void setUpClass() { + testFile = new File("src/test/resources/test.txt"); + } + + @Before + public void setUp() { + when(backblazeS3ClientFactory.createS3Client(anyString(), anyString(), anyString())) + .thenReturn(s3Client); + } + + private void createValidBucketList() { + Bucket bucket = Bucket.builder().name(VALID_BUCKET_NAME).build(); + when(s3Client.listBuckets()).thenReturn(ListBucketsResponse.builder().buckets(bucket).build()); + } + + private void createEmptyBucketList() { + when(s3Client.listBuckets()).thenReturn(ListBucketsResponse.builder().build()); + } + + private BackblazeDataTransferClient createDefaultClient() { + return new BackblazeDataTransferClient(monitor, backblazeS3ClientFactory, 1000, 500); + } + + @Test + public void testWrongPartSize() { + // Assert: expected exception + Assertions.assertThrows(IllegalArgumentException.class, () -> { + // Act + new BackblazeDataTransferClient(monitor, backblazeS3ClientFactory, 10, 0); + }); + } + + @Test + public void testInitBucketNameMatches() throws BackblazeCredentialsException, IOException { + // Arrange + createValidBucketList(); + BackblazeDataTransferClient client = createDefaultClient(); + // Act + client.init(KEY_ID, APP_KEY, EXPORT_SERVICE); + // Assert: no bucket is created + verify(s3Client, times(0)).createBucket(any(CreateBucketRequest.class)); + } + + @Test + public void testInitBucketCreated() throws BackblazeCredentialsException, IOException { + // Arrange + Bucket bucket = Bucket.builder().name("invalid-name").build(); + when(s3Client.listBuckets()).thenReturn(ListBucketsResponse.builder().buckets(bucket).build()); + BackblazeDataTransferClient client = createDefaultClient(); + // Act + client.init(KEY_ID, APP_KEY, EXPORT_SERVICE); + // Assert: bucket created once + verify(s3Client, times(1)).createBucket(any(CreateBucketRequest.class)); + } + + @Test + public void testInitBucketNameExists() throws BackblazeCredentialsException, IOException { + // Arrange + createEmptyBucketList(); + when(s3Client.createBucket(any(CreateBucketRequest.class))) + .thenThrow(BucketAlreadyExistsException.builder().build()); + BackblazeDataTransferClient client = createDefaultClient(); + + Assertions.assertThrows(IOException.class, () -> { + // Act + try { client.init(KEY_ID, APP_KEY, EXPORT_SERVICE); - // Act - String actualVersionId = client.uploadFile(FILE_KEY, testFile); + } catch (Exception ex) { // Assert - verify(s3Client, times(1)).putObject(any(PutObjectRequest.class), any(RequestBody.class)); - assertEquals(expectedVersionId, actualVersionId); - } - - @Test(expected = IOException.class) - public void testUploadFileSingleException() throws BackblazeCredentialsException, IOException { - // Arrange - createValidBucketList(); - when(s3Client.putObject(any(PutObjectRequest.class), any(RequestBody.class))) - .thenThrow(AwsServiceException.builder().build()); - BackblazeDataTransferClient client = createDefaultClient(); - client.init(KEY_ID, APP_KEY, EXPORT_SERVICE); - // Act - client.uploadFile(FILE_KEY, testFile); - // Assert: expected exception - } - - @Test - public void testUploadFileMultipart() throws BackblazeCredentialsException, IOException { - // Arrange - final String expectedVersionId = "123"; - createValidBucketList(); - when(s3Client.createMultipartUpload(any(CreateMultipartUploadRequest.class))) - .thenReturn(CreateMultipartUploadResponse.builder().uploadId("xyz").build()); - when(s3Client.uploadPart(any(UploadPartRequest.class), any(RequestBody.class))) - .thenReturn(UploadPartResponse.builder().build()); - when(s3Client.completeMultipartUpload(any(CompleteMultipartUploadRequest.class))) - .thenReturn(CompleteMultipartUploadResponse.builder().versionId(expectedVersionId).build()); - final long partSize = 10; - final long fileSize = testFile.length(); - final long expectedParts = fileSize / partSize + (fileSize % partSize == 0 ? 0 : 1); - BackblazeDataTransferClient client = - new BackblazeDataTransferClient(monitor, backblazeS3ClientFactory, fileSize / 2, partSize); - client.init(KEY_ID, APP_KEY, EXPORT_SERVICE); - // Act - String actualVersionId = client.uploadFile(FILE_KEY, testFile); - // Assert: uploaded in 8 parts - verify(s3Client, times((int) expectedParts)) - .uploadPart(any(UploadPartRequest.class), any(RequestBody.class)); - assertEquals(expectedVersionId, actualVersionId); - } - - @Test(expected = IOException.class) - public void testUploadFileMultipartException() throws BackblazeCredentialsException, IOException { - // Arrange - createValidBucketList(); - when(s3Client.createMultipartUpload(any(CreateMultipartUploadRequest.class))) - .thenReturn(CreateMultipartUploadResponse.builder().uploadId("xyz").build()); - when(s3Client.uploadPart(any(UploadPartRequest.class), any(RequestBody.class))) - .thenThrow(AwsServiceException.builder().build()); - final long fileSize = testFile.length(); - BackblazeDataTransferClient client = - new BackblazeDataTransferClient(monitor, backblazeS3ClientFactory, fileSize / 2, fileSize / 8); + verify(monitor, atLeast(1)).info(any()); + throw ex; + } + }); + + } + + @Test + public void testInitErrorCreatingBucket() throws BackblazeCredentialsException, IOException { + // Arrange + createEmptyBucketList(); + when(s3Client.createBucket(any(CreateBucketRequest.class))) + .thenThrow(AwsServiceException.builder().build()); + BackblazeDataTransferClient client = createDefaultClient(); + // Assert: expected exception + Assertions.assertThrows(IOException.class, () -> { + // Act + client.init(KEY_ID, APP_KEY, EXPORT_SERVICE); + }); + } + + @Test + public void testInitListBucketException() throws BackblazeCredentialsException, IOException { + // Arrange + when(s3Client.listBuckets()).thenThrow(S3Exception.builder().statusCode(403).build()); + BackblazeDataTransferClient client = createDefaultClient(); + Assertions.assertThrows(BackblazeCredentialsException.class, () -> { + // Act + try { client.init(KEY_ID, APP_KEY, EXPORT_SERVICE); - // Act - client.uploadFile(FILE_KEY, testFile); - // Assert: expected exception - } + } catch (Exception ex) { + // Assert: closed client + verify(s3Client, atLeast(1)).close(); + verify(monitor, atLeast(1)).debug(any()); + throw ex; + } + }); + } + + @Test + public void testUploadFileNonInitialized() throws IOException { + // Arrange + BackblazeDataTransferClient client = createDefaultClient(); + // Assert: expected exception + Assertions.assertThrows(IllegalStateException.class, () -> { + // Act + client.uploadFile(FILE_KEY, testFile); + }); + } + + @Test + public void testUploadFileSingle() throws BackblazeCredentialsException, IOException { + // Arrange + final String expectedVersionId = "123"; + createValidBucketList(); + when(s3Client.putObject(any(PutObjectRequest.class), any(RequestBody.class))) + .thenReturn(PutObjectResponse.builder().versionId(expectedVersionId).build()); + BackblazeDataTransferClient client = createDefaultClient(); + client.init(KEY_ID, APP_KEY, EXPORT_SERVICE); + // Act + String actualVersionId = client.uploadFile(FILE_KEY, testFile); + // Assert + verify(s3Client, times(1)).putObject(any(PutObjectRequest.class), any(RequestBody.class)); + assertEquals(expectedVersionId, actualVersionId); + } + + @Test + public void testUploadFileSingleException() throws BackblazeCredentialsException, IOException { + // Arrange + createValidBucketList(); + when(s3Client.putObject(any(PutObjectRequest.class), any(RequestBody.class))) + .thenThrow(AwsServiceException.builder().build()); + BackblazeDataTransferClient client = createDefaultClient(); + client.init(KEY_ID, APP_KEY, EXPORT_SERVICE); + // Assert: expected exception + Assertions.assertThrows(IOException.class, () -> { + // Act + client.uploadFile(FILE_KEY, testFile); + }); + } + + @Test + public void testUploadFileMultipart() throws BackblazeCredentialsException, IOException { + // Arrange + final String expectedVersionId = "123"; + createValidBucketList(); + when(s3Client.createMultipartUpload(any(CreateMultipartUploadRequest.class))) + .thenReturn(CreateMultipartUploadResponse.builder().uploadId("xyz").build()); + when(s3Client.uploadPart(any(UploadPartRequest.class), any(RequestBody.class))) + .thenReturn(UploadPartResponse.builder().build()); + when(s3Client.completeMultipartUpload(any(CompleteMultipartUploadRequest.class))) + .thenReturn(CompleteMultipartUploadResponse.builder().versionId(expectedVersionId).build()); + final long partSize = 10; + final long fileSize = testFile.length(); + final long expectedParts = fileSize / partSize + (fileSize % partSize == 0 ? 0 : 1); + BackblazeDataTransferClient client = + new BackblazeDataTransferClient(monitor, backblazeS3ClientFactory, fileSize / 2, partSize); + client.init(KEY_ID, APP_KEY, EXPORT_SERVICE); + // Act + String actualVersionId = client.uploadFile(FILE_KEY, testFile); + // Assert: uploaded in 8 parts + verify(s3Client, times((int) expectedParts)) + .uploadPart(any(UploadPartRequest.class), any(RequestBody.class)); + assertEquals(expectedVersionId, actualVersionId); + } + + @Test + public void testUploadFileMultipartException() throws BackblazeCredentialsException, IOException { + // Arrange + createValidBucketList(); + when(s3Client.createMultipartUpload(any(CreateMultipartUploadRequest.class))) + .thenReturn(CreateMultipartUploadResponse.builder().uploadId("xyz").build()); + when(s3Client.uploadPart(any(UploadPartRequest.class), any(RequestBody.class))) + .thenThrow(AwsServiceException.builder().build()); + final long fileSize = testFile.length(); + BackblazeDataTransferClient client = + new BackblazeDataTransferClient(monitor, backblazeS3ClientFactory, fileSize / 2, + fileSize / 8); + client.init(KEY_ID, APP_KEY, EXPORT_SERVICE); + // Assert: expected exception + Assertions.assertThrows(IOException.class, () -> { + // Act + client.uploadFile(FILE_KEY, testFile); + }); + } } From 38609edcebfe30006457ae05f37bbb25f5e18ad5 Mon Sep 17 00:00:00 2001 From: chaaran Date: Fri, 5 Aug 2022 11:48:42 +0100 Subject: [PATCH 3/8] Exception assert migration [1/2] junit 5 Summary: Test Plan: Reviewers: Subscribers: Tasks: Tags: --- .../BackblazeDataTransferClientTest.java | 362 +++++++++--------- 1 file changed, 176 insertions(+), 186 deletions(-) diff --git a/extensions/data-transfer/portability-data-transfer-backblaze/src/test/java/org/datatransferproject/datatransfer/backblaze/common/BackblazeDataTransferClientTest.java b/extensions/data-transfer/portability-data-transfer-backblaze/src/test/java/org/datatransferproject/datatransfer/backblaze/common/BackblazeDataTransferClientTest.java index 586779e57..d90408a86 100644 --- a/extensions/data-transfer/portability-data-transfer-backblaze/src/test/java/org/datatransferproject/datatransfer/backblaze/common/BackblazeDataTransferClientTest.java +++ b/extensions/data-transfer/portability-data-transfer-backblaze/src/test/java/org/datatransferproject/datatransfer/backblaze/common/BackblazeDataTransferClientTest.java @@ -26,11 +26,13 @@ import java.io.File; import java.io.IOException; + import org.datatransferproject.api.launcher.Monitor; import org.datatransferproject.datatransfer.backblaze.exception.BackblazeCredentialsException; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; +import org.junit.jupiter.api.Assertions; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.junit.MockitoJUnitRunner; @@ -53,192 +55,180 @@ @RunWith(MockitoJUnitRunner.class) public class BackblazeDataTransferClientTest { - @Mock private Monitor monitor; - @Mock private BackblazeS3ClientFactory backblazeS3ClientFactory; - @Mock private S3Client s3Client; - private static File testFile; - private static final String KEY_ID = "keyId"; - private static final String APP_KEY = "appKey"; - private static final String EXPORT_SERVICE = "exp-serv"; - private static final String FILE_KEY = "fileKey"; - private static final String VALID_BUCKET_NAME = EXPORT_SERVICE + "-data-transfer-bucket"; - - @BeforeClass - public static void setUpClass() { - testFile = new File("src/test/resources/test.txt"); - } - - @Before - public void setUp() { - when(backblazeS3ClientFactory.createS3Client(anyString(), anyString(), anyString())) - .thenReturn(s3Client); - } - - private void createValidBucketList() { - Bucket bucket = Bucket.builder().name(VALID_BUCKET_NAME).build(); - when(s3Client.listBuckets()).thenReturn(ListBucketsResponse.builder().buckets(bucket).build()); - } - - private void createEmptyBucketList() { - when(s3Client.listBuckets()).thenReturn(ListBucketsResponse.builder().build()); - } - - private BackblazeDataTransferClient createDefaultClient() { - return new BackblazeDataTransferClient(monitor, backblazeS3ClientFactory, 1000, 500); - } - - @Test(expected = IllegalArgumentException.class) - public void testWrongPartSize() { - // Act - new BackblazeDataTransferClient(monitor, backblazeS3ClientFactory, 10, 0); - // Assert: expected exception - } - - @Test - public void testInitBucketNameMatches() throws BackblazeCredentialsException, IOException { - // Arrange - createValidBucketList(); - BackblazeDataTransferClient client = createDefaultClient(); - // Act - client.init(KEY_ID, APP_KEY, EXPORT_SERVICE); - // Assert: no bucket is created - verify(s3Client, times(0)).createBucket(any(CreateBucketRequest.class)); - } - - @Test - public void testInitBucketCreated() throws BackblazeCredentialsException, IOException { - // Arrange - Bucket bucket = Bucket.builder().name("invalid-name").build(); - when(s3Client.listBuckets()).thenReturn(ListBucketsResponse.builder().buckets(bucket).build()); - BackblazeDataTransferClient client = createDefaultClient(); - // Act - client.init(KEY_ID, APP_KEY, EXPORT_SERVICE); - // Assert: bucket created once - verify(s3Client, times(1)).createBucket(any(CreateBucketRequest.class)); - } - - @Test(expected = IOException.class) - public void testInitBucketNameExists() throws BackblazeCredentialsException, IOException { - // Arrange - createEmptyBucketList(); - when(s3Client.createBucket(any(CreateBucketRequest.class))) - .thenThrow(BucketAlreadyExistsException.builder().build()); - BackblazeDataTransferClient client = createDefaultClient(); - // Act - try { - client.init(KEY_ID, APP_KEY, EXPORT_SERVICE); - } catch (Exception ex) { - // Assert - verify(monitor, atLeast(1)).info(any()); - throw ex; - } - } - - @Test(expected = IOException.class) - public void testInitErrorCreatingBucket() throws BackblazeCredentialsException, IOException { - // Arrange - createEmptyBucketList(); - when(s3Client.createBucket(any(CreateBucketRequest.class))) - .thenThrow(AwsServiceException.builder().build()); - BackblazeDataTransferClient client = createDefaultClient(); - // Act - client.init(KEY_ID, APP_KEY, EXPORT_SERVICE); - // Assert: expected exception - } - - @Test(expected = BackblazeCredentialsException.class) - public void testInitListBucketException() throws BackblazeCredentialsException, IOException { - // Arrange - when(s3Client.listBuckets()).thenThrow(S3Exception.builder().statusCode(403).build()); - BackblazeDataTransferClient client = createDefaultClient(); - // Act - try { - client.init(KEY_ID, APP_KEY, EXPORT_SERVICE); - } catch (Exception ex) { - // Assert: closed client - verify(s3Client, atLeast(1)).close(); - verify(monitor, atLeast(1)).debug(any()); - throw ex; - } - } - - @Test(expected = IllegalStateException.class) - public void testUploadFileNonInitialized() throws IOException { - // Arrange - BackblazeDataTransferClient client = createDefaultClient(); - // Act - client.uploadFile(FILE_KEY, testFile); - // Assert: expected exception - } - - @Test - public void testUploadFileSingle() throws BackblazeCredentialsException, IOException { - // Arrange - final String expectedVersionId = "123"; - createValidBucketList(); - when(s3Client.putObject(any(PutObjectRequest.class), any(RequestBody.class))) - .thenReturn(PutObjectResponse.builder().versionId(expectedVersionId).build()); - BackblazeDataTransferClient client = createDefaultClient(); - client.init(KEY_ID, APP_KEY, EXPORT_SERVICE); - // Act - String actualVersionId = client.uploadFile(FILE_KEY, testFile); - // Assert - verify(s3Client, times(1)).putObject(any(PutObjectRequest.class), any(RequestBody.class)); - assertEquals(expectedVersionId, actualVersionId); - } - - @Test(expected = IOException.class) - public void testUploadFileSingleException() throws BackblazeCredentialsException, IOException { - // Arrange - createValidBucketList(); - when(s3Client.putObject(any(PutObjectRequest.class), any(RequestBody.class))) - .thenThrow(AwsServiceException.builder().build()); - BackblazeDataTransferClient client = createDefaultClient(); - client.init(KEY_ID, APP_KEY, EXPORT_SERVICE); - // Act - client.uploadFile(FILE_KEY, testFile); - // Assert: expected exception - } - - @Test - public void testUploadFileMultipart() throws BackblazeCredentialsException, IOException { - // Arrange - final String expectedVersionId = "123"; - createValidBucketList(); - when(s3Client.createMultipartUpload(any(CreateMultipartUploadRequest.class))) - .thenReturn(CreateMultipartUploadResponse.builder().uploadId("xyz").build()); - when(s3Client.uploadPart(any(UploadPartRequest.class), any(RequestBody.class))) - .thenReturn(UploadPartResponse.builder().build()); - when(s3Client.completeMultipartUpload(any(CompleteMultipartUploadRequest.class))) - .thenReturn(CompleteMultipartUploadResponse.builder().versionId(expectedVersionId).build()); - final long partSize = 10; - final long fileSize = testFile.length(); - final long expectedParts = fileSize / partSize + (fileSize % partSize == 0 ? 0 : 1); - BackblazeDataTransferClient client = - new BackblazeDataTransferClient(monitor, backblazeS3ClientFactory, fileSize / 2, partSize); + + @Mock + private Monitor monitor; + @Mock + private BackblazeS3ClientFactory backblazeS3ClientFactory; + @Mock + private S3Client s3Client; + private static File testFile; + private static final String KEY_ID = "keyId"; + private static final String APP_KEY = "appKey"; + private static final String EXPORT_SERVICE = "exp-serv"; + private static final String FILE_KEY = "fileKey"; + private static final String VALID_BUCKET_NAME = EXPORT_SERVICE + "-data-transfer-bucket"; + + @BeforeClass + public static void setUpClass() { + testFile = new File("src/test/resources/test.txt"); + } + + @Before + public void setUp() { + when(backblazeS3ClientFactory.createS3Client(anyString(), anyString(), anyString())) + .thenReturn(s3Client); + } + + private void createValidBucketList() { + Bucket bucket = Bucket.builder().name(VALID_BUCKET_NAME).build(); + when(s3Client.listBuckets()).thenReturn(ListBucketsResponse.builder().buckets(bucket).build()); + } + + private void createEmptyBucketList() { + when(s3Client.listBuckets()).thenReturn(ListBucketsResponse.builder().build()); + } + + private BackblazeDataTransferClient createDefaultClient() { + return new BackblazeDataTransferClient(monitor, backblazeS3ClientFactory, 1000, 500); + } + + @Test + public void testWrongPartSize() { + Assertions.assertThrows(IllegalArgumentException.class, () -> { + new BackblazeDataTransferClient(monitor, backblazeS3ClientFactory, 10, 0); + }); + } + + @Test + public void testInitBucketNameMatches() throws BackblazeCredentialsException, IOException { + createValidBucketList(); + BackblazeDataTransferClient client = createDefaultClient(); + client.init(KEY_ID, APP_KEY, EXPORT_SERVICE); + verify(s3Client, times(0)).createBucket(any(CreateBucketRequest.class)); + } + + @Test + public void testInitBucketCreated() throws BackblazeCredentialsException, IOException { + Bucket bucket = Bucket.builder().name("invalid-name").build(); + when(s3Client.listBuckets()).thenReturn(ListBucketsResponse.builder().buckets(bucket).build()); + BackblazeDataTransferClient client = createDefaultClient(); + client.init(KEY_ID, APP_KEY, EXPORT_SERVICE); + verify(s3Client, times(1)).createBucket(any(CreateBucketRequest.class)); + } + + @Test + public void testInitBucketNameExists() throws BackblazeCredentialsException, IOException { + createEmptyBucketList(); + when(s3Client.createBucket(any(CreateBucketRequest.class))) + .thenThrow(BucketAlreadyExistsException.builder().build()); + BackblazeDataTransferClient client = createDefaultClient(); + + Assertions.assertThrows(IOException.class, () -> { + try { client.init(KEY_ID, APP_KEY, EXPORT_SERVICE); - // Act - String actualVersionId = client.uploadFile(FILE_KEY, testFile); - // Assert: uploaded in 8 parts - verify(s3Client, times((int) expectedParts)) - .uploadPart(any(UploadPartRequest.class), any(RequestBody.class)); - assertEquals(expectedVersionId, actualVersionId); - } - - @Test(expected = IOException.class) - public void testUploadFileMultipartException() throws BackblazeCredentialsException, IOException { - // Arrange - createValidBucketList(); - when(s3Client.createMultipartUpload(any(CreateMultipartUploadRequest.class))) - .thenReturn(CreateMultipartUploadResponse.builder().uploadId("xyz").build()); - when(s3Client.uploadPart(any(UploadPartRequest.class), any(RequestBody.class))) - .thenThrow(AwsServiceException.builder().build()); - final long fileSize = testFile.length(); - BackblazeDataTransferClient client = - new BackblazeDataTransferClient(monitor, backblazeS3ClientFactory, fileSize / 2, fileSize / 8); + } catch (Exception ex) { + verify(monitor, atLeast(1)).info(any()); + throw ex; + } + }); + } + + @Test + public void testInitErrorCreatingBucket() throws BackblazeCredentialsException, IOException { + createEmptyBucketList(); + when(s3Client.createBucket(any(CreateBucketRequest.class))) + .thenThrow(AwsServiceException.builder().build()); + BackblazeDataTransferClient client = createDefaultClient(); + Assertions.assertThrows(IOException.class, () -> { + client.init(KEY_ID, APP_KEY, EXPORT_SERVICE); + }); + } + + @Test + public void testInitListBucketException() throws BackblazeCredentialsException, IOException { + when(s3Client.listBuckets()).thenThrow(S3Exception.builder().statusCode(403).build()); + BackblazeDataTransferClient client = createDefaultClient(); + Assertions.assertThrows(BackblazeCredentialsException.class, () -> { + try { client.init(KEY_ID, APP_KEY, EXPORT_SERVICE); - // Act - client.uploadFile(FILE_KEY, testFile); - // Assert: expected exception - } + } catch (Exception ex) { + verify(s3Client, atLeast(1)).close(); + verify(monitor, atLeast(1)).debug(any()); + throw ex; + } + }); + } + + @Test + public void testUploadFileNonInitialized() throws IOException { + BackblazeDataTransferClient client = createDefaultClient(); + Assertions.assertThrows(IllegalStateException.class, () -> { + client.uploadFile(FILE_KEY, testFile); + }); + } + + @Test + public void testUploadFileSingle() throws BackblazeCredentialsException, IOException { + final String expectedVersionId = "123"; + createValidBucketList(); + when(s3Client.putObject(any(PutObjectRequest.class), any(RequestBody.class))) + .thenReturn(PutObjectResponse.builder().versionId(expectedVersionId).build()); + BackblazeDataTransferClient client = createDefaultClient(); + client.init(KEY_ID, APP_KEY, EXPORT_SERVICE); + String actualVersionId = client.uploadFile(FILE_KEY, testFile); + verify(s3Client, times(1)).putObject(any(PutObjectRequest.class), any(RequestBody.class)); + assertEquals(expectedVersionId, actualVersionId); + } + + @Test + public void testUploadFileSingleException() throws BackblazeCredentialsException, IOException { + createValidBucketList(); + when(s3Client.putObject(any(PutObjectRequest.class), any(RequestBody.class))) + .thenThrow(AwsServiceException.builder().build()); + BackblazeDataTransferClient client = createDefaultClient(); + client.init(KEY_ID, APP_KEY, EXPORT_SERVICE); + Assertions.assertThrows(IOException.class, () -> { + client.uploadFile(FILE_KEY, testFile); + }); + } + + @Test + public void testUploadFileMultipart() throws BackblazeCredentialsException, IOException { + final String expectedVersionId = "123"; + createValidBucketList(); + when(s3Client.createMultipartUpload(any(CreateMultipartUploadRequest.class))) + .thenReturn(CreateMultipartUploadResponse.builder().uploadId("xyz").build()); + when(s3Client.uploadPart(any(UploadPartRequest.class), any(RequestBody.class))) + .thenReturn(UploadPartResponse.builder().build()); + when(s3Client.completeMultipartUpload(any(CompleteMultipartUploadRequest.class))) + .thenReturn(CompleteMultipartUploadResponse.builder().versionId(expectedVersionId).build()); + final long partSize = 10; + final long fileSize = testFile.length(); + final long expectedParts = fileSize / partSize + (fileSize % partSize == 0 ? 0 : 1); + BackblazeDataTransferClient client = + new BackblazeDataTransferClient(monitor, backblazeS3ClientFactory, fileSize / 2, partSize); + client.init(KEY_ID, APP_KEY, EXPORT_SERVICE); + String actualVersionId = client.uploadFile(FILE_KEY, testFile); + verify(s3Client, times((int) expectedParts)) + .uploadPart(any(UploadPartRequest.class), any(RequestBody.class)); + assertEquals(expectedVersionId, actualVersionId); + } + + @Test + public void testUploadFileMultipartException() throws BackblazeCredentialsException, IOException { + createValidBucketList(); + when(s3Client.createMultipartUpload(any(CreateMultipartUploadRequest.class))) + .thenReturn(CreateMultipartUploadResponse.builder().uploadId("xyz").build()); + when(s3Client.uploadPart(any(UploadPartRequest.class), any(RequestBody.class))) + .thenThrow(AwsServiceException.builder().build()); + final long fileSize = testFile.length(); + BackblazeDataTransferClient client = + new BackblazeDataTransferClient(monitor, backblazeS3ClientFactory, fileSize / 2, + fileSize / 8); + client.init(KEY_ID, APP_KEY, EXPORT_SERVICE); + Assertions.assertThrows(IOException.class, () -> { + client.uploadFile(FILE_KEY, testFile); + }); + } } From f084c831586cd0da8b0fd6cb04832e3c16200116 Mon Sep 17 00:00:00 2001 From: chaaran Date: Fri, 5 Aug 2022 12:57:54 +0100 Subject: [PATCH 4/8] exception assertion migration 2/2 Summary: Test Plan: Reviewers: Subscribers: Tasks: Tags: Differential Revision: https://phabricator.intern.facebook.com/D38456882 --- .../photos/FacebookPhotosExporterTest.java | 14 ++++--- .../photos/GooglePhotosImporterTest.java | 33 ++++++++------- .../media/MicrosoftMediaImporterTest.java | 40 +++++++++++-------- .../photos/MicrosoftPhotosImporterTest.java | 7 +++- .../ItemImportResultTest.java | 25 ++++++++---- .../transfer/CallableSizeCalculatorTest.java | 9 +++-- 6 files changed, 78 insertions(+), 50 deletions(-) diff --git a/extensions/data-transfer/portability-data-transfer-facebook/src/test/java/org/datatransferproject/transfer/facebook/photos/FacebookPhotosExporterTest.java b/extensions/data-transfer/portability-data-transfer-facebook/src/test/java/org/datatransferproject/transfer/facebook/photos/FacebookPhotosExporterTest.java index 98fd49c88..a5a950ce7 100644 --- a/extensions/data-transfer/portability-data-transfer-facebook/src/test/java/org/datatransferproject/transfer/facebook/photos/FacebookPhotosExporterTest.java +++ b/extensions/data-transfer/portability-data-transfer-facebook/src/test/java/org/datatransferproject/transfer/facebook/photos/FacebookPhotosExporterTest.java @@ -41,6 +41,7 @@ import org.datatransferproject.types.transfer.auth.TokensAndUrlAuthData; import org.junit.Before; import org.junit.Test; +import org.junit.jupiter.api.Assertions; import org.mockito.ArgumentMatchers; import org.mockito.Mockito; @@ -52,6 +53,7 @@ import static org.mockito.Mockito.when; public class FacebookPhotosExporterTest { + private static final String ALBUM_NAME = "My Album"; private static final String ALBUM_ID = "1946595"; private static final String ALBUM_DESCRIPTION = "This is a test album"; @@ -181,11 +183,13 @@ public void testSpecifiedAlbums() throws CopyExceptionWithFailureReason { .contains(new IdOnlyContainerResource(ALBUM_ID)); } - @Test(expected = IllegalStateException.class) + @Test public void testIllegalExport() throws CopyExceptionWithFailureReason { - facebookPhotosExporter.export( - uuid, - new TokensAndUrlAuthData("accessToken", null, null), - Optional.of(new ExportInformation(new StringPaginationToken(PHOTO_TOKEN_PREFIX), null))); + Assertions.assertThrows(IllegalStateException.class, () -> { + facebookPhotosExporter.export( + uuid, + new TokensAndUrlAuthData("accessToken", null, null), + Optional.of(new ExportInformation(new StringPaginationToken(PHOTO_TOKEN_PREFIX), null))); + }); } } diff --git a/extensions/data-transfer/portability-data-transfer-google/src/test/java/org/datatransferproject/datatransfer/google/photos/GooglePhotosImporterTest.java b/extensions/data-transfer/portability-data-transfer-google/src/test/java/org/datatransferproject/datatransfer/google/photos/GooglePhotosImporterTest.java index edafe7939..849efbde0 100644 --- a/extensions/data-transfer/portability-data-transfer-google/src/test/java/org/datatransferproject/datatransfer/google/photos/GooglePhotosImporterTest.java +++ b/extensions/data-transfer/portability-data-transfer-google/src/test/java/org/datatransferproject/datatransfer/google/photos/GooglePhotosImporterTest.java @@ -55,6 +55,7 @@ import org.hamcrest.CoreMatchers; import org.junit.Before; import org.junit.Test; +import org.junit.jupiter.api.Assertions; import org.mockito.ArgumentCaptor; import org.mockito.Mockito; @@ -144,9 +145,9 @@ public void importTwoPhotos() throws Exception { Mockito.when(googlePhotosInterface.uploadPhotoContent(any())).thenReturn("token1", "token2"); BatchMediaItemResponse batchMediaItemResponse = new BatchMediaItemResponse( - new NewMediaItemResult[] { - buildMediaItemResult("token1", Code.OK_VALUE), - buildMediaItemResult("token2", Code.OK_VALUE) + new NewMediaItemResult[]{ + buildMediaItemResult("token1", Code.OK_VALUE), + buildMediaItemResult("token2", Code.OK_VALUE) }); Mockito.when(googlePhotosInterface.createPhotos(any(NewMediaItemUpload.class))) .thenReturn(batchMediaItemResponse); @@ -202,9 +203,9 @@ public void importTwoPhotosWithFailure() throws Exception { Mockito.when(googlePhotosInterface.uploadPhotoContent(any())).thenReturn("token1", "token2"); BatchMediaItemResponse batchMediaItemResponse = new BatchMediaItemResponse( - new NewMediaItemResult[] { - buildMediaItemResult("token1", Code.OK_VALUE), - buildMediaItemResult("token2", Code.UNAUTHENTICATED_VALUE) + new NewMediaItemResult[]{ + buildMediaItemResult("token1", Code.OK_VALUE), + buildMediaItemResult("token2", Code.UNAUTHENTICATED_VALUE) }); Mockito.when(googlePhotosInterface.createPhotos(any(NewMediaItemUpload.class))) .thenReturn(batchMediaItemResponse); @@ -308,7 +309,7 @@ public void importPhotoInTempStore() throws Exception { BatchMediaItemResponse batchMediaItemResponse = new BatchMediaItemResponse( - new NewMediaItemResult[] {buildMediaItemResult("token1", Code.OK_VALUE)}); + new NewMediaItemResult[]{buildMediaItemResult("token1", Code.OK_VALUE)}); Mockito.when(googlePhotosInterface.createPhotos(any(NewMediaItemUpload.class))) .thenReturn(batchMediaItemResponse); @@ -354,7 +355,7 @@ public void importPhotoInTempStoreFailure() throws Exception { BatchMediaItemResponse batchMediaItemResponse = new BatchMediaItemResponse( - new NewMediaItemResult[] {buildMediaItemResult("token1", Code.OK_VALUE)}); + new NewMediaItemResult[]{buildMediaItemResult("token1", Code.OK_VALUE)}); Mockito.when(googlePhotosInterface.createPhotos(any(NewMediaItemUpload.class))) .thenReturn(batchMediaItemResponse); @@ -410,7 +411,7 @@ public void importPhotoFailedToFindAlbum() throws Exception { assertEquals(0, bytes); } - @Test(expected = IOException.class) + @Test public void importPhotoCreatePhotosOtherException() throws Exception { PhotoModel photoModel = new PhotoModel( @@ -438,11 +439,13 @@ public void importPhotoCreatePhotosOtherException() throws Exception { GoogleAlbum responseAlbum = new GoogleAlbum(); Mockito.when(googlePhotosInterface.getAlbum(any())).thenReturn(responseAlbum); - googlePhotosImporter.importPhotoBatch( - uuid, - Mockito.mock(TokensAndUrlAuthData.class), - Lists.newArrayList(photoModel), - executor, - NEW_ALBUM_ID); + Assertions.assertThrows(IOException.class, () -> { + googlePhotosImporter.importPhotoBatch( + uuid, + Mockito.mock(TokensAndUrlAuthData.class), + Lists.newArrayList(photoModel), + executor, + NEW_ALBUM_ID); + }); } } diff --git a/extensions/data-transfer/portability-data-transfer-microsoft/src/test/java/org/datatransferproject/transfer/microsoft/media/MicrosoftMediaImporterTest.java b/extensions/data-transfer/portability-data-transfer-microsoft/src/test/java/org/datatransferproject/transfer/microsoft/media/MicrosoftMediaImporterTest.java index 88ddc700c..f53df00a2 100644 --- a/extensions/data-transfer/portability-data-transfer-microsoft/src/test/java/org/datatransferproject/transfer/microsoft/media/MicrosoftMediaImporterTest.java +++ b/extensions/data-transfer/portability-data-transfer-microsoft/src/test/java/org/datatransferproject/transfer/microsoft/media/MicrosoftMediaImporterTest.java @@ -52,12 +52,14 @@ import org.datatransferproject.types.transfer.auth.TokensAndUrlAuthData; import org.junit.Before; import org.junit.Test; +import org.junit.jupiter.api.Assertions; /** * This tests the MicrosoftMediaImporter. As of now, it only tests the number of requests called. * More tests are needed to test request bodies and parameters. */ public class MicrosoftMediaImporterTest { + private static final int CHUNK_SIZE = 32000 * 1024; // 32000KiB private final static String BASE_URL = "https://www.baseurl.com"; private final static UUID uuid = UUID.randomUUID(); @@ -97,7 +99,8 @@ public void testCleanAlbumNames() throws Exception { List albums = ImmutableList.of(new MediaAlbum("id1", "album1.", "This is a fake albumb")); - MediaContainerResource data = new MediaContainerResource(albums, null /*phots*/, null /*videos*/); + MediaContainerResource data = new MediaContainerResource(albums, null /*phots*/, + null /*videos*/); Call call = mock(Call.class); doReturn(call).when(client).newCall(argThat((Request r) -> { @@ -112,7 +115,7 @@ public void testCleanAlbumNames() throws Exception { } return r.url().toString().equals( - "https://www.baseurl.com/v1.0/me/drive/special/photo-video/children") + "https://www.baseurl.com/v1.0/me/drive/special/photo-video/children") && body.contains("album1_"); })); Response response = mock(Response.class); @@ -132,18 +135,19 @@ public void testCleanAlbumNames() throws Exception { assertThat(result).isEqualTo(ImportResult.OK); } - @Test(expected = PermissionDeniedException.class) + @Test public void testImportItemPermissionDenied() throws Exception { List albums = ImmutableList.of(new MediaAlbum("id1", "album1.", "This is a fake albumb")); - MediaContainerResource data = new MediaContainerResource(albums, null /*photos*/, null /*videos*/); + MediaContainerResource data = new MediaContainerResource(albums, null /*photos*/, + null /*videos*/); Call call = mock(Call.class); doReturn(call).when(client).newCall( argThat((Request r) - -> r.url().toString().equals( - "https://www.baseurl.com/v1.0/me/drive/special/photo-video/children"))); + -> r.url().toString().equals( + "https://www.baseurl.com/v1.0/me/drive/special/photo-video/children"))); Response response = mock(Response.class); ResponseBody body = mock(ResponseBody.class); when(body.bytes()) @@ -157,7 +161,9 @@ public void testImportItemPermissionDenied() throws Exception { when(response.body()).thenReturn(body); when(call.execute()).thenReturn(response); - ImportResult result = importer.importItem(uuid, executor, authData, data); + Assertions.assertThrows(PermissionDeniedException.class, () -> { + ImportResult result = importer.importItem(uuid, executor, authData, data); + }); } @Test @@ -178,8 +184,8 @@ public void testImportItemAllSuccess() throws Exception { Call call = mock(Call.class); doReturn(call).when(client).newCall( argThat((Request r) - -> r.url().toString().equals( - "https://www.baseurl.com/v1.0/me/drive/special/photo-video/children"))); + -> r.url().toString().equals( + "https://www.baseurl.com/v1.0/me/drive/special/photo-video/children"))); Response response = mock(Response.class); ResponseBody body = mock(ResponseBody.class); when(body.bytes()) @@ -199,14 +205,14 @@ public void testImportItemAllSuccess() throws Exception { ResponseBody body2 = mock(ResponseBody.class); when(body2.bytes()) .thenReturn(ResponseBody - .create(MediaType.parse("application/json"), - "{\"uploadUrl\": \"https://scalia.com/link\"}") - .bytes()); + .create(MediaType.parse("application/json"), + "{\"uploadUrl\": \"https://scalia.com/link\"}") + .bytes()); when(body2.string()) .thenReturn(ResponseBody - .create(MediaType.parse("application/json"), - "{\"uploadUrl\": \"https://scalia.com/link\"}") - .string()); + .create(MediaType.parse("application/json"), + "{\"uploadUrl\": \"https://scalia.com/link\"}") + .string()); when(response2.code()).thenReturn(200); when(response2.body()).thenReturn(body2); when(call2.execute()).thenReturn(response2); @@ -218,10 +224,10 @@ public void testImportItemAllSuccess() throws Exception { ResponseBody body3 = mock(ResponseBody.class); when(body3.bytes()) .thenReturn(ResponseBody.create(MediaType.parse("application/json"), "{\"id\": \"rand1\"}") - .bytes()); + .bytes()); when(body3.string()) .thenReturn(ResponseBody.create(MediaType.parse("application/json"), "{\"id\": \"rand1\"}") - .string()); + .string()); when(response3.code()).thenReturn(200); when(response3.body()).thenReturn(body3); when(call3.execute()).thenReturn(response3); diff --git a/extensions/data-transfer/portability-data-transfer-microsoft/src/test/java/org/datatransferproject/transfer/microsoft/photos/MicrosoftPhotosImporterTest.java b/extensions/data-transfer/portability-data-transfer-microsoft/src/test/java/org/datatransferproject/transfer/microsoft/photos/MicrosoftPhotosImporterTest.java index dbe292107..5bc2b48b7 100644 --- a/extensions/data-transfer/portability-data-transfer-microsoft/src/test/java/org/datatransferproject/transfer/microsoft/photos/MicrosoftPhotosImporterTest.java +++ b/extensions/data-transfer/portability-data-transfer-microsoft/src/test/java/org/datatransferproject/transfer/microsoft/photos/MicrosoftPhotosImporterTest.java @@ -52,6 +52,7 @@ import org.datatransferproject.types.transfer.auth.TokensAndUrlAuthData; import org.junit.Before; import org.junit.Test; +import org.junit.jupiter.api.Assertions; /** @@ -140,7 +141,7 @@ public void testCleanAlbumNames() throws Exception { assertThat(result).isEqualTo(ImportResult.OK); } - @Test(expected = PermissionDeniedException.class) + @Test public void testImportItemPermissionDenied() throws Exception { List albums = ImmutableList.of(new PhotoAlbum("id1", "album1.", "This is a fake albumb")); @@ -162,7 +163,9 @@ public void testImportItemPermissionDenied() throws Exception { when(response.body()).thenReturn(body); when(call.execute()).thenReturn(response); - ImportResult result = importer.importItem(uuid, executor, authData, data); + Assertions.assertThrows(PermissionDeniedException.class, () -> { + ImportResult result = importer.importItem(uuid, executor, authData, data); + }); } @Test diff --git a/portability-spi-transfer/src/test/java/org/datatransferproject/spi/transfer/idempotentexecutor/ItemImportResultTest.java b/portability-spi-transfer/src/test/java/org/datatransferproject/spi/transfer/idempotentexecutor/ItemImportResultTest.java index 307859032..15ed0eaa7 100644 --- a/portability-spi-transfer/src/test/java/org/datatransferproject/spi/transfer/idempotentexecutor/ItemImportResultTest.java +++ b/portability-spi-transfer/src/test/java/org/datatransferproject/spi/transfer/idempotentexecutor/ItemImportResultTest.java @@ -5,6 +5,7 @@ import static org.junit.Assert.assertFalse; import org.junit.Test; +import org.junit.jupiter.api.Assertions; public class ItemImportResultTest { @@ -15,23 +16,31 @@ public void testNullBytesIsOk() { assertFalse(result.hasBytes()); } - @Test(expected = IllegalStateException.class) + @Test public void testNullBytesThrowOnGet() { - ItemImportResult.success("blabla", null).getBytes(); + Assertions.assertThrows(IllegalStateException.class, () -> { + ItemImportResult.success("blabla", null).getBytes(); + }); } - @Test(expected = NullPointerException.class) + @Test public void testSuccessWithNoData() { - ItemImportResult.success(null, 0L); + Assertions.assertThrows(NullPointerException.class, () -> { + ItemImportResult.success(null, 0L); + }); } - @Test(expected = IllegalArgumentException.class) + @Test public void testFailWithIncorrectBytes() { - ItemImportResult.success("blabla", -1L); + Assertions.assertThrows(IllegalArgumentException.class, () -> { + ItemImportResult.success("blabla", -1L); + }); } - @Test(expected = NullPointerException.class) + @Test public void testErrorWithNoException() { - ItemImportResult.error(null, 10L); + Assertions.assertThrows(NullPointerException.class, () -> { + ItemImportResult.error(null, 10L); + }); } } diff --git a/portability-transfer/src/test/java/org/datatransferproject/transfer/CallableSizeCalculatorTest.java b/portability-transfer/src/test/java/org/datatransferproject/transfer/CallableSizeCalculatorTest.java index c13bc5f98..a6bfb9269 100644 --- a/portability-transfer/src/test/java/org/datatransferproject/transfer/CallableSizeCalculatorTest.java +++ b/portability-transfer/src/test/java/org/datatransferproject/transfer/CallableSizeCalculatorTest.java @@ -25,6 +25,7 @@ import org.datatransferproject.types.common.models.photos.PhotoModel; import org.junit.Before; import org.junit.Test; +import org.junit.jupiter.api.Assertions; public class CallableSizeCalculatorTest { @@ -80,12 +81,14 @@ public void testSizeIsNotProvided() throws Exception { Truth.assertThat(nextByte).isEqualTo(-1); } - @Test(expected = IOException.class) + @Test public void testExceptionIsThrown() throws Exception { when(connectionProvider.getInputStreamForItem(any(), any())) .thenThrow(new IOException("oh no!")); - new CallableSizeCalculator(jobId, connectionProvider, - Collections.singleton(createItem("1-3242"))).call(); + Assertions.assertThrows(IOException.class, () -> { + new CallableSizeCalculator(jobId, connectionProvider, + Collections.singleton(createItem("1-3242"))).call(); + }); } private DownloadableItem createItem(String dataId) { From 8059a691f123a37be4894c3a0892b512054fa322 Mon Sep 17 00:00:00 2001 From: chaaran Date: Mon, 8 Aug 2022 15:28:11 +0100 Subject: [PATCH 5/8] [1/2] Migrate exception assert to Junit5 Summary: Test Plan: Reviewers: Subscribers: Tasks: Tags: Differential Revision: https://phabricator.intern.facebook.com/D38427899 --- .../BackblazeDataTransferClientTest.java | 364 +++++++++--------- 1 file changed, 178 insertions(+), 186 deletions(-) diff --git a/extensions/data-transfer/portability-data-transfer-backblaze/src/test/java/org/datatransferproject/datatransfer/backblaze/common/BackblazeDataTransferClientTest.java b/extensions/data-transfer/portability-data-transfer-backblaze/src/test/java/org/datatransferproject/datatransfer/backblaze/common/BackblazeDataTransferClientTest.java index 586779e57..6601a9cff 100644 --- a/extensions/data-transfer/portability-data-transfer-backblaze/src/test/java/org/datatransferproject/datatransfer/backblaze/common/BackblazeDataTransferClientTest.java +++ b/extensions/data-transfer/portability-data-transfer-backblaze/src/test/java/org/datatransferproject/datatransfer/backblaze/common/BackblazeDataTransferClientTest.java @@ -26,11 +26,15 @@ import java.io.File; import java.io.IOException; + import org.datatransferproject.api.launcher.Monitor; import org.datatransferproject.datatransfer.backblaze.exception.BackblazeCredentialsException; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; + +import static org.junit.jupiter.api.Assertions.assertThrows; + import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.junit.MockitoJUnitRunner; @@ -53,192 +57,180 @@ @RunWith(MockitoJUnitRunner.class) public class BackblazeDataTransferClientTest { - @Mock private Monitor monitor; - @Mock private BackblazeS3ClientFactory backblazeS3ClientFactory; - @Mock private S3Client s3Client; - private static File testFile; - private static final String KEY_ID = "keyId"; - private static final String APP_KEY = "appKey"; - private static final String EXPORT_SERVICE = "exp-serv"; - private static final String FILE_KEY = "fileKey"; - private static final String VALID_BUCKET_NAME = EXPORT_SERVICE + "-data-transfer-bucket"; - - @BeforeClass - public static void setUpClass() { - testFile = new File("src/test/resources/test.txt"); - } - - @Before - public void setUp() { - when(backblazeS3ClientFactory.createS3Client(anyString(), anyString(), anyString())) - .thenReturn(s3Client); - } - - private void createValidBucketList() { - Bucket bucket = Bucket.builder().name(VALID_BUCKET_NAME).build(); - when(s3Client.listBuckets()).thenReturn(ListBucketsResponse.builder().buckets(bucket).build()); - } - - private void createEmptyBucketList() { - when(s3Client.listBuckets()).thenReturn(ListBucketsResponse.builder().build()); - } - - private BackblazeDataTransferClient createDefaultClient() { - return new BackblazeDataTransferClient(monitor, backblazeS3ClientFactory, 1000, 500); - } - - @Test(expected = IllegalArgumentException.class) - public void testWrongPartSize() { - // Act - new BackblazeDataTransferClient(monitor, backblazeS3ClientFactory, 10, 0); - // Assert: expected exception - } - - @Test - public void testInitBucketNameMatches() throws BackblazeCredentialsException, IOException { - // Arrange - createValidBucketList(); - BackblazeDataTransferClient client = createDefaultClient(); - // Act - client.init(KEY_ID, APP_KEY, EXPORT_SERVICE); - // Assert: no bucket is created - verify(s3Client, times(0)).createBucket(any(CreateBucketRequest.class)); - } - - @Test - public void testInitBucketCreated() throws BackblazeCredentialsException, IOException { - // Arrange - Bucket bucket = Bucket.builder().name("invalid-name").build(); - when(s3Client.listBuckets()).thenReturn(ListBucketsResponse.builder().buckets(bucket).build()); - BackblazeDataTransferClient client = createDefaultClient(); - // Act - client.init(KEY_ID, APP_KEY, EXPORT_SERVICE); - // Assert: bucket created once - verify(s3Client, times(1)).createBucket(any(CreateBucketRequest.class)); - } - - @Test(expected = IOException.class) - public void testInitBucketNameExists() throws BackblazeCredentialsException, IOException { - // Arrange - createEmptyBucketList(); - when(s3Client.createBucket(any(CreateBucketRequest.class))) - .thenThrow(BucketAlreadyExistsException.builder().build()); - BackblazeDataTransferClient client = createDefaultClient(); - // Act - try { - client.init(KEY_ID, APP_KEY, EXPORT_SERVICE); - } catch (Exception ex) { - // Assert - verify(monitor, atLeast(1)).info(any()); - throw ex; - } - } - - @Test(expected = IOException.class) - public void testInitErrorCreatingBucket() throws BackblazeCredentialsException, IOException { - // Arrange - createEmptyBucketList(); - when(s3Client.createBucket(any(CreateBucketRequest.class))) - .thenThrow(AwsServiceException.builder().build()); - BackblazeDataTransferClient client = createDefaultClient(); - // Act - client.init(KEY_ID, APP_KEY, EXPORT_SERVICE); - // Assert: expected exception - } - - @Test(expected = BackblazeCredentialsException.class) - public void testInitListBucketException() throws BackblazeCredentialsException, IOException { - // Arrange - when(s3Client.listBuckets()).thenThrow(S3Exception.builder().statusCode(403).build()); - BackblazeDataTransferClient client = createDefaultClient(); - // Act - try { - client.init(KEY_ID, APP_KEY, EXPORT_SERVICE); - } catch (Exception ex) { - // Assert: closed client - verify(s3Client, atLeast(1)).close(); - verify(monitor, atLeast(1)).debug(any()); - throw ex; - } - } - - @Test(expected = IllegalStateException.class) - public void testUploadFileNonInitialized() throws IOException { - // Arrange - BackblazeDataTransferClient client = createDefaultClient(); - // Act - client.uploadFile(FILE_KEY, testFile); - // Assert: expected exception - } - - @Test - public void testUploadFileSingle() throws BackblazeCredentialsException, IOException { - // Arrange - final String expectedVersionId = "123"; - createValidBucketList(); - when(s3Client.putObject(any(PutObjectRequest.class), any(RequestBody.class))) - .thenReturn(PutObjectResponse.builder().versionId(expectedVersionId).build()); - BackblazeDataTransferClient client = createDefaultClient(); - client.init(KEY_ID, APP_KEY, EXPORT_SERVICE); - // Act - String actualVersionId = client.uploadFile(FILE_KEY, testFile); - // Assert - verify(s3Client, times(1)).putObject(any(PutObjectRequest.class), any(RequestBody.class)); - assertEquals(expectedVersionId, actualVersionId); - } - - @Test(expected = IOException.class) - public void testUploadFileSingleException() throws BackblazeCredentialsException, IOException { - // Arrange - createValidBucketList(); - when(s3Client.putObject(any(PutObjectRequest.class), any(RequestBody.class))) - .thenThrow(AwsServiceException.builder().build()); - BackblazeDataTransferClient client = createDefaultClient(); - client.init(KEY_ID, APP_KEY, EXPORT_SERVICE); - // Act - client.uploadFile(FILE_KEY, testFile); - // Assert: expected exception - } - - @Test - public void testUploadFileMultipart() throws BackblazeCredentialsException, IOException { - // Arrange - final String expectedVersionId = "123"; - createValidBucketList(); - when(s3Client.createMultipartUpload(any(CreateMultipartUploadRequest.class))) - .thenReturn(CreateMultipartUploadResponse.builder().uploadId("xyz").build()); - when(s3Client.uploadPart(any(UploadPartRequest.class), any(RequestBody.class))) - .thenReturn(UploadPartResponse.builder().build()); - when(s3Client.completeMultipartUpload(any(CompleteMultipartUploadRequest.class))) - .thenReturn(CompleteMultipartUploadResponse.builder().versionId(expectedVersionId).build()); - final long partSize = 10; - final long fileSize = testFile.length(); - final long expectedParts = fileSize / partSize + (fileSize % partSize == 0 ? 0 : 1); - BackblazeDataTransferClient client = - new BackblazeDataTransferClient(monitor, backblazeS3ClientFactory, fileSize / 2, partSize); + + @Mock + private Monitor monitor; + @Mock + private BackblazeS3ClientFactory backblazeS3ClientFactory; + @Mock + private S3Client s3Client; + private static File testFile; + private static final String KEY_ID = "keyId"; + private static final String APP_KEY = "appKey"; + private static final String EXPORT_SERVICE = "exp-serv"; + private static final String FILE_KEY = "fileKey"; + private static final String VALID_BUCKET_NAME = EXPORT_SERVICE + "-data-transfer-bucket"; + + @BeforeClass + public static void setUpClass() { + testFile = new File("src/test/resources/test.txt"); + } + + @Before + public void setUp() { + when(backblazeS3ClientFactory.createS3Client(anyString(), anyString(), anyString())) + .thenReturn(s3Client); + } + + private void createValidBucketList() { + Bucket bucket = Bucket.builder().name(VALID_BUCKET_NAME).build(); + when(s3Client.listBuckets()).thenReturn(ListBucketsResponse.builder().buckets(bucket).build()); + } + + private void createEmptyBucketList() { + when(s3Client.listBuckets()).thenReturn(ListBucketsResponse.builder().build()); + } + + private BackblazeDataTransferClient createDefaultClient() { + return new BackblazeDataTransferClient(monitor, backblazeS3ClientFactory, 1000, 500); + } + + @Test + public void testWrongPartSize() { + assertThrows(IllegalArgumentException.class, () -> { + new BackblazeDataTransferClient(monitor, backblazeS3ClientFactory, 10, 0); + }); + } + + @Test + public void testInitBucketNameMatches() throws BackblazeCredentialsException, IOException { + createValidBucketList(); + BackblazeDataTransferClient client = createDefaultClient(); + client.init(KEY_ID, APP_KEY, EXPORT_SERVICE); + verify(s3Client, times(0)).createBucket(any(CreateBucketRequest.class)); + } + + @Test + public void testInitBucketCreated() throws BackblazeCredentialsException, IOException { + Bucket bucket = Bucket.builder().name("invalid-name").build(); + when(s3Client.listBuckets()).thenReturn(ListBucketsResponse.builder().buckets(bucket).build()); + BackblazeDataTransferClient client = createDefaultClient(); + client.init(KEY_ID, APP_KEY, EXPORT_SERVICE); + verify(s3Client, times(1)).createBucket(any(CreateBucketRequest.class)); + } + + @Test + public void testInitBucketNameExists() throws BackblazeCredentialsException, IOException { + createEmptyBucketList(); + when(s3Client.createBucket(any(CreateBucketRequest.class))) + .thenThrow(BucketAlreadyExistsException.builder().build()); + BackblazeDataTransferClient client = createDefaultClient(); + + assertThrows(IOException.class, () -> { + try { client.init(KEY_ID, APP_KEY, EXPORT_SERVICE); - // Act - String actualVersionId = client.uploadFile(FILE_KEY, testFile); - // Assert: uploaded in 8 parts - verify(s3Client, times((int) expectedParts)) - .uploadPart(any(UploadPartRequest.class), any(RequestBody.class)); - assertEquals(expectedVersionId, actualVersionId); - } - - @Test(expected = IOException.class) - public void testUploadFileMultipartException() throws BackblazeCredentialsException, IOException { - // Arrange - createValidBucketList(); - when(s3Client.createMultipartUpload(any(CreateMultipartUploadRequest.class))) - .thenReturn(CreateMultipartUploadResponse.builder().uploadId("xyz").build()); - when(s3Client.uploadPart(any(UploadPartRequest.class), any(RequestBody.class))) - .thenThrow(AwsServiceException.builder().build()); - final long fileSize = testFile.length(); - BackblazeDataTransferClient client = - new BackblazeDataTransferClient(monitor, backblazeS3ClientFactory, fileSize / 2, fileSize / 8); + } catch (Exception ex) { + verify(monitor, atLeast(1)).info(any()); + throw ex; + } + }); + } + + @Test + public void testInitErrorCreatingBucket() throws BackblazeCredentialsException, IOException { + createEmptyBucketList(); + when(s3Client.createBucket(any(CreateBucketRequest.class))) + .thenThrow(AwsServiceException.builder().build()); + BackblazeDataTransferClient client = createDefaultClient(); + assertThrows(IOException.class, () -> { + client.init(KEY_ID, APP_KEY, EXPORT_SERVICE); + }); + } + + @Test + public void testInitListBucketException() throws BackblazeCredentialsException, IOException { + when(s3Client.listBuckets()).thenThrow(S3Exception.builder().statusCode(403).build()); + BackblazeDataTransferClient client = createDefaultClient(); + assertThrows(BackblazeCredentialsException.class, () -> { + try { client.init(KEY_ID, APP_KEY, EXPORT_SERVICE); - // Act - client.uploadFile(FILE_KEY, testFile); - // Assert: expected exception - } + } catch (Exception ex) { + verify(s3Client, atLeast(1)).close(); + verify(monitor, atLeast(1)).debug(any()); + throw ex; + } + }); + } + + @Test + public void testUploadFileNonInitialized() throws IOException { + BackblazeDataTransferClient client = createDefaultClient(); + assertThrows(IllegalStateException.class, () -> { + client.uploadFile(FILE_KEY, testFile); + }); + } + + @Test + public void testUploadFileSingle() throws BackblazeCredentialsException, IOException { + final String expectedVersionId = "123"; + createValidBucketList(); + when(s3Client.putObject(any(PutObjectRequest.class), any(RequestBody.class))) + .thenReturn(PutObjectResponse.builder().versionId(expectedVersionId).build()); + BackblazeDataTransferClient client = createDefaultClient(); + client.init(KEY_ID, APP_KEY, EXPORT_SERVICE); + String actualVersionId = client.uploadFile(FILE_KEY, testFile); + verify(s3Client, times(1)).putObject(any(PutObjectRequest.class), any(RequestBody.class)); + assertEquals(expectedVersionId, actualVersionId); + } + + @Test + public void testUploadFileSingleException() throws BackblazeCredentialsException, IOException { + createValidBucketList(); + when(s3Client.putObject(any(PutObjectRequest.class), any(RequestBody.class))) + .thenThrow(AwsServiceException.builder().build()); + BackblazeDataTransferClient client = createDefaultClient(); + client.init(KEY_ID, APP_KEY, EXPORT_SERVICE); + assertThrows(IOException.class, () -> { + client.uploadFile(FILE_KEY, testFile); + }); + } + + @Test + public void testUploadFileMultipart() throws BackblazeCredentialsException, IOException { + final String expectedVersionId = "123"; + createValidBucketList(); + when(s3Client.createMultipartUpload(any(CreateMultipartUploadRequest.class))) + .thenReturn(CreateMultipartUploadResponse.builder().uploadId("xyz").build()); + when(s3Client.uploadPart(any(UploadPartRequest.class), any(RequestBody.class))) + .thenReturn(UploadPartResponse.builder().build()); + when(s3Client.completeMultipartUpload(any(CompleteMultipartUploadRequest.class))) + .thenReturn(CompleteMultipartUploadResponse.builder().versionId(expectedVersionId).build()); + final long partSize = 10; + final long fileSize = testFile.length(); + final long expectedParts = fileSize / partSize + (fileSize % partSize == 0 ? 0 : 1); + BackblazeDataTransferClient client = + new BackblazeDataTransferClient(monitor, backblazeS3ClientFactory, fileSize / 2, partSize); + client.init(KEY_ID, APP_KEY, EXPORT_SERVICE); + String actualVersionId = client.uploadFile(FILE_KEY, testFile); + verify(s3Client, times((int) expectedParts)) + .uploadPart(any(UploadPartRequest.class), any(RequestBody.class)); + assertEquals(expectedVersionId, actualVersionId); + } + + @Test + public void testUploadFileMultipartException() throws BackblazeCredentialsException, IOException { + createValidBucketList(); + when(s3Client.createMultipartUpload(any(CreateMultipartUploadRequest.class))) + .thenReturn(CreateMultipartUploadResponse.builder().uploadId("xyz").build()); + when(s3Client.uploadPart(any(UploadPartRequest.class), any(RequestBody.class))) + .thenThrow(AwsServiceException.builder().build()); + final long fileSize = testFile.length(); + BackblazeDataTransferClient client = + new BackblazeDataTransferClient(monitor, backblazeS3ClientFactory, fileSize / 2, + fileSize / 8); + client.init(KEY_ID, APP_KEY, EXPORT_SERVICE); + assertThrows(IOException.class, () -> { + client.uploadFile(FILE_KEY, testFile); + }); + } } From 97e0e8c0fcedd1e09a445787cade00fc8fac08ca Mon Sep 17 00:00:00 2001 From: chaaran Date: Mon, 8 Aug 2022 16:25:47 +0100 Subject: [PATCH 6/8] remove try catch block inside assertThrows method --- .../BackblazeDataTransferClientTest.java | 23 +++++-------------- 1 file changed, 6 insertions(+), 17 deletions(-) diff --git a/extensions/data-transfer/portability-data-transfer-backblaze/src/test/java/org/datatransferproject/datatransfer/backblaze/common/BackblazeDataTransferClientTest.java b/extensions/data-transfer/portability-data-transfer-backblaze/src/test/java/org/datatransferproject/datatransfer/backblaze/common/BackblazeDataTransferClientTest.java index 6601a9cff..c978f910f 100644 --- a/extensions/data-transfer/portability-data-transfer-backblaze/src/test/java/org/datatransferproject/datatransfer/backblaze/common/BackblazeDataTransferClientTest.java +++ b/extensions/data-transfer/portability-data-transfer-backblaze/src/test/java/org/datatransferproject/datatransfer/backblaze/common/BackblazeDataTransferClientTest.java @@ -17,6 +17,7 @@ package org.datatransferproject.datatransfer.backblaze.common; import static org.junit.Assert.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.Mockito.atLeast; @@ -26,15 +27,11 @@ import java.io.File; import java.io.IOException; - import org.datatransferproject.api.launcher.Monitor; import org.datatransferproject.datatransfer.backblaze.exception.BackblazeCredentialsException; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; - -import static org.junit.jupiter.api.Assertions.assertThrows; - import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.junit.MockitoJUnitRunner; @@ -127,13 +124,9 @@ public void testInitBucketNameExists() throws BackblazeCredentialsException, IOE BackblazeDataTransferClient client = createDefaultClient(); assertThrows(IOException.class, () -> { - try { - client.init(KEY_ID, APP_KEY, EXPORT_SERVICE); - } catch (Exception ex) { - verify(monitor, atLeast(1)).info(any()); - throw ex; - } + client.init(KEY_ID, APP_KEY, EXPORT_SERVICE); }); + verify(monitor, atLeast(1)).info(any()); } @Test @@ -152,14 +145,10 @@ public void testInitListBucketException() throws BackblazeCredentialsException, when(s3Client.listBuckets()).thenThrow(S3Exception.builder().statusCode(403).build()); BackblazeDataTransferClient client = createDefaultClient(); assertThrows(BackblazeCredentialsException.class, () -> { - try { - client.init(KEY_ID, APP_KEY, EXPORT_SERVICE); - } catch (Exception ex) { - verify(s3Client, atLeast(1)).close(); - verify(monitor, atLeast(1)).debug(any()); - throw ex; - } + client.init(KEY_ID, APP_KEY, EXPORT_SERVICE); }); + verify(s3Client, atLeast(1)).close(); + verify(monitor, atLeast(1)).debug(any()); } @Test From ee5e7458598f40b31ea76e5cbf109d89d3997058 Mon Sep 17 00:00:00 2001 From: chaaran Date: Mon, 8 Aug 2022 16:43:14 +0100 Subject: [PATCH 7/8] [2/2] Migrate exception assertion to Junit5 Differential Revision: https://phabricator.intern.facebook.com/D38456882 --- .../videos/BackblazeVideosImporter.java | 2 +- .../BackblazeDataTransferClientTest.java | 35 +++++-------- .../photos/FacebookPhotosExporterTest.java | 29 ++++++----- .../photos/GooglePhotosImporterTest.java | 34 +++++++------ .../media/MicrosoftMediaImporterTest.java | 51 +++++++++++-------- .../photos/MicrosoftPhotosImporterTest.java | 16 ++++-- .../ItemImportResultTest.java | 26 +++++++--- .../transfer/CallableSizeCalculatorTest.java | 9 ++-- 8 files changed, 117 insertions(+), 85 deletions(-) diff --git a/extensions/data-transfer/portability-data-transfer-backblaze/src/main/java/org/datatransferproject/datatransfer/backblaze/videos/BackblazeVideosImporter.java b/extensions/data-transfer/portability-data-transfer-backblaze/src/main/java/org/datatransferproject/datatransfer/backblaze/videos/BackblazeVideosImporter.java index 80fe7e31d..c41238e43 100644 --- a/extensions/data-transfer/portability-data-transfer-backblaze/src/main/java/org/datatransferproject/datatransfer/backblaze/videos/BackblazeVideosImporter.java +++ b/extensions/data-transfer/portability-data-transfer-backblaze/src/main/java/org/datatransferproject/datatransfer/backblaze/videos/BackblazeVideosImporter.java @@ -92,7 +92,7 @@ private ItemImportResult importSingleVideo(BackblazeDataTransferClient b file); return ItemImportResult.success(res, file.length()); } catch (FileNotFoundException e) { - monitor.severe( + monitor.info( () -> String.format("Video resource was missing for id: %s", video.getDataId()), e); return ItemImportResult.error(e, null); } diff --git a/extensions/data-transfer/portability-data-transfer-backblaze/src/test/java/org/datatransferproject/datatransfer/backblaze/common/BackblazeDataTransferClientTest.java b/extensions/data-transfer/portability-data-transfer-backblaze/src/test/java/org/datatransferproject/datatransfer/backblaze/common/BackblazeDataTransferClientTest.java index d90408a86..c978f910f 100644 --- a/extensions/data-transfer/portability-data-transfer-backblaze/src/test/java/org/datatransferproject/datatransfer/backblaze/common/BackblazeDataTransferClientTest.java +++ b/extensions/data-transfer/portability-data-transfer-backblaze/src/test/java/org/datatransferproject/datatransfer/backblaze/common/BackblazeDataTransferClientTest.java @@ -17,6 +17,7 @@ package org.datatransferproject.datatransfer.backblaze.common; import static org.junit.Assert.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.Mockito.atLeast; @@ -26,13 +27,11 @@ import java.io.File; import java.io.IOException; - import org.datatransferproject.api.launcher.Monitor; import org.datatransferproject.datatransfer.backblaze.exception.BackblazeCredentialsException; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; -import org.junit.jupiter.api.Assertions; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.junit.MockitoJUnitRunner; @@ -95,7 +94,7 @@ private BackblazeDataTransferClient createDefaultClient() { @Test public void testWrongPartSize() { - Assertions.assertThrows(IllegalArgumentException.class, () -> { + assertThrows(IllegalArgumentException.class, () -> { new BackblazeDataTransferClient(monitor, backblazeS3ClientFactory, 10, 0); }); } @@ -124,14 +123,10 @@ public void testInitBucketNameExists() throws BackblazeCredentialsException, IOE .thenThrow(BucketAlreadyExistsException.builder().build()); BackblazeDataTransferClient client = createDefaultClient(); - Assertions.assertThrows(IOException.class, () -> { - try { - client.init(KEY_ID, APP_KEY, EXPORT_SERVICE); - } catch (Exception ex) { - verify(monitor, atLeast(1)).info(any()); - throw ex; - } + assertThrows(IOException.class, () -> { + client.init(KEY_ID, APP_KEY, EXPORT_SERVICE); }); + verify(monitor, atLeast(1)).info(any()); } @Test @@ -140,7 +135,7 @@ public void testInitErrorCreatingBucket() throws BackblazeCredentialsException, when(s3Client.createBucket(any(CreateBucketRequest.class))) .thenThrow(AwsServiceException.builder().build()); BackblazeDataTransferClient client = createDefaultClient(); - Assertions.assertThrows(IOException.class, () -> { + assertThrows(IOException.class, () -> { client.init(KEY_ID, APP_KEY, EXPORT_SERVICE); }); } @@ -149,21 +144,17 @@ public void testInitErrorCreatingBucket() throws BackblazeCredentialsException, public void testInitListBucketException() throws BackblazeCredentialsException, IOException { when(s3Client.listBuckets()).thenThrow(S3Exception.builder().statusCode(403).build()); BackblazeDataTransferClient client = createDefaultClient(); - Assertions.assertThrows(BackblazeCredentialsException.class, () -> { - try { - client.init(KEY_ID, APP_KEY, EXPORT_SERVICE); - } catch (Exception ex) { - verify(s3Client, atLeast(1)).close(); - verify(monitor, atLeast(1)).debug(any()); - throw ex; - } + assertThrows(BackblazeCredentialsException.class, () -> { + client.init(KEY_ID, APP_KEY, EXPORT_SERVICE); }); + verify(s3Client, atLeast(1)).close(); + verify(monitor, atLeast(1)).debug(any()); } @Test public void testUploadFileNonInitialized() throws IOException { BackblazeDataTransferClient client = createDefaultClient(); - Assertions.assertThrows(IllegalStateException.class, () -> { + assertThrows(IllegalStateException.class, () -> { client.uploadFile(FILE_KEY, testFile); }); } @@ -188,7 +179,7 @@ public void testUploadFileSingleException() throws BackblazeCredentialsException .thenThrow(AwsServiceException.builder().build()); BackblazeDataTransferClient client = createDefaultClient(); client.init(KEY_ID, APP_KEY, EXPORT_SERVICE); - Assertions.assertThrows(IOException.class, () -> { + assertThrows(IOException.class, () -> { client.uploadFile(FILE_KEY, testFile); }); } @@ -227,7 +218,7 @@ public void testUploadFileMultipartException() throws BackblazeCredentialsExcept new BackblazeDataTransferClient(monitor, backblazeS3ClientFactory, fileSize / 2, fileSize / 8); client.init(KEY_ID, APP_KEY, EXPORT_SERVICE); - Assertions.assertThrows(IOException.class, () -> { + assertThrows(IOException.class, () -> { client.uploadFile(FILE_KEY, testFile); }); } diff --git a/extensions/data-transfer/portability-data-transfer-facebook/src/test/java/org/datatransferproject/transfer/facebook/photos/FacebookPhotosExporterTest.java b/extensions/data-transfer/portability-data-transfer-facebook/src/test/java/org/datatransferproject/transfer/facebook/photos/FacebookPhotosExporterTest.java index 98fd49c88..bcec1b033 100644 --- a/extensions/data-transfer/portability-data-transfer-facebook/src/test/java/org/datatransferproject/transfer/facebook/photos/FacebookPhotosExporterTest.java +++ b/extensions/data-transfer/portability-data-transfer-facebook/src/test/java/org/datatransferproject/transfer/facebook/photos/FacebookPhotosExporterTest.java @@ -16,6 +16,14 @@ package org.datatransferproject.transfer.facebook.photos; +import static com.google.common.truth.Truth.assertThat; +import static org.datatransferproject.transfer.facebook.photos.FacebookPhotosExporter.PHOTO_TOKEN_PREFIX; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNull; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + import com.google.common.collect.Lists; import com.restfb.Connection; import com.restfb.types.Album; @@ -41,17 +49,12 @@ import org.datatransferproject.types.transfer.auth.TokensAndUrlAuthData; import org.junit.Before; import org.junit.Test; +import org.junit.jupiter.api.Assertions; import org.mockito.ArgumentMatchers; import org.mockito.Mockito; -import static com.google.common.truth.Truth.assertThat; -import static org.datatransferproject.transfer.facebook.photos.FacebookPhotosExporter.PHOTO_TOKEN_PREFIX; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNull; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; - public class FacebookPhotosExporterTest { + private static final String ALBUM_NAME = "My Album"; private static final String ALBUM_ID = "1946595"; private static final String ALBUM_DESCRIPTION = "This is a test album"; @@ -181,11 +184,13 @@ public void testSpecifiedAlbums() throws CopyExceptionWithFailureReason { .contains(new IdOnlyContainerResource(ALBUM_ID)); } - @Test(expected = IllegalStateException.class) + @Test public void testIllegalExport() throws CopyExceptionWithFailureReason { - facebookPhotosExporter.export( - uuid, - new TokensAndUrlAuthData("accessToken", null, null), - Optional.of(new ExportInformation(new StringPaginationToken(PHOTO_TOKEN_PREFIX), null))); + assertThrows(IllegalStateException.class, () -> { + facebookPhotosExporter.export( + uuid, + new TokensAndUrlAuthData("accessToken", null, null), + Optional.of(new ExportInformation(new StringPaginationToken(PHOTO_TOKEN_PREFIX), null))); + }); } } diff --git a/extensions/data-transfer/portability-data-transfer-google/src/test/java/org/datatransferproject/datatransfer/google/photos/GooglePhotosImporterTest.java b/extensions/data-transfer/portability-data-transfer-google/src/test/java/org/datatransferproject/datatransfer/google/photos/GooglePhotosImporterTest.java index edafe7939..35ba9a0cc 100644 --- a/extensions/data-transfer/portability-data-transfer-google/src/test/java/org/datatransferproject/datatransfer/google/photos/GooglePhotosImporterTest.java +++ b/extensions/data-transfer/portability-data-transfer-google/src/test/java/org/datatransferproject/datatransfer/google/photos/GooglePhotosImporterTest.java @@ -20,6 +20,7 @@ import static org.junit.Assert.assertNull; import static org.junit.Assert.assertThat; import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.assertThrows; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.ArgumentMatchers.eq; @@ -55,6 +56,7 @@ import org.hamcrest.CoreMatchers; import org.junit.Before; import org.junit.Test; +import org.junit.jupiter.api.Assertions; import org.mockito.ArgumentCaptor; import org.mockito.Mockito; @@ -144,9 +146,9 @@ public void importTwoPhotos() throws Exception { Mockito.when(googlePhotosInterface.uploadPhotoContent(any())).thenReturn("token1", "token2"); BatchMediaItemResponse batchMediaItemResponse = new BatchMediaItemResponse( - new NewMediaItemResult[] { - buildMediaItemResult("token1", Code.OK_VALUE), - buildMediaItemResult("token2", Code.OK_VALUE) + new NewMediaItemResult[]{ + buildMediaItemResult("token1", Code.OK_VALUE), + buildMediaItemResult("token2", Code.OK_VALUE) }); Mockito.when(googlePhotosInterface.createPhotos(any(NewMediaItemUpload.class))) .thenReturn(batchMediaItemResponse); @@ -202,9 +204,9 @@ public void importTwoPhotosWithFailure() throws Exception { Mockito.when(googlePhotosInterface.uploadPhotoContent(any())).thenReturn("token1", "token2"); BatchMediaItemResponse batchMediaItemResponse = new BatchMediaItemResponse( - new NewMediaItemResult[] { - buildMediaItemResult("token1", Code.OK_VALUE), - buildMediaItemResult("token2", Code.UNAUTHENTICATED_VALUE) + new NewMediaItemResult[]{ + buildMediaItemResult("token1", Code.OK_VALUE), + buildMediaItemResult("token2", Code.UNAUTHENTICATED_VALUE) }); Mockito.when(googlePhotosInterface.createPhotos(any(NewMediaItemUpload.class))) .thenReturn(batchMediaItemResponse); @@ -308,7 +310,7 @@ public void importPhotoInTempStore() throws Exception { BatchMediaItemResponse batchMediaItemResponse = new BatchMediaItemResponse( - new NewMediaItemResult[] {buildMediaItemResult("token1", Code.OK_VALUE)}); + new NewMediaItemResult[]{buildMediaItemResult("token1", Code.OK_VALUE)}); Mockito.when(googlePhotosInterface.createPhotos(any(NewMediaItemUpload.class))) .thenReturn(batchMediaItemResponse); @@ -354,7 +356,7 @@ public void importPhotoInTempStoreFailure() throws Exception { BatchMediaItemResponse batchMediaItemResponse = new BatchMediaItemResponse( - new NewMediaItemResult[] {buildMediaItemResult("token1", Code.OK_VALUE)}); + new NewMediaItemResult[]{buildMediaItemResult("token1", Code.OK_VALUE)}); Mockito.when(googlePhotosInterface.createPhotos(any(NewMediaItemUpload.class))) .thenReturn(batchMediaItemResponse); @@ -410,7 +412,7 @@ public void importPhotoFailedToFindAlbum() throws Exception { assertEquals(0, bytes); } - @Test(expected = IOException.class) + @Test public void importPhotoCreatePhotosOtherException() throws Exception { PhotoModel photoModel = new PhotoModel( @@ -438,11 +440,13 @@ public void importPhotoCreatePhotosOtherException() throws Exception { GoogleAlbum responseAlbum = new GoogleAlbum(); Mockito.when(googlePhotosInterface.getAlbum(any())).thenReturn(responseAlbum); - googlePhotosImporter.importPhotoBatch( - uuid, - Mockito.mock(TokensAndUrlAuthData.class), - Lists.newArrayList(photoModel), - executor, - NEW_ALBUM_ID); + assertThrows(IOException.class, () -> { + googlePhotosImporter.importPhotoBatch( + uuid, + Mockito.mock(TokensAndUrlAuthData.class), + Lists.newArrayList(photoModel), + executor, + NEW_ALBUM_ID); + }); } } diff --git a/extensions/data-transfer/portability-data-transfer-microsoft/src/test/java/org/datatransferproject/transfer/microsoft/media/MicrosoftMediaImporterTest.java b/extensions/data-transfer/portability-data-transfer-microsoft/src/test/java/org/datatransferproject/transfer/microsoft/media/MicrosoftMediaImporterTest.java index 88ddc700c..b1d3751d5 100644 --- a/extensions/data-transfer/portability-data-transfer-microsoft/src/test/java/org/datatransferproject/transfer/microsoft/media/MicrosoftMediaImporterTest.java +++ b/extensions/data-transfer/portability-data-transfer-microsoft/src/test/java/org/datatransferproject/transfer/microsoft/media/MicrosoftMediaImporterTest.java @@ -17,8 +17,14 @@ package org.datatransferproject.transfer.microsoft.media; import static com.google.common.truth.Truth.assertThat; +import static org.junit.jupiter.api.Assertions.assertThrows; import static org.mockito.ArgumentMatchers.any; -import static org.mockito.Mockito.*; +import static org.mockito.Mockito.argThat; +import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; @@ -45,19 +51,20 @@ import org.datatransferproject.spi.transfer.types.PermissionDeniedException; import org.datatransferproject.test.types.FakeIdempotentImportExecutor; import org.datatransferproject.transfer.microsoft.common.MicrosoftCredentialFactory; -import org.datatransferproject.transfer.microsoft.driveModels.*; -import org.datatransferproject.types.common.models.media.MediaContainerResource; import org.datatransferproject.types.common.models.media.MediaAlbum; +import org.datatransferproject.types.common.models.media.MediaContainerResource; import org.datatransferproject.types.common.models.photos.PhotoModel; import org.datatransferproject.types.transfer.auth.TokensAndUrlAuthData; import org.junit.Before; import org.junit.Test; +import org.junit.jupiter.api.Assertions; /** * This tests the MicrosoftMediaImporter. As of now, it only tests the number of requests called. * More tests are needed to test request bodies and parameters. */ public class MicrosoftMediaImporterTest { + private static final int CHUNK_SIZE = 32000 * 1024; // 32000KiB private final static String BASE_URL = "https://www.baseurl.com"; private final static UUID uuid = UUID.randomUUID(); @@ -97,7 +104,8 @@ public void testCleanAlbumNames() throws Exception { List albums = ImmutableList.of(new MediaAlbum("id1", "album1.", "This is a fake albumb")); - MediaContainerResource data = new MediaContainerResource(albums, null /*phots*/, null /*videos*/); + MediaContainerResource data = new MediaContainerResource(albums, null /*phots*/, + null /*videos*/); Call call = mock(Call.class); doReturn(call).when(client).newCall(argThat((Request r) -> { @@ -112,7 +120,7 @@ public void testCleanAlbumNames() throws Exception { } return r.url().toString().equals( - "https://www.baseurl.com/v1.0/me/drive/special/photo-video/children") + "https://www.baseurl.com/v1.0/me/drive/special/photo-video/children") && body.contains("album1_"); })); Response response = mock(Response.class); @@ -132,18 +140,19 @@ public void testCleanAlbumNames() throws Exception { assertThat(result).isEqualTo(ImportResult.OK); } - @Test(expected = PermissionDeniedException.class) + @Test public void testImportItemPermissionDenied() throws Exception { List albums = ImmutableList.of(new MediaAlbum("id1", "album1.", "This is a fake albumb")); - MediaContainerResource data = new MediaContainerResource(albums, null /*photos*/, null /*videos*/); + MediaContainerResource data = new MediaContainerResource(albums, null /*photos*/, + null /*videos*/); Call call = mock(Call.class); doReturn(call).when(client).newCall( argThat((Request r) - -> r.url().toString().equals( - "https://www.baseurl.com/v1.0/me/drive/special/photo-video/children"))); + -> r.url().toString().equals( + "https://www.baseurl.com/v1.0/me/drive/special/photo-video/children"))); Response response = mock(Response.class); ResponseBody body = mock(ResponseBody.class); when(body.bytes()) @@ -157,7 +166,9 @@ public void testImportItemPermissionDenied() throws Exception { when(response.body()).thenReturn(body); when(call.execute()).thenReturn(response); - ImportResult result = importer.importItem(uuid, executor, authData, data); + assertThrows(PermissionDeniedException.class, () -> { + ImportResult result = importer.importItem(uuid, executor, authData, data); + }); } @Test @@ -178,8 +189,8 @@ public void testImportItemAllSuccess() throws Exception { Call call = mock(Call.class); doReturn(call).when(client).newCall( argThat((Request r) - -> r.url().toString().equals( - "https://www.baseurl.com/v1.0/me/drive/special/photo-video/children"))); + -> r.url().toString().equals( + "https://www.baseurl.com/v1.0/me/drive/special/photo-video/children"))); Response response = mock(Response.class); ResponseBody body = mock(ResponseBody.class); when(body.bytes()) @@ -199,14 +210,14 @@ public void testImportItemAllSuccess() throws Exception { ResponseBody body2 = mock(ResponseBody.class); when(body2.bytes()) .thenReturn(ResponseBody - .create(MediaType.parse("application/json"), - "{\"uploadUrl\": \"https://scalia.com/link\"}") - .bytes()); + .create(MediaType.parse("application/json"), + "{\"uploadUrl\": \"https://scalia.com/link\"}") + .bytes()); when(body2.string()) .thenReturn(ResponseBody - .create(MediaType.parse("application/json"), - "{\"uploadUrl\": \"https://scalia.com/link\"}") - .string()); + .create(MediaType.parse("application/json"), + "{\"uploadUrl\": \"https://scalia.com/link\"}") + .string()); when(response2.code()).thenReturn(200); when(response2.body()).thenReturn(body2); when(call2.execute()).thenReturn(response2); @@ -218,10 +229,10 @@ public void testImportItemAllSuccess() throws Exception { ResponseBody body3 = mock(ResponseBody.class); when(body3.bytes()) .thenReturn(ResponseBody.create(MediaType.parse("application/json"), "{\"id\": \"rand1\"}") - .bytes()); + .bytes()); when(body3.string()) .thenReturn(ResponseBody.create(MediaType.parse("application/json"), "{\"id\": \"rand1\"}") - .string()); + .string()); when(response3.code()).thenReturn(200); when(response3.body()).thenReturn(body3); when(call3.execute()).thenReturn(response3); diff --git a/extensions/data-transfer/portability-data-transfer-microsoft/src/test/java/org/datatransferproject/transfer/microsoft/photos/MicrosoftPhotosImporterTest.java b/extensions/data-transfer/portability-data-transfer-microsoft/src/test/java/org/datatransferproject/transfer/microsoft/photos/MicrosoftPhotosImporterTest.java index dbe292107..dd4d00090 100644 --- a/extensions/data-transfer/portability-data-transfer-microsoft/src/test/java/org/datatransferproject/transfer/microsoft/photos/MicrosoftPhotosImporterTest.java +++ b/extensions/data-transfer/portability-data-transfer-microsoft/src/test/java/org/datatransferproject/transfer/microsoft/photos/MicrosoftPhotosImporterTest.java @@ -17,8 +17,14 @@ package org.datatransferproject.transfer.microsoft.photos; import static com.google.common.truth.Truth.assertThat; +import static org.junit.jupiter.api.Assertions.assertThrows; import static org.mockito.ArgumentMatchers.any; -import static org.mockito.Mockito.*; +import static org.mockito.Mockito.argThat; +import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; @@ -45,13 +51,13 @@ import org.datatransferproject.spi.transfer.types.PermissionDeniedException; import org.datatransferproject.test.types.FakeIdempotentImportExecutor; import org.datatransferproject.transfer.microsoft.common.MicrosoftCredentialFactory; -import org.datatransferproject.transfer.microsoft.driveModels.*; import org.datatransferproject.types.common.models.photos.PhotoAlbum; import org.datatransferproject.types.common.models.photos.PhotoModel; import org.datatransferproject.types.common.models.photos.PhotosContainerResource; import org.datatransferproject.types.transfer.auth.TokensAndUrlAuthData; import org.junit.Before; import org.junit.Test; +import org.junit.jupiter.api.Assertions; /** @@ -140,7 +146,7 @@ public void testCleanAlbumNames() throws Exception { assertThat(result).isEqualTo(ImportResult.OK); } - @Test(expected = PermissionDeniedException.class) + @Test public void testImportItemPermissionDenied() throws Exception { List albums = ImmutableList.of(new PhotoAlbum("id1", "album1.", "This is a fake albumb")); @@ -162,7 +168,9 @@ public void testImportItemPermissionDenied() throws Exception { when(response.body()).thenReturn(body); when(call.execute()).thenReturn(response); - ImportResult result = importer.importItem(uuid, executor, authData, data); + assertThrows(PermissionDeniedException.class, () -> { + ImportResult result = importer.importItem(uuid, executor, authData, data); + }); } @Test diff --git a/portability-spi-transfer/src/test/java/org/datatransferproject/spi/transfer/idempotentexecutor/ItemImportResultTest.java b/portability-spi-transfer/src/test/java/org/datatransferproject/spi/transfer/idempotentexecutor/ItemImportResultTest.java index 307859032..d477da25e 100644 --- a/portability-spi-transfer/src/test/java/org/datatransferproject/spi/transfer/idempotentexecutor/ItemImportResultTest.java +++ b/portability-spi-transfer/src/test/java/org/datatransferproject/spi/transfer/idempotentexecutor/ItemImportResultTest.java @@ -3,8 +3,10 @@ import static org.datatransferproject.spi.transfer.idempotentexecutor.ItemImportResult.Status.SUCCESS; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; +import static org.junit.jupiter.api.Assertions.assertThrows; import org.junit.Test; +import org.junit.jupiter.api.Assertions; public class ItemImportResultTest { @@ -15,23 +17,31 @@ public void testNullBytesIsOk() { assertFalse(result.hasBytes()); } - @Test(expected = IllegalStateException.class) + @Test public void testNullBytesThrowOnGet() { - ItemImportResult.success("blabla", null).getBytes(); + assertThrows(IllegalStateException.class, () -> { + ItemImportResult.success("blabla", null).getBytes(); + }); } - @Test(expected = NullPointerException.class) + @Test public void testSuccessWithNoData() { - ItemImportResult.success(null, 0L); + assertThrows(NullPointerException.class, () -> { + ItemImportResult.success(null, 0L); + }); } - @Test(expected = IllegalArgumentException.class) + @Test public void testFailWithIncorrectBytes() { - ItemImportResult.success("blabla", -1L); + assertThrows(IllegalArgumentException.class, () -> { + ItemImportResult.success("blabla", -1L); + }); } - @Test(expected = NullPointerException.class) + @Test public void testErrorWithNoException() { - ItemImportResult.error(null, 10L); + assertThrows(NullPointerException.class, () -> { + ItemImportResult.error(null, 10L); + }); } } diff --git a/portability-transfer/src/test/java/org/datatransferproject/transfer/CallableSizeCalculatorTest.java b/portability-transfer/src/test/java/org/datatransferproject/transfer/CallableSizeCalculatorTest.java index c13bc5f98..a6bfb9269 100644 --- a/portability-transfer/src/test/java/org/datatransferproject/transfer/CallableSizeCalculatorTest.java +++ b/portability-transfer/src/test/java/org/datatransferproject/transfer/CallableSizeCalculatorTest.java @@ -25,6 +25,7 @@ import org.datatransferproject.types.common.models.photos.PhotoModel; import org.junit.Before; import org.junit.Test; +import org.junit.jupiter.api.Assertions; public class CallableSizeCalculatorTest { @@ -80,12 +81,14 @@ public void testSizeIsNotProvided() throws Exception { Truth.assertThat(nextByte).isEqualTo(-1); } - @Test(expected = IOException.class) + @Test public void testExceptionIsThrown() throws Exception { when(connectionProvider.getInputStreamForItem(any(), any())) .thenThrow(new IOException("oh no!")); - new CallableSizeCalculator(jobId, connectionProvider, - Collections.singleton(createItem("1-3242"))).call(); + Assertions.assertThrows(IOException.class, () -> { + new CallableSizeCalculator(jobId, connectionProvider, + Collections.singleton(createItem("1-3242"))).call(); + }); } private DownloadableItem createItem(String dataId) { From 9c726482f4a9448f93f7be9c9b8b3ab934a5d2b3 Mon Sep 17 00:00:00 2001 From: chaaran Date: Thu, 11 Aug 2022 12:07:39 +0100 Subject: [PATCH 8/8] removed unused imports --- .../transfer/facebook/photos/FacebookPhotosExporterTest.java | 1 - .../datatransfer/google/photos/GooglePhotosImporterTest.java | 1 - .../transfer/microsoft/media/MicrosoftMediaImporterTest.java | 1 - .../microsoft/photos/MicrosoftPhotosImporterTest.java | 1 - .../transfer/idempotentexecutor/ItemImportResultTest.java | 1 - .../transfer/CallableSizeCalculatorTest.java | 5 +++-- 6 files changed, 3 insertions(+), 7 deletions(-) diff --git a/extensions/data-transfer/portability-data-transfer-facebook/src/test/java/org/datatransferproject/transfer/facebook/photos/FacebookPhotosExporterTest.java b/extensions/data-transfer/portability-data-transfer-facebook/src/test/java/org/datatransferproject/transfer/facebook/photos/FacebookPhotosExporterTest.java index bcec1b033..270ca099a 100644 --- a/extensions/data-transfer/portability-data-transfer-facebook/src/test/java/org/datatransferproject/transfer/facebook/photos/FacebookPhotosExporterTest.java +++ b/extensions/data-transfer/portability-data-transfer-facebook/src/test/java/org/datatransferproject/transfer/facebook/photos/FacebookPhotosExporterTest.java @@ -49,7 +49,6 @@ import org.datatransferproject.types.transfer.auth.TokensAndUrlAuthData; import org.junit.Before; import org.junit.Test; -import org.junit.jupiter.api.Assertions; import org.mockito.ArgumentMatchers; import org.mockito.Mockito; diff --git a/extensions/data-transfer/portability-data-transfer-google/src/test/java/org/datatransferproject/datatransfer/google/photos/GooglePhotosImporterTest.java b/extensions/data-transfer/portability-data-transfer-google/src/test/java/org/datatransferproject/datatransfer/google/photos/GooglePhotosImporterTest.java index 35ba9a0cc..76997565b 100644 --- a/extensions/data-transfer/portability-data-transfer-google/src/test/java/org/datatransferproject/datatransfer/google/photos/GooglePhotosImporterTest.java +++ b/extensions/data-transfer/portability-data-transfer-google/src/test/java/org/datatransferproject/datatransfer/google/photos/GooglePhotosImporterTest.java @@ -56,7 +56,6 @@ import org.hamcrest.CoreMatchers; import org.junit.Before; import org.junit.Test; -import org.junit.jupiter.api.Assertions; import org.mockito.ArgumentCaptor; import org.mockito.Mockito; diff --git a/extensions/data-transfer/portability-data-transfer-microsoft/src/test/java/org/datatransferproject/transfer/microsoft/media/MicrosoftMediaImporterTest.java b/extensions/data-transfer/portability-data-transfer-microsoft/src/test/java/org/datatransferproject/transfer/microsoft/media/MicrosoftMediaImporterTest.java index b1d3751d5..ce672ec73 100644 --- a/extensions/data-transfer/portability-data-transfer-microsoft/src/test/java/org/datatransferproject/transfer/microsoft/media/MicrosoftMediaImporterTest.java +++ b/extensions/data-transfer/portability-data-transfer-microsoft/src/test/java/org/datatransferproject/transfer/microsoft/media/MicrosoftMediaImporterTest.java @@ -57,7 +57,6 @@ import org.datatransferproject.types.transfer.auth.TokensAndUrlAuthData; import org.junit.Before; import org.junit.Test; -import org.junit.jupiter.api.Assertions; /** * This tests the MicrosoftMediaImporter. As of now, it only tests the number of requests called. diff --git a/extensions/data-transfer/portability-data-transfer-microsoft/src/test/java/org/datatransferproject/transfer/microsoft/photos/MicrosoftPhotosImporterTest.java b/extensions/data-transfer/portability-data-transfer-microsoft/src/test/java/org/datatransferproject/transfer/microsoft/photos/MicrosoftPhotosImporterTest.java index dd4d00090..63fc36712 100644 --- a/extensions/data-transfer/portability-data-transfer-microsoft/src/test/java/org/datatransferproject/transfer/microsoft/photos/MicrosoftPhotosImporterTest.java +++ b/extensions/data-transfer/portability-data-transfer-microsoft/src/test/java/org/datatransferproject/transfer/microsoft/photos/MicrosoftPhotosImporterTest.java @@ -57,7 +57,6 @@ import org.datatransferproject.types.transfer.auth.TokensAndUrlAuthData; import org.junit.Before; import org.junit.Test; -import org.junit.jupiter.api.Assertions; /** diff --git a/portability-spi-transfer/src/test/java/org/datatransferproject/spi/transfer/idempotentexecutor/ItemImportResultTest.java b/portability-spi-transfer/src/test/java/org/datatransferproject/spi/transfer/idempotentexecutor/ItemImportResultTest.java index d477da25e..ae4607d08 100644 --- a/portability-spi-transfer/src/test/java/org/datatransferproject/spi/transfer/idempotentexecutor/ItemImportResultTest.java +++ b/portability-spi-transfer/src/test/java/org/datatransferproject/spi/transfer/idempotentexecutor/ItemImportResultTest.java @@ -6,7 +6,6 @@ import static org.junit.jupiter.api.Assertions.assertThrows; import org.junit.Test; -import org.junit.jupiter.api.Assertions; public class ItemImportResultTest { diff --git a/portability-transfer/src/test/java/org/datatransferproject/transfer/CallableSizeCalculatorTest.java b/portability-transfer/src/test/java/org/datatransferproject/transfer/CallableSizeCalculatorTest.java index a6bfb9269..688d41dd5 100644 --- a/portability-transfer/src/test/java/org/datatransferproject/transfer/CallableSizeCalculatorTest.java +++ b/portability-transfer/src/test/java/org/datatransferproject/transfer/CallableSizeCalculatorTest.java @@ -2,6 +2,7 @@ import static org.apache.commons.lang3.RandomUtils.nextInt; import static org.apache.commons.lang3.RandomUtils.nextLong; +import static org.junit.jupiter.api.Assertions.assertThrows; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.mock; @@ -25,7 +26,7 @@ import org.datatransferproject.types.common.models.photos.PhotoModel; import org.junit.Before; import org.junit.Test; -import org.junit.jupiter.api.Assertions; + public class CallableSizeCalculatorTest { @@ -85,7 +86,7 @@ public void testSizeIsNotProvided() throws Exception { public void testExceptionIsThrown() throws Exception { when(connectionProvider.getInputStreamForItem(any(), any())) .thenThrow(new IOException("oh no!")); - Assertions.assertThrows(IOException.class, () -> { + assertThrows(IOException.class, () -> { new CallableSizeCalculator(jobId, connectionProvider, Collections.singleton(createItem("1-3242"))).call(); });