diff --git a/sdk/storage/azure-storage-file-share/assets.json b/sdk/storage/azure-storage-file-share/assets.json index f8771c6beb071..9755f80a68ee7 100644 --- a/sdk/storage/azure-storage-file-share/assets.json +++ b/sdk/storage/azure-storage-file-share/assets.json @@ -2,5 +2,5 @@ "AssetsRepo": "Azure/azure-sdk-assets", "AssetsRepoPrefixPath": "java", "TagPrefix": "java/storage/azure-storage-file-share", - "Tag": "java/storage/azure-storage-file-share_78284f35a4" + "Tag": "java/storage/azure-storage-file-share_1688f0d091" } diff --git a/sdk/storage/azure-storage-file-share/src/test/java/com/azure/storage/file/share/DirectoryAsyncApiTests.java b/sdk/storage/azure-storage-file-share/src/test/java/com/azure/storage/file/share/DirectoryAsyncApiTests.java index e66d4bf62e90d..214cb5348a6f2 100644 --- a/sdk/storage/azure-storage-file-share/src/test/java/com/azure/storage/file/share/DirectoryAsyncApiTests.java +++ b/sdk/storage/azure-storage-file-share/src/test/java/com/azure/storage/file/share/DirectoryAsyncApiTests.java @@ -27,6 +27,7 @@ import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; +import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; import reactor.test.StepVerifier; @@ -194,16 +195,20 @@ public void createIfNotExistsDirectoryError() { @Test public void createIfNotExistsDirectoryThatAlreadyExists() { ShareDirectoryAsyncClient client = primaryDirectoryAsyncClient.getDirectoryAsyncClient(generatePathName()); - Response initialResponse - = client.createIfNotExistsWithResponse(new ShareDirectoryCreateOptions()).block(); - - Response secondResponse - = client.createIfNotExistsWithResponse(new ShareDirectoryCreateOptions()).block(); + Mono> initialResponseMono + = client.createIfNotExistsWithResponse(new ShareDirectoryCreateOptions()); + Mono> secondResponseMono + = client.createIfNotExistsWithResponse(new ShareDirectoryCreateOptions()); + + StepVerifier.create(initialResponseMono).assertNext(initialResponse -> { + assertNotNull(initialResponse); + FileShareTestHelper.assertResponseStatusCode(initialResponse, 201); + }).verifyComplete(); - assertNotNull(initialResponse); - assertNotNull(secondResponse); - FileShareTestHelper.assertResponseStatusCode(initialResponse, 201); - FileShareTestHelper.assertResponseStatusCode(secondResponse, 409); + StepVerifier.create(secondResponseMono).assertNext(secondResponse -> { + assertNotNull(secondResponse); + FileShareTestHelper.assertResponseStatusCode(secondResponse, 409); + }).verifyComplete(); } @Test @@ -259,8 +264,7 @@ public void createIfNotExistsDirectoryWithFilePermKey() { @Test public void deleteDirectory() { - primaryDirectoryAsyncClient.create().block(); - StepVerifier.create(primaryDirectoryAsyncClient.deleteWithResponse()) + StepVerifier.create(primaryDirectoryAsyncClient.create().then(primaryDirectoryAsyncClient.deleteWithResponse())) .assertNext(it -> FileShareTestHelper.assertResponseStatusCode(it, 202)) .verifyComplete(); } @@ -274,14 +278,15 @@ public void deleteDirectoryError() { @Test public void deleteIfExistsDirectoryMin() { - primaryDirectoryAsyncClient.create().block(); - assertEquals(Boolean.TRUE, primaryDirectoryAsyncClient.deleteIfExists().block()); + StepVerifier.create(primaryDirectoryAsyncClient.create().then(primaryDirectoryAsyncClient.deleteIfExists())) + .assertNext(result -> assertEquals(Boolean.TRUE, result)) + .verifyComplete(); } @Test public void deleteIfExistsDirectory() { - primaryDirectoryAsyncClient.create().block(); - StepVerifier.create(primaryDirectoryAsyncClient.deleteIfExistsWithResponse()) + StepVerifier + .create(primaryDirectoryAsyncClient.create().then(primaryDirectoryAsyncClient.deleteIfExistsWithResponse())) .assertNext(it -> FileShareTestHelper.assertResponseStatusCode(it, 202)) .verifyComplete(); } @@ -290,43 +295,51 @@ public void deleteIfExistsDirectory() { public void deleteIfExistsDirectoryThatDoesNotExist() { ShareDirectoryAsyncClient client = primaryDirectoryAsyncClient.getDirectoryAsyncClient(generatePathName()); - Response response = client.deleteIfExistsWithResponse(null).block(); - assertNotNull(response); - assertFalse(response.getValue()); - FileShareTestHelper.assertResponseStatusCode(response, 404); - Boolean exists = client.exists().block(); - assertTrue(exists != null && !exists); + StepVerifier.create(client.deleteIfExistsWithResponse(null)).assertNext(response -> { + assertNotNull(response); + assertFalse(response.getValue()); + FileShareTestHelper.assertResponseStatusCode(response, 404); + }).verifyComplete(); + + StepVerifier.create(client.exists()) + .assertNext(exists -> assertTrue(exists != null && !exists)) + .verifyComplete(); } @Test public void deleteIfExistsDirectoryThatWasAlreadyDeleted() { - primaryDirectoryAsyncClient.create().block(); - - Response initialResponse = primaryDirectoryAsyncClient.deleteIfExistsWithResponse().block(); - Response secondResponse = primaryDirectoryAsyncClient.deleteIfExistsWithResponse().block(); + StepVerifier + .create(primaryDirectoryAsyncClient.create().then(primaryDirectoryAsyncClient.deleteIfExistsWithResponse())) + .assertNext(initialResponse -> { + assertNotNull(initialResponse); + FileShareTestHelper.assertResponseStatusCode(initialResponse, 202); + assertTrue(initialResponse.getValue()); + }) + .verifyComplete(); - assertNotNull(initialResponse); - assertNotNull(secondResponse); - FileShareTestHelper.assertResponseStatusCode(initialResponse, 202); - FileShareTestHelper.assertResponseStatusCode(secondResponse, 404); - assertTrue(initialResponse.getValue()); - assertFalse(secondResponse.getValue()); + StepVerifier.create(primaryDirectoryAsyncClient.deleteIfExistsWithResponse()).assertNext(secondResponse -> { + assertNotNull(secondResponse); + FileShareTestHelper.assertResponseStatusCode(secondResponse, 404); + assertFalse(secondResponse.getValue()); + }).verifyComplete(); } @Test public void getProperties() { - primaryDirectoryAsyncClient.create().block(); - StepVerifier.create(primaryDirectoryAsyncClient.getPropertiesWithResponse()).assertNext(it -> { - FileShareTestHelper.assertResponseStatusCode(it, 200); - assertNotNull(it.getValue().getSmbProperties()); - assertNotNull(it.getValue().getSmbProperties().getFilePermissionKey()); - assertNotNull(it.getValue().getSmbProperties().getNtfsFileAttributes()); - assertNotNull(it.getValue().getSmbProperties().getFileLastWriteTime()); - assertNotNull(it.getValue().getSmbProperties().getFileCreationTime()); - assertNotNull(it.getValue().getSmbProperties().getFileChangeTime()); - assertNotNull(it.getValue().getSmbProperties().getParentId()); - assertNotNull(it.getValue().getSmbProperties().getFileId()); - }).verifyComplete(); + StepVerifier + .create(primaryDirectoryAsyncClient.create().then(primaryDirectoryAsyncClient.getPropertiesWithResponse())) + .assertNext(it -> { + FileShareTestHelper.assertResponseStatusCode(it, 200); + assertNotNull(it.getValue().getSmbProperties()); + assertNotNull(it.getValue().getSmbProperties().getFilePermissionKey()); + assertNotNull(it.getValue().getSmbProperties().getNtfsFileAttributes()); + assertNotNull(it.getValue().getSmbProperties().getFileLastWriteTime()); + assertNotNull(it.getValue().getSmbProperties().getFileCreationTime()); + assertNotNull(it.getValue().getSmbProperties().getFileChangeTime()); + assertNotNull(it.getValue().getSmbProperties().getParentId()); + assertNotNull(it.getValue().getSmbProperties().getFileId()); + }) + .verifyComplete(); } @Test @@ -338,9 +351,8 @@ public void getPropertiesError() { @Test public void setPropertiesFilePermission() { - primaryDirectoryAsyncClient.createWithResponse(null, null, null).block(); - StepVerifier.create(primaryDirectoryAsyncClient.setPropertiesWithResponse(null, FILE_PERMISSION)) - .assertNext(it -> { + StepVerifier.create(primaryDirectoryAsyncClient.createWithResponse(null, null, null) + .then(primaryDirectoryAsyncClient.setPropertiesWithResponse(null, FILE_PERMISSION))).assertNext(it -> { FileShareTestHelper.assertResponseStatusCode(it, 200); assertNotNull(it.getValue().getSmbProperties()); assertNotNull(it.getValue().getSmbProperties().getFilePermissionKey()); @@ -350,8 +362,7 @@ public void setPropertiesFilePermission() { assertNotNull(it.getValue().getSmbProperties().getFileChangeTime()); assertNotNull(it.getValue().getSmbProperties().getParentId()); assertNotNull(it.getValue().getSmbProperties().getFileId()); - }) - .verifyComplete(); + }).verifyComplete(); } @RequiredServiceVersion(clazz = ShareServiceVersion.class, min = "2024-11-04") @@ -378,9 +389,8 @@ public void setPropertiesFilePermissionKey() { smbProperties.setFileCreationTime(testResourceNamer.now()) .setFileLastWriteTime(testResourceNamer.now()) .setFilePermissionKey(filePermissionKey); - primaryDirectoryAsyncClient.createWithResponse(null, null, null).block(); - StepVerifier.create(primaryDirectoryAsyncClient.setPropertiesWithResponse(smbProperties, null)) - .assertNext(it -> { + StepVerifier.create(primaryDirectoryAsyncClient.createWithResponse(null, null, null) + .then(primaryDirectoryAsyncClient.setPropertiesWithResponse(smbProperties, null))).assertNext(it -> { FileShareTestHelper.assertResponseStatusCode(it, 200); assertNotNull(it.getValue().getSmbProperties()); assertNotNull(it.getValue().getSmbProperties().getFilePermissionKey()); @@ -390,13 +400,12 @@ public void setPropertiesFilePermissionKey() { assertNotNull(it.getValue().getSmbProperties().getFileChangeTime()); assertNotNull(it.getValue().getSmbProperties().getParentId()); assertNotNull(it.getValue().getSmbProperties().getFileId()); - }) - .verifyComplete(); + }).verifyComplete(); } @Test public void setPropertiesError() { - primaryDirectoryAsyncClient.createWithResponse(null, null, null).block(); + primaryDirectoryAsyncClient.createWithResponse(null, null, null); FileSmbProperties properties = new FileSmbProperties().setFilePermissionKey("filePermissionKey"); StepVerifier.create(primaryDirectoryAsyncClient.setProperties(properties, FILE_PERMISSION)) .verifyErrorSatisfies(it -> assertInstanceOf(IllegalArgumentException.class, it)); @@ -407,9 +416,14 @@ public void setPropertiesError() { .verifyErrorSatisfies(it -> assertInstanceOf(IllegalArgumentException.class, it)); } + @Test public void setMetadata() { - primaryDirectoryAsyncClient.createWithResponse(null, null, testMetadata).block(); + StepVerifier.create(primaryDirectoryAsyncClient.createWithResponse(null, null, testMetadata)) + .assertNext(response -> FileShareTestHelper.assertResponseStatusCode(response, 201)) + .verifyComplete(); + Map updatedMetadata = Collections.singletonMap("update", "value"); + StepVerifier.create(primaryDirectoryAsyncClient.getPropertiesWithResponse()).assertNext(it -> { boolean allEqual = it.getValue() .getMetadata() @@ -422,6 +436,7 @@ public void setMetadata() { StepVerifier.create(primaryDirectoryAsyncClient.setMetadataWithResponse(updatedMetadata)) .assertNext(it -> FileShareTestHelper.assertResponseStatusCode(it, 200)) .verifyComplete(); + StepVerifier.create(primaryDirectoryAsyncClient.getPropertiesWithResponse()).assertNext(it -> { boolean allEqual = it.getValue() .getMetadata() @@ -434,9 +449,9 @@ public void setMetadata() { @Test public void setMetadataError() { - primaryDirectoryAsyncClient.create().block(); - Map errorMetadata = Collections.singletonMap("", "value"); - StepVerifier.create(primaryDirectoryAsyncClient.setMetadata(errorMetadata)) + StepVerifier + .create(primaryDirectoryAsyncClient.create() + .then(primaryDirectoryAsyncClient.setMetadata(Collections.singletonMap("", "value")))) .verifyErrorSatisfies(it -> FileShareTestHelper.assertExceptionStatusCodeAndMessage(it, 400, ShareErrorCode.EMPTY_METADATA_KEY)); } @@ -444,27 +459,29 @@ public void setMetadataError() { @ParameterizedTest @MethodSource("com.azure.storage.file.share.FileShareTestHelper#listFilesAndDirectoriesSupplier") public void listFilesAndDirectories(String[] expectedFiles, String[] expectedDirectories) { - primaryDirectoryAsyncClient.create().block(); - for (String expectedFile : expectedFiles) { - primaryDirectoryAsyncClient.createFile(expectedFile, 2).block(); - } - - for (String expectedDirectory : expectedDirectories) { - primaryDirectoryAsyncClient.createSubdirectory(expectedDirectory).block(); - } - - List foundFiles = new ArrayList<>(); - List foundDirectories = new ArrayList<>(); - for (ShareFileItem fileRef : primaryDirectoryAsyncClient.listFilesAndDirectories().toIterable()) { - if (fileRef.isDirectory()) { - foundDirectories.add(fileRef.getName()); - } else { - foundFiles.add(fileRef.getName()); - } - } + Mono createFilesAndDirectories = primaryDirectoryAsyncClient.create() + .thenMany(Flux.fromArray(expectedFiles).flatMap(file -> primaryDirectoryAsyncClient.createFile(file, 2))) + .thenMany(Flux.fromArray(expectedDirectories) + .flatMap(directory -> primaryDirectoryAsyncClient.createSubdirectory(directory))) + .then(); - assertArrayEquals(expectedFiles, foundFiles.toArray()); - assertArrayEquals(expectedDirectories, foundDirectories.toArray()); + StepVerifier + .create( + createFilesAndDirectories.thenMany(primaryDirectoryAsyncClient.listFilesAndDirectories().collectList())) + .assertNext(fileItems -> { + List foundFiles = new ArrayList<>(); + List foundDirectories = new ArrayList<>(); + for (ShareFileItem fileRef : fileItems) { + if (fileRef.isDirectory()) { + foundDirectories.add(fileRef.getName()); + } else { + foundFiles.add(fileRef.getName()); + } + } + assertArrayEquals(expectedFiles, foundFiles.toArray()); + assertArrayEquals(expectedDirectories, foundDirectories.toArray()); + }) + .verifyComplete(); } /** @@ -479,22 +496,25 @@ public void listFilesAndDirectories(String[] expectedFiles, String[] expectedDir @ParameterizedTest @MethodSource("listFilesAndDirectoriesArgsSupplier") public void listFilesAndDirectoriesArgs(String extraPrefix, Integer maxResults, int numOfResults) { - primaryDirectoryAsyncClient.create().block(); Queue nameList = new LinkedList<>(); String dirPrefix = generatePathName(); - for (int i = 0; i < 2; i++) { - ShareDirectoryAsyncClient subDirClient = primaryDirectoryAsyncClient.getSubdirectoryClient(dirPrefix + i); - subDirClient.create().block(); - for (int j = 0; j < 2; j++) { - int num = i * 2 + j + 3; - subDirClient.createFile(dirPrefix + num, 1024).block(); - } - } - primaryDirectoryAsyncClient.createFile(dirPrefix + 2, 1024).block(); - for (int i = 0; i < 3; i++) { - nameList.add(dirPrefix + i); - } - StepVerifier.create(primaryDirectoryAsyncClient.listFilesAndDirectories(prefix + extraPrefix, maxResults)) + + Mono createDirectoriesAndFiles + = primaryDirectoryAsyncClient.create().thenMany(Flux.range(0, 2).flatMap(i -> { + ShareDirectoryAsyncClient subDirClient + = primaryDirectoryAsyncClient.getSubdirectoryClient(dirPrefix + i); + return subDirClient.create().thenMany(Flux.range(0, 2).flatMap(j -> { + int num = i * 2 + j + 3; + return subDirClient.createFile(dirPrefix + num, 1024); + })); + })) + .then(primaryDirectoryAsyncClient.createFile(dirPrefix + 2, 1024)) + .thenMany(Flux.range(0, 3).doOnNext(i -> nameList.add(dirPrefix + i))) + .then(); + + StepVerifier + .create(createDirectoriesAndFiles + .thenMany(primaryDirectoryAsyncClient.listFilesAndDirectories(prefix + extraPrefix, maxResults))) .thenConsumeWhile(it -> Objects.equals(it.getName(), nameList.remove())) .verifyComplete(); @@ -511,8 +531,8 @@ private static Stream listFilesAndDirectoriesArgsSupplier() { @ParameterizedTest @MethodSource("listHandlesSupplier") public void listHandles(Integer maxResults, boolean recursive) { - primaryDirectoryAsyncClient.create().block(); - StepVerifier.create(primaryDirectoryAsyncClient.listHandles(maxResults, recursive)).verifyComplete(); + StepVerifier.create(primaryDirectoryAsyncClient.create() + .thenMany(primaryDirectoryAsyncClient.listHandles(maxResults, recursive))).verifyComplete(); } private static Stream listHandlesSupplier() { @@ -529,77 +549,81 @@ public void listHandlesError() { @RequiredServiceVersion(clazz = ShareServiceVersion.class, min = "2019-07-07") @Test public void forceCloseHandleMin() { - primaryDirectoryAsyncClient.create().block(); - StepVerifier.create(primaryDirectoryAsyncClient.forceCloseHandle("1")).assertNext(it -> { - assertEquals(it.getClosedHandles(), 0); - assertEquals(it.getFailedHandles(), 0); - }).verifyComplete(); + StepVerifier + .create(primaryDirectoryAsyncClient.create().then(primaryDirectoryAsyncClient.forceCloseHandle("1"))) + .assertNext(it -> { + assertEquals(it.getClosedHandles(), 0); + assertEquals(it.getFailedHandles(), 0); + }) + .verifyComplete(); } @Test public void forceCloseHandleInvalidHandleID() { - primaryDirectoryAsyncClient.create().block(); - - StepVerifier.create(primaryDirectoryAsyncClient.forceCloseHandle("invalidHandleId")) + StepVerifier + .create(primaryDirectoryAsyncClient.create() + .then(primaryDirectoryAsyncClient.forceCloseHandle("invalidHandleId"))) .verifyErrorSatisfies(it -> assertInstanceOf(ShareStorageException.class, it)); } @RequiredServiceVersion(clazz = ShareServiceVersion.class, min = "2019-07-07") @Test public void forceCloseAllHandlesMin() { - primaryDirectoryAsyncClient.create().block(); - - StepVerifier.create(primaryDirectoryAsyncClient.forceCloseAllHandles(false)).assertNext(it -> { - assertEquals(it.getClosedHandles(), 0); - assertEquals(it.getFailedHandles(), 0); - }).verifyComplete(); + StepVerifier + .create(primaryDirectoryAsyncClient.create().then(primaryDirectoryAsyncClient.forceCloseAllHandles(false))) + .assertNext(it -> { + assertEquals(it.getClosedHandles(), 0); + assertEquals(it.getFailedHandles(), 0); + }) + .verifyComplete(); } @Test public void createSubDirectory() { - primaryDirectoryAsyncClient.create().block(); StepVerifier .create( - primaryDirectoryAsyncClient.createSubdirectoryWithResponse("testCreateSubDirectory", null, null, null)) + primaryDirectoryAsyncClient.create() + .then(primaryDirectoryAsyncClient.createSubdirectoryWithResponse("testCreateSubDirectory", null, + null, null))) .assertNext(it -> FileShareTestHelper.assertResponseStatusCode(it, 201)) .verifyComplete(); } @Test public void createSubDirectoryInvalidName() { - primaryDirectoryAsyncClient.create().block(); - StepVerifier.create(primaryDirectoryAsyncClient.createSubdirectory("test/subdirectory")) + StepVerifier + .create(primaryDirectoryAsyncClient.create() + .then(primaryDirectoryAsyncClient.createSubdirectory("test/subdirectory"))) .verifyErrorSatisfies(it -> FileShareTestHelper.assertExceptionStatusCodeAndMessage(it, 404, ShareErrorCode.PARENT_NOT_FOUND)); } @Test public void createSubDirectoryMetadata() { - primaryDirectoryAsyncClient.create().block(); StepVerifier - .create(primaryDirectoryAsyncClient.createSubdirectoryWithResponse("testCreateSubDirectory", null, null, - testMetadata)) + .create(primaryDirectoryAsyncClient.create() + .then(primaryDirectoryAsyncClient.createSubdirectoryWithResponse("testCreateSubDirectory", null, null, + testMetadata))) .assertNext(it -> FileShareTestHelper.assertResponseStatusCode(it, 201)) .verifyComplete(); } @Test public void createSubDirectoryMetadataError() { - primaryDirectoryAsyncClient.create().block(); StepVerifier - .create(primaryDirectoryAsyncClient.createSubdirectoryWithResponse("testsubdirectory", null, null, - Collections.singletonMap("", "value"))) + .create(primaryDirectoryAsyncClient.create() + .then(primaryDirectoryAsyncClient.createSubdirectoryWithResponse("testsubdirectory", null, null, + Collections.singletonMap("", "value")))) .verifyErrorSatisfies(it -> FileShareTestHelper.assertExceptionStatusCodeAndMessage(it, 400, ShareErrorCode.EMPTY_METADATA_KEY)); - } @Test public void createSubDirectoryFilePermission() { - primaryDirectoryAsyncClient.create().block(); StepVerifier - .create(primaryDirectoryAsyncClient.createSubdirectoryWithResponse("testCreateSubDirectory", null, - FILE_PERMISSION, null)) + .create(primaryDirectoryAsyncClient.create() + .then(primaryDirectoryAsyncClient.createSubdirectoryWithResponse("testCreateSubDirectory", null, + FILE_PERMISSION, null))) .assertNext(it -> FileShareTestHelper.assertResponseStatusCode(it, 201)) .verifyComplete(); } @@ -610,28 +634,30 @@ public void createSubDirectoryFilePermKey() { smbProperties.setFileCreationTime(testResourceNamer.now()) .setFileLastWriteTime(testResourceNamer.now()) .setFilePermissionKey(filePermissionKey); - primaryDirectoryAsyncClient.create().block(); + StepVerifier - .create(primaryDirectoryAsyncClient.createSubdirectoryWithResponse("testCreateSubDirectory", smbProperties, - null, null)) + .create(primaryDirectoryAsyncClient.create() + .then(primaryDirectoryAsyncClient.createSubdirectoryWithResponse("testCreateSubDirectory", + smbProperties, null, null))) .assertNext(it -> FileShareTestHelper.assertResponseStatusCode(it, 201)) .verifyComplete(); } @Test public void createIfNotExistsSubDirectory() { - primaryDirectoryAsyncClient.create().block(); StepVerifier - .create(primaryDirectoryAsyncClient.createSubdirectoryIfNotExistsWithResponse("testCreateSubDirectory", - new ShareDirectoryCreateOptions())) + .create(primaryDirectoryAsyncClient.create() + .then(primaryDirectoryAsyncClient.createSubdirectoryIfNotExistsWithResponse("testCreateSubDirectory", + new ShareDirectoryCreateOptions()))) .assertNext(it -> FileShareTestHelper.assertResponseStatusCode(it, 201)) .verifyComplete(); } @Test public void createIfNotExistsSubDirectoryInvalidName() { - primaryDirectoryAsyncClient.create().block(); - StepVerifier.create(primaryDirectoryAsyncClient.createSubdirectoryIfNotExists("test/subdirectory")) + StepVerifier + .create(primaryDirectoryAsyncClient.create() + .then(primaryDirectoryAsyncClient.createSubdirectoryIfNotExists("test/subdirectory"))) .verifyErrorSatisfies(it -> FileShareTestHelper.assertExceptionStatusCodeAndMessage(it, 404, ShareErrorCode.PARENT_NOT_FOUND)); } @@ -640,47 +666,50 @@ public void createIfNotExistsSubDirectoryInvalidName() { public void createIfNotExistsSubDirectoryThatAlreadyExists() { String subdirectoryName = generatePathName(); ShareDirectoryAsyncClient client = primaryDirectoryAsyncClient.getDirectoryAsyncClient(generatePathName()); - client.create().block(); - Response initialResponse - = client.createSubdirectoryIfNotExistsWithResponse(subdirectoryName, new ShareDirectoryCreateOptions()) - .block(); - Response secondResponse - = client.createSubdirectoryIfNotExistsWithResponse(subdirectoryName, new ShareDirectoryCreateOptions()) - .block(); + Mono> initialResponseMono + = client.createSubdirectoryIfNotExistsWithResponse(subdirectoryName, new ShareDirectoryCreateOptions()); - assertNotNull(initialResponse); - assertNotNull(secondResponse); - FileShareTestHelper.assertResponseStatusCode(initialResponse, 201); - FileShareTestHelper.assertResponseStatusCode(secondResponse, 409); + Mono> secondResponseMono + = client.createSubdirectoryIfNotExistsWithResponse(subdirectoryName, new ShareDirectoryCreateOptions()); + + StepVerifier.create(client.create().then(initialResponseMono)).assertNext(initialResponse -> { + assertNotNull(initialResponse); + FileShareTestHelper.assertResponseStatusCode(initialResponse, 201); + }).verifyComplete(); + + StepVerifier.create(secondResponseMono).assertNext(secondResponse -> { + assertNotNull(secondResponse); + FileShareTestHelper.assertResponseStatusCode(secondResponse, 409); + }).verifyComplete(); } @Test public void createIfNotExistsSubDirectoryMetadata() { - primaryDirectoryAsyncClient.create().block(); StepVerifier - .create(primaryDirectoryAsyncClient.createSubdirectoryIfNotExistsWithResponse("testCreateSubDirectory", - new ShareDirectoryCreateOptions().setMetadata(testMetadata))) + .create(primaryDirectoryAsyncClient.create() + .then(primaryDirectoryAsyncClient.createSubdirectoryIfNotExistsWithResponse("testCreateSubDirectory", + new ShareDirectoryCreateOptions().setMetadata(testMetadata)))) .assertNext(it -> FileShareTestHelper.assertResponseStatusCode(it, 201)) .verifyComplete(); } @Test public void createIfNotExistsSubDirectoryMetadataError() { - primaryDirectoryAsyncClient.create().block(); StepVerifier - .create(primaryDirectoryAsyncClient.createSubdirectoryIfNotExistsWithResponse("testsubdirectory", - new ShareDirectoryCreateOptions().setMetadata(Collections.singletonMap("", "value")))) + .create(primaryDirectoryAsyncClient.create() + .then(primaryDirectoryAsyncClient.createSubdirectoryIfNotExistsWithResponse("testsubdirectory", + new ShareDirectoryCreateOptions().setMetadata(Collections.singletonMap("", "value"))))) .verifyErrorSatisfies(it -> FileShareTestHelper.assertExceptionStatusCodeAndMessage(it, 400, ShareErrorCode.EMPTY_METADATA_KEY)); } @Test public void createIfNotExistsSubDirectoryFilePermission() { - primaryDirectoryAsyncClient.create().block(); StepVerifier - .create(primaryDirectoryAsyncClient.createSubdirectoryIfNotExistsWithResponse("testCreateSubDirectory", - new ShareDirectoryCreateOptions().setFilePermission(FILE_PERMISSION))) + .create(primaryDirectoryAsyncClient.create() + .then(primaryDirectoryAsyncClient.createSubdirectoryIfNotExistsWithResponse("testCreateSubDirectory", + new ShareDirectoryCreateOptions().setFilePermission(FILE_PERMISSION)))) .assertNext(it -> FileShareTestHelper.assertResponseStatusCode(it, 201)) .verifyComplete(); } @@ -691,10 +720,11 @@ public void createIfNotExistsSubDirectoryFilePermKey() { smbProperties.setFileCreationTime(testResourceNamer.now()) .setFileLastWriteTime(testResourceNamer.now()) .setFilePermissionKey(filePermissionKey); - primaryDirectoryAsyncClient.create().block(); + StepVerifier - .create(primaryDirectoryAsyncClient.createSubdirectoryIfNotExistsWithResponse("testCreateSubDirectory", - new ShareDirectoryCreateOptions().setSmbProperties(smbProperties))) + .create(primaryDirectoryAsyncClient.create() + .then(primaryDirectoryAsyncClient.createSubdirectoryIfNotExistsWithResponse("testCreateSubDirectory", + new ShareDirectoryCreateOptions().setSmbProperties(smbProperties)))) .assertNext(it -> FileShareTestHelper.assertResponseStatusCode(it, 201)) .verifyComplete(); } @@ -702,17 +732,19 @@ public void createIfNotExistsSubDirectoryFilePermKey() { @Test public void deleteSubDirectory() { String subDirectoryName = "testSubCreateDirectory"; - primaryDirectoryAsyncClient.create().block(); - primaryDirectoryAsyncClient.createSubdirectory(subDirectoryName).block(); - StepVerifier.create(primaryDirectoryAsyncClient.deleteSubdirectoryWithResponse(subDirectoryName)) + StepVerifier + .create(primaryDirectoryAsyncClient.create() + .then(primaryDirectoryAsyncClient.createSubdirectory(subDirectoryName)) + .then(primaryDirectoryAsyncClient.deleteSubdirectoryWithResponse(subDirectoryName))) .assertNext(it -> FileShareTestHelper.assertResponseStatusCode(it, 202)) .verifyComplete(); } @Test public void deleteSubDirectoryError() { - primaryDirectoryAsyncClient.create().block(); - StepVerifier.create(primaryDirectoryAsyncClient.deleteSubdirectoryWithResponse("testsubdirectory")) + StepVerifier + .create(primaryDirectoryAsyncClient.create() + .then(primaryDirectoryAsyncClient.deleteSubdirectoryWithResponse("testsubdirectory"))) .verifyErrorSatisfies(it -> FileShareTestHelper.assertExceptionStatusCodeAndMessage(it, 404, ShareErrorCode.RESOURCE_NOT_FOUND)); } @@ -720,9 +752,10 @@ public void deleteSubDirectoryError() { @Test public void deleteIfExistsSubDirectory() { String subDirectoryName = "testSubCreateDirectory"; - primaryDirectoryAsyncClient.create().block(); - primaryDirectoryAsyncClient.createSubdirectory(subDirectoryName).block(); - StepVerifier.create(primaryDirectoryAsyncClient.deleteSubdirectoryIfExistsWithResponse(subDirectoryName)) + StepVerifier + .create(primaryDirectoryAsyncClient.create() + .then(primaryDirectoryAsyncClient.createSubdirectory(subDirectoryName)) + .then(primaryDirectoryAsyncClient.deleteSubdirectoryIfExistsWithResponse(subDirectoryName))) .assertNext(it -> FileShareTestHelper.assertResponseStatusCode(it, 202)) .verifyComplete(); } @@ -730,31 +763,36 @@ public void deleteIfExistsSubDirectory() { @Test public void deleteIfExistsSubDirectoryMin() { String subDirectoryName = "testSubCreateDirectory"; - primaryDirectoryAsyncClient.create().block(); - primaryDirectoryAsyncClient.createSubdirectory(subDirectoryName).block(); - Boolean result = primaryDirectoryAsyncClient.deleteSubdirectoryIfExists(subDirectoryName).block(); - assertEquals(Boolean.TRUE, result); + StepVerifier + .create(primaryDirectoryAsyncClient.create() + .then(primaryDirectoryAsyncClient.createSubdirectory(subDirectoryName)) + .then(primaryDirectoryAsyncClient.deleteSubdirectoryIfExists(subDirectoryName))) + .assertNext(result -> assertEquals(Boolean.TRUE, result)) + .verifyComplete(); } @Test public void deleteIfExistsSubDirectoryThatDoesNotExist() { String subdirectoryName = generatePathName(); ShareDirectoryAsyncClient client = primaryDirectoryAsyncClient.getDirectoryAsyncClient(generatePathName()); - client.create().block(); - Response response = client.deleteSubdirectoryIfExistsWithResponse(subdirectoryName, null).block(); - assertNotNull(response); - assertFalse(response.getValue()); - FileShareTestHelper.assertResponseStatusCode(response, 404); - Boolean exists = client.getSubdirectoryClient(subdirectoryName).exists().block(); - assertNotEquals(Boolean.TRUE, exists); + StepVerifier.create(client.create() + .then(client.deleteSubdirectoryIfExistsWithResponse(subdirectoryName, null)) + .flatMap(response -> { + assertNotNull(response); + assertFalse(response.getValue()); + FileShareTestHelper.assertResponseStatusCode(response, 404); + return client.getSubdirectoryClient(subdirectoryName).exists(); + })).assertNext(exists -> assertNotEquals(Boolean.TRUE, exists)).verifyComplete(); } @Test public void createFile() { - primaryDirectoryAsyncClient.create().block(); StepVerifier - .create(primaryDirectoryAsyncClient.createFileWithResponse("testCreateFile", 1024, null, null, null, null)) + .create( + primaryDirectoryAsyncClient.create() + .then(primaryDirectoryAsyncClient.createFileWithResponse("testCreateFile", 1024, null, null, null, + null))) .assertNext(it -> FileShareTestHelper.assertResponseStatusCode(it, 201)) .verifyComplete(); } @@ -762,22 +800,22 @@ public void createFile() { @ParameterizedTest @MethodSource("com.azure.storage.file.share.FileShareTestHelper#createFileInvalidArgsSupplier") public void createFileInvalidArgs(String fileName, long maxSize, int statusCode, ShareErrorCode errMsg) { - primaryDirectoryAsyncClient.create().block(); StepVerifier - .create(primaryDirectoryAsyncClient.createFileWithResponse(fileName, maxSize, null, null, null, null)) + .create(primaryDirectoryAsyncClient.create() + .then(primaryDirectoryAsyncClient.createFileWithResponse(fileName, maxSize, null, null, null, null))) .verifyErrorSatisfies( it -> FileShareTestHelper.assertExceptionStatusCodeAndMessage(it, statusCode, errMsg)); } @Test public void createFileMaxOverload() { - primaryDirectoryAsyncClient.create().block(); ShareFileHttpHeaders httpHeaders = new ShareFileHttpHeaders().setContentType("txt"); smbProperties.setFileCreationTime(testResourceNamer.now()).setFileLastWriteTime(testResourceNamer.now()); StepVerifier - .create(primaryDirectoryAsyncClient.createFileWithResponse("testCreateFile", 1024, httpHeaders, - smbProperties, FILE_PERMISSION, testMetadata)) + .create(primaryDirectoryAsyncClient.create() + .then(primaryDirectoryAsyncClient.createFileWithResponse("testCreateFile", 1024, httpHeaders, + smbProperties, FILE_PERMISSION, testMetadata))) .assertNext(it -> FileShareTestHelper.assertResponseStatusCode(it, 201)) .verifyComplete(); } @@ -786,41 +824,43 @@ public void createFileMaxOverload() { @MethodSource("com.azure.storage.file.share.FileShareTestHelper#createFileMaxOverloadInvalidArgsSupplier") public void createFileMaxOverloadInvalidArgs(String fileName, long maxSize, ShareFileHttpHeaders httpHeaders, Map metadata, ShareErrorCode errMsg) { - primaryDirectoryAsyncClient.create().block(); StepVerifier - .create(primaryDirectoryAsyncClient.createFileWithResponse(fileName, maxSize, httpHeaders, null, null, - metadata)) + .create(primaryDirectoryAsyncClient.create() + .then(primaryDirectoryAsyncClient.createFileWithResponse(fileName, maxSize, httpHeaders, null, null, + metadata))) .verifyErrorSatisfies(it -> FileShareTestHelper.assertExceptionStatusCodeAndMessage(it, 400, errMsg)); } @Test public void createFileLease() { - primaryDirectoryAsyncClient.create().block(); - primaryDirectoryAsyncClient.getFileClient("testCreateFile").create(512).block(); - String leaseId - = createLeaseClient(primaryDirectoryAsyncClient.getFileClient("testCreateFile")).acquireLease().block(); - - StepVerifier.create(primaryDirectoryAsyncClient.createFileWithResponse("testCreateFile", 1024, null, null, null, - null, new ShareRequestConditions().setLeaseId(leaseId))).expectNextCount(1).verifyComplete(); + StepVerifier + .create(primaryDirectoryAsyncClient.create() + .then(primaryDirectoryAsyncClient.getFileClient("testCreateFile").create(512)) + .then(createLeaseClient(primaryDirectoryAsyncClient.getFileClient("testCreateFile")).acquireLease()) + .flatMap(leaseId -> primaryDirectoryAsyncClient.createFileWithResponse("testCreateFile", 1024, null, + null, null, null, new ShareRequestConditions().setLeaseId(leaseId)))) + .expectNextCount(1) + .verifyComplete(); } @Test public void createFileLeaseFail() { - primaryDirectoryAsyncClient.create().block(); - primaryDirectoryAsyncClient.getFileClient("testCreateFile").create(512).block(); - createLeaseClient(primaryDirectoryAsyncClient.getFileClient("testCreateFile")).acquireLease().block(); - StepVerifier - .create(primaryDirectoryAsyncClient.createFileWithResponse("testCreateFile", 1024, null, null, null, null, - new ShareRequestConditions().setLeaseId(testResourceNamer.randomUuid()))) + .create(primaryDirectoryAsyncClient.create() + .then(primaryDirectoryAsyncClient.getFileClient("testCreateFile").create(512)) + .then(createLeaseClient(primaryDirectoryAsyncClient.getFileClient("testCreateFile")).acquireLease()) + .then(primaryDirectoryAsyncClient.createFileWithResponse("testCreateFile", 1024, null, null, null, null, + new ShareRequestConditions().setLeaseId(testResourceNamer.randomUuid())))) .verifyError(ShareStorageException.class); } + @Test public void deleteFile() { String fileName = "testCreateFile"; - primaryDirectoryAsyncClient.create().block(); - primaryDirectoryAsyncClient.createFile(fileName, 1024).block(); - StepVerifier.create(primaryDirectoryAsyncClient.deleteFileWithResponse(fileName)) + StepVerifier + .create(primaryDirectoryAsyncClient.create() + .then(primaryDirectoryAsyncClient.createFile(fileName, 1024)) + .then(primaryDirectoryAsyncClient.deleteFileWithResponse(fileName))) .assertNext(it -> FileShareTestHelper.assertResponseStatusCode(it, 202)) .verifyComplete(); } @@ -828,33 +868,35 @@ public void deleteFile() { @Test public void deleteFileLease() { String fileName = "testCreateFile"; - primaryDirectoryAsyncClient.create().block(); - primaryDirectoryAsyncClient.createFile(fileName, 1024).block(); - String leaseId = createLeaseClient(primaryDirectoryAsyncClient.getFileClient(fileName)).acquireLease().block(); - - StepVerifier.create(primaryDirectoryAsyncClient.deleteFileWithResponse(fileName, - new ShareRequestConditions().setLeaseId(leaseId))).expectNextCount(1).verifyComplete(); + StepVerifier.create(primaryDirectoryAsyncClient.create() + .then(primaryDirectoryAsyncClient.createFile(fileName, 1024)) + .then(createLeaseClient(primaryDirectoryAsyncClient.getFileClient(fileName)).acquireLease()) + .flatMap(leaseId -> primaryDirectoryAsyncClient.deleteFileWithResponse(fileName, + new ShareRequestConditions().setLeaseId(leaseId)))) + .expectNextCount(1) + .verifyComplete(); } @Test public void deleteFileLeaseFail() { String fileName = "testCreateFile"; - primaryDirectoryAsyncClient.create().block(); - primaryDirectoryAsyncClient.createFile(fileName, 1024).block(); - createLeaseClient(primaryDirectoryAsyncClient.getFileClient(fileName)).acquireLease().block(); StepVerifier - .create(primaryDirectoryAsyncClient.deleteFileWithResponse(fileName, - new ShareRequestConditions().setLeaseId(testResourceNamer.randomUuid()))) + .create(primaryDirectoryAsyncClient.create() + .then(primaryDirectoryAsyncClient.createFile(fileName, 1024)) + .then(createLeaseClient(primaryDirectoryAsyncClient.getFileClient(fileName)).acquireLease()) + .then(primaryDirectoryAsyncClient.deleteFileWithResponse(fileName, + new ShareRequestConditions().setLeaseId(testResourceNamer.randomUuid())))) .verifyError(ShareStorageException.class); } @Test public void deleteIfExistsFile() { String fileName = "testCreateFile"; - primaryDirectoryAsyncClient.create().block(); - primaryDirectoryAsyncClient.createFile(fileName, 1024).block(); - StepVerifier.create(primaryDirectoryAsyncClient.deleteFileIfExistsWithResponse(fileName)) + StepVerifier + .create(primaryDirectoryAsyncClient.create() + .then(primaryDirectoryAsyncClient.createFile(fileName, 1024)) + .then(primaryDirectoryAsyncClient.deleteFileIfExistsWithResponse(fileName))) .assertNext(it -> FileShareTestHelper.assertResponseStatusCode(it, 202)) .verifyComplete(); } @@ -862,33 +904,36 @@ public void deleteIfExistsFile() { @Test public void deleteIfExistsFileMin() { String fileName = "testCreateFile"; - primaryDirectoryAsyncClient.create().block(); - primaryDirectoryAsyncClient.createFile(fileName, 1024).block(); - Boolean result = primaryDirectoryAsyncClient.deleteFileIfExists(fileName).block(); - assertEquals(Boolean.TRUE, result); + StepVerifier + .create(primaryDirectoryAsyncClient.create() + .then(primaryDirectoryAsyncClient.createFile(fileName, 1024)) + .then(primaryDirectoryAsyncClient.deleteFileIfExists(fileName))) + .assertNext(result -> assertEquals(Boolean.TRUE, result)) + .verifyComplete(); } @Test public void deleteIfExistsFileLease() { String fileName = "testCreateFile"; - primaryDirectoryAsyncClient.create().block(); - primaryDirectoryAsyncClient.createFile(fileName, 1024).block(); - String leaseId = createLeaseClient(primaryDirectoryAsyncClient.getFileClient(fileName)).acquireLease().block(); - - StepVerifier.create(primaryDirectoryAsyncClient.deleteFileIfExistsWithResponse(fileName, - new ShareRequestConditions().setLeaseId(leaseId))).expectNextCount(1).verifyComplete(); + StepVerifier.create(primaryDirectoryAsyncClient.create() + .then(primaryDirectoryAsyncClient.createFile(fileName, 1024)) + .then(createLeaseClient(primaryDirectoryAsyncClient.getFileClient(fileName)).acquireLease()) + .flatMap(leaseId -> primaryDirectoryAsyncClient.deleteFileIfExistsWithResponse(fileName, + new ShareRequestConditions().setLeaseId(leaseId)))) + .expectNextCount(1) + .verifyComplete(); } @Test public void deleteIfExistsFileLeaseFail() { String fileName = "testCreateFile"; - primaryDirectoryAsyncClient.create().block(); - primaryDirectoryAsyncClient.createFile(fileName, 1024).block(); - createLeaseClient(primaryDirectoryAsyncClient.getFileClient(fileName)).acquireLease().block(); + Mono createFileMono = primaryDirectoryAsyncClient.create() + .then(primaryDirectoryAsyncClient.createFile(fileName, 1024)) + .then(createLeaseClient(primaryDirectoryAsyncClient.getFileClient(fileName)).acquireLease().then()); StepVerifier - .create(primaryDirectoryAsyncClient.deleteFileIfExistsWithResponse(fileName, - new ShareRequestConditions().setLeaseId(testResourceNamer.randomUuid()))) + .create(createFileMono.then(primaryDirectoryAsyncClient.deleteFileIfExistsWithResponse(fileName, + new ShareRequestConditions().setLeaseId(testResourceNamer.randomUuid())))) .verifyError(ShareStorageException.class); } @@ -896,12 +941,14 @@ public void deleteIfExistsFileLeaseFail() { public void deleteIfExistsFileThatDoesNotExist() { String subdirectoryName = generatePathName(); ShareDirectoryAsyncClient client = primaryDirectoryAsyncClient.getDirectoryAsyncClient(generatePathName()); - client.create().block(); - Response response = client.deleteFileIfExistsWithResponse(subdirectoryName, null).block(); - assertNotNull(response); - FileShareTestHelper.assertResponseStatusCode(response, 404); - assertNotEquals(Boolean.TRUE, client.getSubdirectoryClient(subdirectoryName).exists().block()); + StepVerifier.create(client.create().then(client.deleteFileIfExistsWithResponse(subdirectoryName, null))) + .assertNext(response -> { + assertNotNull(response); + FileShareTestHelper.assertResponseStatusCode(response, 404); + assertNotEquals(Boolean.TRUE, client.getSubdirectoryClient(subdirectoryName).exists()); + }) + .verifyComplete(); } @Test @@ -947,22 +994,22 @@ public void getDirectoryPath() { public void defaultAudience() { String dirName = generatePathName(); ShareDirectoryAsyncClient dirClient = directoryBuilderHelper(shareName, dirName).buildDirectoryAsyncClient(); - dirClient.create().block(); - ShareServiceAsyncClient oAuthServiceClient - = getOAuthServiceAsyncClient(new ShareServiceClientBuilder().shareTokenIntent(ShareTokenIntent.BACKUP) - .audience(null) /* should default to "https://storage.azure.com/" */); + + Mono createDirMono = dirClient.create(); + ShareServiceAsyncClient oAuthServiceClient = getOAuthServiceAsyncClient( + new ShareServiceClientBuilder().shareTokenIntent(ShareTokenIntent.BACKUP).audience(null)); ShareDirectoryAsyncClient aadDirClient = oAuthServiceClient.getShareAsyncClient(shareName).getDirectoryClient(dirName); - StepVerifier.create(aadDirClient.exists()).expectNext(true).verifyComplete(); + StepVerifier.create(createDirMono.then(aadDirClient.exists())).expectNext(true).verifyComplete(); } @Test public void storageAccountAudience() { String dirName = generatePathName(); ShareDirectoryAsyncClient dirClient = directoryBuilderHelper(shareName, dirName).buildDirectoryAsyncClient(); - dirClient.create().block(); + Mono createDirMono = dirClient.create(); ShareServiceAsyncClient oAuthServiceClient = getOAuthServiceAsyncClient(new ShareServiceClientBuilder() .shareTokenIntent(ShareTokenIntent.BACKUP) .audience(ShareAudience.createShareServiceAccountAudience(primaryDirectoryAsyncClient.getAccountName()))); @@ -970,14 +1017,15 @@ public void storageAccountAudience() { ShareDirectoryAsyncClient aadDirClient = oAuthServiceClient.getShareAsyncClient(shareName).getDirectoryClient(dirName); - StepVerifier.create(aadDirClient.exists()).expectNext(true).verifyComplete(); + StepVerifier.create(createDirMono.then(aadDirClient.exists())).expectNext(true).verifyComplete(); } @Test public void audienceError() { String dirName = generatePathName(); ShareDirectoryAsyncClient dirClient = directoryBuilderHelper(shareName, dirName).buildDirectoryAsyncClient(); - dirClient.create().block(); + Mono createDirMono = dirClient.create(); + ShareServiceAsyncClient oAuthServiceClient = getOAuthServiceAsyncClient(new ShareServiceClientBuilder().shareTokenIntent(ShareTokenIntent.BACKUP) .audience(ShareAudience.createShareServiceAccountAudience("badAudience"))); @@ -985,7 +1033,7 @@ public void audienceError() { ShareDirectoryAsyncClient aadDirClient = oAuthServiceClient.getShareAsyncClient(shareName).getDirectoryClient(dirName); - StepVerifier.create(aadDirClient.exists()).verifyErrorSatisfies(r -> { + StepVerifier.create(createDirMono.then(aadDirClient.exists())).verifyErrorSatisfies(r -> { ShareStorageException e = assertInstanceOf(ShareStorageException.class, r); assertEquals(ShareErrorCode.INVALID_AUTHENTICATION_INFO, e.getErrorCode()); }); @@ -998,13 +1046,13 @@ public void audienceFromString() { String dirName = generatePathName(); ShareDirectoryAsyncClient dirClient = directoryBuilderHelper(shareName, dirName).buildDirectoryAsyncClient(); - dirClient.create().block(); + Mono createDirMono = dirClient.create(); ShareServiceAsyncClient oAuthServiceClient = getOAuthServiceAsyncClient( new ShareServiceClientBuilder().shareTokenIntent(ShareTokenIntent.BACKUP).audience(audience)); ShareDirectoryAsyncClient aadDirClient = oAuthServiceClient.getShareAsyncClient(shareName).getDirectoryClient(dirName); - StepVerifier.create(aadDirClient.exists()).expectNext(true).verifyComplete(); + StepVerifier.create(createDirMono.then(aadDirClient.exists())).expectNext(true).verifyComplete(); } }