From ebb9665d42cef1d0312a42f248f4e5f0a7aa5b95 Mon Sep 17 00:00:00 2001 From: Anagh Hegde Date: Fri, 29 Oct 2021 12:51:31 +0530 Subject: [PATCH] fix: check for repoName while deleting apps (#8866) * check for repoName while deleting apps * Added tests --- .../services/ApplicationPageServiceImpl.java | 7 ++-- .../services/ApplicationServiceTest.java | 42 +++++++++++++++++++ 2 files changed, 45 insertions(+), 4 deletions(-) diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/services/ApplicationPageServiceImpl.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/services/ApplicationPageServiceImpl.java index 6675d2d4a1..28b9745ef2 100644 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/services/ApplicationPageServiceImpl.java +++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/services/ApplicationPageServiceImpl.java @@ -319,10 +319,9 @@ public class ApplicationPageServiceImpl implements ApplicationPageService { return applicationMono .flatMapMany(application -> { GitApplicationMetadata gitData = application.getGitApplicationMetadata(); - if (gitData != null && !StringUtils.isEmpty(gitData.getDefaultApplicationId())) { - GitApplicationMetadata gitApplicationMetadata = application.getGitApplicationMetadata(); - String repoName = gitApplicationMetadata.getRepoName(); - Path repoPath = Paths.get(application.getOrganizationId(), gitApplicationMetadata.getDefaultApplicationId(), repoName); + if (gitData != null && !StringUtils.isEmpty(gitData.getDefaultApplicationId()) && !StringUtils.isEmpty(gitData.getRepoName())) { + String repoName = gitData.getRepoName(); + Path repoPath = Paths.get(application.getOrganizationId(), gitData.getDefaultApplicationId(), repoName); // Delete git repo from local and delete the applications from DB return gitFileUtils.detachRemote(repoPath) .flatMapMany(isCleared -> applicationService diff --git a/app/server/appsmith-server/src/test/java/com/appsmith/server/services/ApplicationServiceTest.java b/app/server/appsmith-server/src/test/java/com/appsmith/server/services/ApplicationServiceTest.java index ce87d337a3..0109e85546 100644 --- a/app/server/appsmith-server/src/test/java/com/appsmith/server/services/ApplicationServiceTest.java +++ b/app/server/appsmith-server/src/test/java/com/appsmith/server/services/ApplicationServiceTest.java @@ -1437,4 +1437,46 @@ public class ApplicationServiceTest { .verifyComplete(); } + @Test + @WithUserDetails(value = "api_user") + public void deleteApplication_withNullGitData_Success() { + Application testApplication = new Application(); + String appName = "deleteApplication_withNullGitData_Success"; + testApplication.setName(appName); + Application application = applicationPageService.createApplication(testApplication, orgId).block(); + + Mono applicationMono = applicationPageService.deleteApplication(application.getId()); + + StepVerifier + .create(applicationMono) + .assertNext(application1 -> { + assertThat(application1.isDeleted()).isTrue(); + }) + .verifyComplete(); + } + + @Test + @WithUserDetails(value = "api_user") + public void deleteApplication_WithDeployKeysNotConnectedToRemote_Success() { + Application testApplication = new Application(); + String appName = "deleteApplication_WithDeployKeysNotConnectedToRemote_Success"; + testApplication.setName(appName); + GitApplicationMetadata gitApplicationMetadata = new GitApplicationMetadata(); + GitAuth gitAuth = new GitAuth(); + gitAuth.setPrivateKey("privateKey"); + gitAuth.setPublicKey("publicKey"); + gitApplicationMetadata.setGitAuth(gitAuth); + testApplication.setGitApplicationMetadata(gitApplicationMetadata); + Application application = applicationPageService.createApplication(testApplication, orgId).block(); + + Mono applicationMono = applicationPageService.deleteApplication(application.getId()); + + StepVerifier + .create(applicationMono) + .assertNext(application1 -> { + assertThat(application1.isDeleted()).isTrue(); + }) + .verifyComplete(); + } + }