From 9dfb72720e8b34a1bfa1d91a2e0dba2be416ddf2 Mon Sep 17 00:00:00 2001 From: Trisha Anand Date: Fri, 12 Jun 2020 19:35:01 +0530 Subject: [PATCH] Fixed the broken test cases. --- .../server/ServerApplicationTests.java | 15 +----- .../server/helpers/MockPluginExecutor.java | 43 +++++++++++++++++ .../server/services/ActionServiceTest.java | 7 +-- .../services/DatasourceServiceTest.java | 46 +++---------------- .../server/services/LayoutServiceTest.java | 34 ++++++++++++++ 5 files changed, 88 insertions(+), 57 deletions(-) create mode 100644 app/server/appsmith-server/src/test/java/com/appsmith/server/helpers/MockPluginExecutor.java diff --git a/app/server/appsmith-server/src/test/java/com/appsmith/server/ServerApplicationTests.java b/app/server/appsmith-server/src/test/java/com/appsmith/server/ServerApplicationTests.java index 96fccfb351..72b6e5eb0c 100644 --- a/app/server/appsmith-server/src/test/java/com/appsmith/server/ServerApplicationTests.java +++ b/app/server/appsmith-server/src/test/java/com/appsmith/server/ServerApplicationTests.java @@ -1,11 +1,5 @@ package com.appsmith.server; -import com.appsmith.server.services.ActionServiceTest; -import com.appsmith.server.services.ApplicationServiceTest; -import com.appsmith.server.services.LayoutServiceTest; -import com.appsmith.server.services.OrganizationServiceTest; -import com.appsmith.server.services.PageServiceTest; -import com.appsmith.server.services.UserServiceTest; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Suite; @@ -13,14 +7,7 @@ import org.springframework.boot.test.context.SpringBootTest; @RunWith(Suite.class) @SpringBootTest -@Suite.SuiteClasses({ - OrganizationServiceTest.class, - ApplicationServiceTest.class, - LayoutServiceTest.class, - UserServiceTest.class, - PageServiceTest.class, - ActionServiceTest.class -}) +@Suite.SuiteClasses({}) public class ServerApplicationTests { @Test diff --git a/app/server/appsmith-server/src/test/java/com/appsmith/server/helpers/MockPluginExecutor.java b/app/server/appsmith-server/src/test/java/com/appsmith/server/helpers/MockPluginExecutor.java new file mode 100644 index 0000000000..959be8219d --- /dev/null +++ b/app/server/appsmith-server/src/test/java/com/appsmith/server/helpers/MockPluginExecutor.java @@ -0,0 +1,43 @@ +package com.appsmith.server.helpers; + +import com.appsmith.external.models.ActionConfiguration; +import com.appsmith.external.models.DatasourceConfiguration; +import com.appsmith.external.models.DatasourceTestResult; +import com.appsmith.external.plugins.PluginExecutor; +import reactor.core.publisher.Mono; + +import java.util.HashSet; +import java.util.Set; + +public class MockPluginExecutor implements PluginExecutor { + + @Override + public Mono execute(Object connection, DatasourceConfiguration datasourceConfiguration, ActionConfiguration actionConfiguration) { + System.out.println("In the execute"); + return null; + } + + @Override + public Mono datasourceCreate(DatasourceConfiguration datasourceConfiguration) { + System.out.println("In the datasourceCreate"); + return Mono.empty(); + } + + @Override + public void datasourceDestroy(Object connection) { + System.out.println("In the datasourceDestroy"); + + } + + @Override + public Set validateDatasource(DatasourceConfiguration datasourceConfiguration) { + System.out.println("In the datasourceValidate"); + return new HashSet<>(); + } + + @Override + public Mono testDatasource(DatasourceConfiguration datasourceConfiguration) { + return Mono.just(new DatasourceTestResult()); + } + +} diff --git a/app/server/appsmith-server/src/test/java/com/appsmith/server/services/ActionServiceTest.java b/app/server/appsmith-server/src/test/java/com/appsmith/server/services/ActionServiceTest.java index 48488053a1..0bfc6a3695 100644 --- a/app/server/appsmith-server/src/test/java/com/appsmith/server/services/ActionServiceTest.java +++ b/app/server/appsmith-server/src/test/java/com/appsmith/server/services/ActionServiceTest.java @@ -19,6 +19,7 @@ import com.appsmith.server.domains.User; import com.appsmith.server.dtos.ExecuteActionDTO; import com.appsmith.server.exceptions.AppsmithError; import com.appsmith.server.exceptions.AppsmithException; +import com.appsmith.server.helpers.MockPluginExecutor; import com.appsmith.server.helpers.PluginExecutorHelper; import com.appsmith.server.repositories.OrganizationRepository; import com.appsmith.server.repositories.PluginRepository; @@ -131,7 +132,7 @@ public class ActionServiceTest { @Test @WithUserDetails(value = "api_user") public void createValidActionAndCheckPermissions() { - Mockito.when(pluginExecutorHelper.getPluginExecutor(Mockito.any())).thenReturn(Mono.just(new DatasourceServiceTest.TestPluginExecutor())); + Mockito.when(pluginExecutorHelper.getPluginExecutor(Mockito.any())).thenReturn(Mono.just(new MockPluginExecutor())); Policy manageActionPolicy = Policy.builder().permission(MANAGE_ACTIONS.getValue()) .users(Set.of("api_user")) @@ -164,7 +165,7 @@ public class ActionServiceTest { @Test @WithUserDetails(value = "api_user") public void createValidActionWithJustName() { - Mockito.when(pluginExecutorHelper.getPluginExecutor(Mockito.any())).thenReturn(Mono.just(new DatasourceServiceTest.TestPluginExecutor())); + Mockito.when(pluginExecutorHelper.getPluginExecutor(Mockito.any())).thenReturn(Mono.just(new MockPluginExecutor())); Action action = new Action(); action.setName("randomActionName"); @@ -188,7 +189,7 @@ public class ActionServiceTest { @Test @WithUserDetails(value = "api_user") public void createValidActionNullActionConfiguration() { - Mockito.when(pluginExecutorHelper.getPluginExecutor(Mockito.any())).thenReturn(Mono.just(new DatasourceServiceTest.TestPluginExecutor())); + Mockito.when(pluginExecutorHelper.getPluginExecutor(Mockito.any())).thenReturn(Mono.just(new MockPluginExecutor())); Action action = new Action(); action.setName("randomActionName2"); diff --git a/app/server/appsmith-server/src/test/java/com/appsmith/server/services/DatasourceServiceTest.java b/app/server/appsmith-server/src/test/java/com/appsmith/server/services/DatasourceServiceTest.java index b3ee5dba2f..500940697a 100644 --- a/app/server/appsmith-server/src/test/java/com/appsmith/server/services/DatasourceServiceTest.java +++ b/app/server/appsmith-server/src/test/java/com/appsmith/server/services/DatasourceServiceTest.java @@ -1,13 +1,11 @@ package com.appsmith.server.services; -import com.appsmith.external.models.ActionConfiguration; import com.appsmith.external.models.Connection; import com.appsmith.external.models.DatasourceConfiguration; import com.appsmith.external.models.DatasourceTestResult; import com.appsmith.external.models.Policy; import com.appsmith.external.models.SSLDetails; import com.appsmith.external.models.UploadedFile; -import com.appsmith.external.plugins.PluginExecutor; import com.appsmith.server.acl.AclPermission; import com.appsmith.server.constants.FieldName; import com.appsmith.server.domains.Datasource; @@ -15,6 +13,7 @@ import com.appsmith.server.domains.Organization; import com.appsmith.server.domains.Plugin; import com.appsmith.server.exceptions.AppsmithError; import com.appsmith.server.exceptions.AppsmithException; +import com.appsmith.server.helpers.MockPluginExecutor; import com.appsmith.server.helpers.PluginExecutorHelper; import com.appsmith.server.repositories.OrganizationRepository; import lombok.extern.slf4j.Slf4j; @@ -32,7 +31,6 @@ import reactor.core.publisher.Mono; import reactor.test.StepVerifier; import reactor.util.function.Tuple2; -import java.util.HashSet; import java.util.Set; import static com.appsmith.server.acl.AclPermission.EXECUTE_DATASOURCES; @@ -58,38 +56,6 @@ public class DatasourceServiceTest { @MockBean PluginExecutorHelper pluginExecutorHelper; - static class TestPluginExecutor implements PluginExecutor { - - @Override - public Mono execute(Object connection, DatasourceConfiguration datasourceConfiguration, ActionConfiguration actionConfiguration) { - System.out.println("In the execute"); - return null; - } - - @Override - public Mono datasourceCreate(DatasourceConfiguration datasourceConfiguration) { - System.out.println("In the datasourceCreate"); - return Mono.empty(); - } - - @Override - public void datasourceDestroy(Object connection) { - System.out.println("In the datasourceDestroy"); - - } - - @Override - public Set validateDatasource(DatasourceConfiguration datasourceConfiguration) { - System.out.println("In the datasourceValidate"); - return new HashSet<>(); - } - - @Override - public Mono testDatasource(DatasourceConfiguration datasourceConfiguration) { - return Mono.just(new DatasourceTestResult()); - } - } - String orgId = ""; @Before @@ -136,7 +102,7 @@ public class DatasourceServiceTest { @Test @WithUserDetails(value = "api_user") public void createDatasourceNotInstalledPlugin() { - Mockito.when(pluginExecutorHelper.getPluginExecutor(Mockito.any())).thenReturn(Mono.just(new TestPluginExecutor())); + Mockito.when(pluginExecutorHelper.getPluginExecutor(Mockito.any())).thenReturn(Mono.just(new MockPluginExecutor())); Mono pluginMono = pluginService.findByName("Not Installed Plugin Name"); Datasource datasource = new Datasource(); @@ -167,7 +133,7 @@ public class DatasourceServiceTest { @WithUserDetails(value = "api_user") public void createDatasourceValid() { - Mockito.when(pluginExecutorHelper.getPluginExecutor(Mockito.any())).thenReturn(Mono.just(new TestPluginExecutor())); + Mockito.when(pluginExecutorHelper.getPluginExecutor(Mockito.any())).thenReturn(Mono.just(new MockPluginExecutor())); Mono pluginMono = pluginService.findByName("Installed Plugin Name"); Datasource datasource = new Datasource(); @@ -206,7 +172,7 @@ public class DatasourceServiceTest { @Test @WithUserDetails(value = "api_user") public void createAndUpdateDatasourceValidDB() { - Mockito.when(pluginExecutorHelper.getPluginExecutor(Mockito.any())).thenReturn(Mono.just(new TestPluginExecutor())); + Mockito.when(pluginExecutorHelper.getPluginExecutor(Mockito.any())).thenReturn(Mono.just(new MockPluginExecutor())); Datasource datasource = new Datasource(); datasource.setName("test db datasource"); @@ -258,7 +224,7 @@ public class DatasourceServiceTest { @Test @WithUserDetails(value = "api_user") public void createNamelessDatasource() { - Mockito.when(pluginExecutorHelper.getPluginExecutor(Mockito.any())).thenReturn(Mono.just(new TestPluginExecutor())); + Mockito.when(pluginExecutorHelper.getPluginExecutor(Mockito.any())).thenReturn(Mono.just(new MockPluginExecutor())); Mono pluginMono = pluginService.findByName("Installed Plugin Name"); @@ -314,7 +280,7 @@ public class DatasourceServiceTest { return datasource; }).flatMap(datasourceService::create); - Mockito.when(pluginExecutorHelper.getPluginExecutor(Mockito.any())).thenReturn(Mono.just(new TestPluginExecutor())); + Mockito.when(pluginExecutorHelper.getPluginExecutor(Mockito.any())).thenReturn(Mono.just(new MockPluginExecutor())); Mono testResultMono = datasourceMono.flatMap(datasource1 -> datasourceService.testDatasource(datasource1)); diff --git a/app/server/appsmith-server/src/test/java/com/appsmith/server/services/LayoutServiceTest.java b/app/server/appsmith-server/src/test/java/com/appsmith/server/services/LayoutServiceTest.java index 6fe54e3abc..c0f89a2eea 100644 --- a/app/server/appsmith-server/src/test/java/com/appsmith/server/services/LayoutServiceTest.java +++ b/app/server/appsmith-server/src/test/java/com/appsmith/server/services/LayoutServiceTest.java @@ -1,23 +1,31 @@ package com.appsmith.server.services; import com.appsmith.external.models.ActionConfiguration; +import com.appsmith.external.plugins.PluginExecutor; import com.appsmith.server.constants.FieldName; import com.appsmith.server.domains.Action; import com.appsmith.server.domains.Application; +import com.appsmith.server.domains.Datasource; import com.appsmith.server.domains.Layout; import com.appsmith.server.domains.Page; +import com.appsmith.server.domains.Plugin; import com.appsmith.server.domains.User; import com.appsmith.server.dtos.DslActionDTO; import com.appsmith.server.exceptions.AppsmithError; import com.appsmith.server.exceptions.AppsmithException; +import com.appsmith.server.helpers.MockPluginExecutor; +import com.appsmith.server.helpers.PluginExecutorHelper; +import com.appsmith.server.repositories.PluginRepository; import lombok.extern.slf4j.Slf4j; import net.minidev.json.JSONObject; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; +import org.mockito.Mockito; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.http.HttpMethod; import org.springframework.security.test.context.support.WithUserDetails; import org.springframework.test.annotation.DirtiesContext; @@ -62,16 +70,34 @@ public class LayoutServiceTest { @Autowired ActionService actionService; + @Autowired + PluginRepository pluginRepository; + + @MockBean + PluginExecutorHelper pluginExecutorHelper; + + @MockBean + PluginExecutor pluginExecutor; + Mono layoutMono; String orgId; + Datasource datasource; + + @Before @WithUserDetails(value = "api_user") public void setup() { purgeAllPages(); User apiUser = userService.findByEmail("api_user").block(); orgId = apiUser.getOrganizationIds().iterator().next(); + + datasource = new Datasource(); + datasource.setName("Default Database"); + datasource.setOrganizationId(orgId); + Plugin installed_plugin = pluginRepository.findByPackageName("installed-plugin").block(); + datasource.setPluginId(installed_plugin.getId()); } private void purgeAllPages() { @@ -235,6 +261,8 @@ public class LayoutServiceTest { @Test @WithUserDetails(value = "api_user") public void getActionsExecuteOnLoad() { + Mockito.when(pluginExecutorHelper.getPluginExecutor(Mockito.any())).thenReturn(Mono.just(new MockPluginExecutor())); + Mono testMono = pageService .findByName("validPageName") .flatMap(page1 -> { @@ -245,6 +273,7 @@ public class LayoutServiceTest { action.setActionConfiguration(new ActionConfiguration()); action.getActionConfiguration().setHttpMethod(HttpMethod.GET); action.setPageId(page1.getId()); + action.setDatasource(datasource); monos.add(actionService.create(action)); action = new Action(); @@ -252,6 +281,7 @@ public class LayoutServiceTest { action.setActionConfiguration(new ActionConfiguration()); action.getActionConfiguration().setHttpMethod(HttpMethod.POST); action.setPageId(page1.getId()); + action.setDatasource(datasource); monos.add(actionService.create(action)); action = new Action(); @@ -263,6 +293,7 @@ public class LayoutServiceTest { action.setJsonPathKeys(Set.of("aPostSecondaryAction.data", "aPostTertiaryAction.data")); action.setPageId(page1.getId()); action.setExecuteOnLoad(true); + action.setDatasource(datasource); monos.add(actionService.create(action)); action = new Action(); @@ -270,6 +301,7 @@ public class LayoutServiceTest { action.setActionConfiguration(new ActionConfiguration()); action.getActionConfiguration().setHttpMethod(HttpMethod.POST); action.setPageId(page1.getId()); + action.setDatasource(datasource); monos.add(actionService.create(action)); action = new Action(); @@ -278,6 +310,7 @@ public class LayoutServiceTest { action.getActionConfiguration().setHttpMethod(HttpMethod.POST); action.setPageId(page1.getId()); action.setExecuteOnLoad(true); + action.setDatasource(datasource); monos.add(actionService.create(action)); action = new Action(); @@ -285,6 +318,7 @@ public class LayoutServiceTest { action.setActionConfiguration(new ActionConfiguration()); action.getActionConfiguration().setHttpMethod(HttpMethod.DELETE); action.setPageId(page1.getId()); + action.setDatasource(datasource); monos.add(actionService.create(action)); return Mono.zip(monos, objects -> page1);