diff --git a/app/server/appsmith-plugins/arangoDBPlugin/src/test/java/com/external/plugins/ArangoDBPluginTest.java b/app/server/appsmith-plugins/arangoDBPlugin/src/test/java/com/external/plugins/ArangoDBPluginTest.java index 2da1b0f450..94394640c8 100644 --- a/app/server/appsmith-plugins/arangoDBPlugin/src/test/java/com/external/plugins/ArangoDBPluginTest.java +++ b/app/server/appsmith-plugins/arangoDBPlugin/src/test/java/com/external/plugins/ArangoDBPluginTest.java @@ -33,6 +33,7 @@ import reactor.test.StepVerifier; import java.math.BigDecimal; import java.time.LocalDate; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Map; @@ -352,4 +353,70 @@ public class ArangoDBPluginTest { }) .verifyComplete(); } + + @Test + public void testGetEndpointIdentifierForRateLimit_endpointNotPresent_ReturnsEmptyString() { + DatasourceConfiguration dsConfig = createDatasourceConfiguration(); + // setting endpoints to empty list + dsConfig.setEndpoints(new ArrayList()); + + final Mono rateLimitIdentifierMono = pluginExecutor.getEndpointIdentifierForRateLimit(dsConfig); + + StepVerifier.create(rateLimitIdentifierMono) + .assertNext(endpointIdentifier -> { + assertEquals("", endpointIdentifier); + }) + .verifyComplete(); + } + + @Test + public void testGetEndpointIdentifierForRateLimit_HostAbsent_ReturnsEmptyString() { + DatasourceConfiguration dsConfig = createDatasourceConfiguration(); + + // Setting hostname and port + dsConfig.getEndpoints().get(0).setHost(""); + dsConfig.getEndpoints().get(0).setPort(8529L); + + final Mono endPointIdentifierMono = pluginExecutor.getEndpointIdentifierForRateLimit(dsConfig); + + StepVerifier.create(endPointIdentifierMono) + .assertNext(endpointIdentifier -> { + assertEquals("", endpointIdentifier); + }) + .verifyComplete(); + } + + @Test + public void testGetEndpointIdentifierForRateLimit_HostAndPortPresent_ReturnsCorrectString() { + DatasourceConfiguration dsConfig = createDatasourceConfiguration(); + + // Setting hostname and port + dsConfig.getEndpoints().get(0).setHost("localhost"); + dsConfig.getEndpoints().get(0).setPort(590L); + + final Mono endPointIdentifierMono = pluginExecutor.getEndpointIdentifierForRateLimit(dsConfig); + + StepVerifier.create(endPointIdentifierMono) + .assertNext(endpointIdentifier -> { + assertEquals("localhost_590", endpointIdentifier); + }) + .verifyComplete(); + } + + @Test + public void testGetEndpointIdentifierForRateLimit_HostPresentPortAbsent_ReturnsCorrectString() { + DatasourceConfiguration dsConfig = createDatasourceConfiguration(); + + // Setting hostname and port + dsConfig.getEndpoints().get(0).setHost("localhost"); + dsConfig.getEndpoints().get(0).setPort(null); + + final Mono endPointIdentifierMono = pluginExecutor.getEndpointIdentifierForRateLimit(dsConfig); + + StepVerifier.create(endPointIdentifierMono) + .assertNext(endpointIdentifier -> { + assertEquals("localhost_8529", endpointIdentifier); + }) + .verifyComplete(); + } } diff --git a/app/server/appsmith-plugins/elasticSearchPlugin/src/test/java/com/external/plugins/ElasticSearchPluginTest.java b/app/server/appsmith-plugins/elasticSearchPlugin/src/test/java/com/external/plugins/ElasticSearchPluginTest.java index 0ceda55bb9..c410833a41 100755 --- a/app/server/appsmith-plugins/elasticSearchPlugin/src/test/java/com/external/plugins/ElasticSearchPluginTest.java +++ b/app/server/appsmith-plugins/elasticSearchPlugin/src/test/java/com/external/plugins/ElasticSearchPluginTest.java @@ -115,6 +115,16 @@ public class ElasticSearchPluginTest { .flatMap(conn -> pluginExecutor.execute(conn, dsConfig, actionConfiguration)); } + private DatasourceConfiguration createDatasourceConfiguration() { + DatasourceConfiguration datasourceConfiguration = new DatasourceConfiguration(); + datasourceConfiguration.setAuthentication(elasticInstanceCredentials); + Endpoint endpoint = new Endpoint(); + endpoint.setHost("localhost"); + endpoint.setPort(Long.valueOf(port)); + datasourceConfiguration.setEndpoints(Collections.singletonList(endpoint)); + return datasourceConfiguration; + } + @Test public void testDefaultPort() { @@ -600,4 +610,70 @@ public class ElasticSearchPluginTest { .size() == 0); } + + @Test + public void testGetEndpointIdentifierForRateLimit_endpointNotPresent_ReturnsEmptyString() { + DatasourceConfiguration dsConfig = createDatasourceConfiguration(); + // setting endpoints to empty list + dsConfig.setEndpoints(new ArrayList()); + + final Mono rateLimitIdentifierMono = pluginExecutor.getEndpointIdentifierForRateLimit(dsConfig); + + StepVerifier.create(rateLimitIdentifierMono) + .assertNext(endpointIdentifier -> { + assertEquals("", endpointIdentifier); + }) + .verifyComplete(); + } + + @Test + public void testGetEndpointIdentifierForRateLimit_HostAbsent_ReturnsEmptyString() { + DatasourceConfiguration dsConfig = createDatasourceConfiguration(); + + // Setting hostname and port + dsConfig.getEndpoints().get(0).setHost(""); + dsConfig.getEndpoints().get(0).setPort(9200L); + + final Mono endPointIdentifierMono = pluginExecutor.getEndpointIdentifierForRateLimit(dsConfig); + + StepVerifier.create(endPointIdentifierMono) + .assertNext(endpointIdentifier -> { + assertEquals("", endpointIdentifier); + }) + .verifyComplete(); + } + + @Test + public void testGetEndpointIdentifierForRateLimit_HostAndPortPresent_ReturnsCorrectString() { + DatasourceConfiguration dsConfig = createDatasourceConfiguration(); + + // Setting hostname and port + dsConfig.getEndpoints().get(0).setHost("localhost"); + dsConfig.getEndpoints().get(0).setPort(590L); + + final Mono endPointIdentifierMono = pluginExecutor.getEndpointIdentifierForRateLimit(dsConfig); + + StepVerifier.create(endPointIdentifierMono) + .assertNext(endpointIdentifier -> { + assertEquals("localhost_590", endpointIdentifier); + }) + .verifyComplete(); + } + + @Test + public void testGetEndpointIdentifierForRateLimit_HostPresentPortAbsent_ReturnsCorrectString() { + DatasourceConfiguration dsConfig = createDatasourceConfiguration(); + + // Setting hostname and port + dsConfig.getEndpoints().get(0).setHost("localhost"); + dsConfig.getEndpoints().get(0).setPort(null); + + final Mono endPointIdentifierMono = pluginExecutor.getEndpointIdentifierForRateLimit(dsConfig); + + StepVerifier.create(endPointIdentifierMono) + .assertNext(endpointIdentifier -> { + assertEquals("localhost_9200", endpointIdentifier); + }) + .verifyComplete(); + } } diff --git a/app/server/appsmith-plugins/mssqlPlugin/src/test/java/com/external/plugins/MssqlPluginTest.java b/app/server/appsmith-plugins/mssqlPlugin/src/test/java/com/external/plugins/MssqlPluginTest.java index 3d1a415556..9443afcff1 100755 --- a/app/server/appsmith-plugins/mssqlPlugin/src/test/java/com/external/plugins/MssqlPluginTest.java +++ b/app/server/appsmith-plugins/mssqlPlugin/src/test/java/com/external/plugins/MssqlPluginTest.java @@ -707,4 +707,70 @@ public class MssqlPluginTest { }) .verifyComplete(); } + + @Test + public void testGetEndpointIdentifierForRateLimit_endpointNotPresent_ReturnsEmptyString() { + DatasourceConfiguration dsConfig = createDatasourceConfiguration(container); + // setting endpoints to empty list + dsConfig.setEndpoints(new ArrayList()); + + final Mono rateLimitIdentifierMono = mssqlPluginExecutor.getEndpointIdentifierForRateLimit(dsConfig); + + StepVerifier.create(rateLimitIdentifierMono) + .assertNext(endpointIdentifier -> { + assertEquals("", endpointIdentifier); + }) + .verifyComplete(); + } + + @Test + public void testGetEndpointIdentifierForRateLimit_HostAbsent_ReturnsEmptyString() { + DatasourceConfiguration dsConfig = createDatasourceConfiguration(container); + + // Setting hostname and port + dsConfig.getEndpoints().get(0).setHost(""); + dsConfig.getEndpoints().get(0).setPort(1433L); + + final Mono endPointIdentifierMono = mssqlPluginExecutor.getEndpointIdentifierForRateLimit(dsConfig); + + StepVerifier.create(endPointIdentifierMono) + .assertNext(endpointIdentifier -> { + assertEquals("", endpointIdentifier); + }) + .verifyComplete(); + } + + @Test + public void testGetEndpointIdentifierForRateLimit_HostAndPortPresent_ReturnsCorrectString() { + DatasourceConfiguration dsConfig = createDatasourceConfiguration(container); + + // Setting hostname and port + dsConfig.getEndpoints().get(0).setHost("localhost"); + dsConfig.getEndpoints().get(0).setPort(34L); + + final Mono endPointIdentifierMono = mssqlPluginExecutor.getEndpointIdentifierForRateLimit(dsConfig); + + StepVerifier.create(endPointIdentifierMono) + .assertNext(endpointIdentifier -> { + assertEquals("localhost_34", endpointIdentifier); + }) + .verifyComplete(); + } + + @Test + public void testGetEndpointIdentifierForRateLimit_HostPresentPortAbsent_ReturnsCorrectString() { + DatasourceConfiguration dsConfig = createDatasourceConfiguration(container); + + // Setting hostname and port + dsConfig.getEndpoints().get(0).setHost("localhost"); + dsConfig.getEndpoints().get(0).setPort(null); + + final Mono endPointIdentifierMono = mssqlPluginExecutor.getEndpointIdentifierForRateLimit(dsConfig); + + StepVerifier.create(endPointIdentifierMono) + .assertNext(endpointIdentifier -> { + assertEquals("localhost_1433", endpointIdentifier); + }) + .verifyComplete(); + } } diff --git a/app/server/appsmith-plugins/mysqlPlugin/src/test/java/com/external/plugins/MySqlPluginTest.java b/app/server/appsmith-plugins/mysqlPlugin/src/test/java/com/external/plugins/MySqlPluginTest.java index d092a6a5fc..cd29212ec0 100755 --- a/app/server/appsmith-plugins/mysqlPlugin/src/test/java/com/external/plugins/MySqlPluginTest.java +++ b/app/server/appsmith-plugins/mysqlPlugin/src/test/java/com/external/plugins/MySqlPluginTest.java @@ -16,6 +16,7 @@ import com.appsmith.external.models.Param; import com.appsmith.external.models.Property; import com.appsmith.external.models.PsParameterDTO; import com.appsmith.external.models.RequestParamDTO; +import com.appsmith.external.models.SSHConnection; import com.appsmith.external.models.SSLDetails; import com.external.plugins.exceptions.MySQLErrorMessages; import com.external.plugins.exceptions.MySQLPluginError; @@ -1455,4 +1456,177 @@ public class MySqlPluginTest { .size() == 0); } + + @Test + public void testGetEndpointIdentifierForRateLimit_endpointNotPresent_ReturnsEmptyString() { + DatasourceConfiguration dsConfig = createDatasourceConfiguration(); + // setting endpoints to empty list + dsConfig.setEndpoints(new ArrayList()); + + final Mono rateLimitIdentifierMono = pluginExecutor.getEndpointIdentifierForRateLimit(dsConfig); + + StepVerifier.create(rateLimitIdentifierMono) + .assertNext(endpointIdentifier -> { + assertEquals("", endpointIdentifier); + }) + .verifyComplete(); + } + + @Test + public void testGetEndpointIdentifierForRateLimit_HostAbsent_ReturnsEmptyString() { + DatasourceConfiguration dsConfig = createDatasourceConfiguration(); + + // Setting hostname and port + dsConfig.getEndpoints().get(0).setHost(""); + dsConfig.getEndpoints().get(0).setPort(3306L); + + final Mono endPointIdentifierMono = pluginExecutor.getEndpointIdentifierForRateLimit(dsConfig); + + StepVerifier.create(endPointIdentifierMono) + .assertNext(endpointIdentifier -> { + assertEquals("", endpointIdentifier); + }) + .verifyComplete(); + } + + @Test + public void testGetEndpointIdentifierForRateLimit_HostAndPortPresent_ReturnsCorrectString() { + DatasourceConfiguration dsConfig = createDatasourceConfiguration(); + + // Setting hostname and port + dsConfig.getEndpoints().get(0).setHost("localhost"); + dsConfig.getEndpoints().get(0).setPort(33L); + + final Mono endPointIdentifierMono = pluginExecutor.getEndpointIdentifierForRateLimit(dsConfig); + + StepVerifier.create(endPointIdentifierMono) + .assertNext(endpointIdentifier -> { + assertEquals("localhost_33", endpointIdentifier); + }) + .verifyComplete(); + } + + @Test + public void testGetEndpointIdentifierForRateLimit_HostPresentPortAbsent_ReturnsCorrectString() { + DatasourceConfiguration dsConfig = createDatasourceConfiguration(); + + // Setting hostname and port + dsConfig.getEndpoints().get(0).setHost("localhost"); + dsConfig.getEndpoints().get(0).setPort(null); + + final Mono endPointIdentifierMono = pluginExecutor.getEndpointIdentifierForRateLimit(dsConfig); + + StepVerifier.create(endPointIdentifierMono) + .assertNext(endpointIdentifier -> { + assertEquals("localhost_3306", endpointIdentifier); + }) + .verifyComplete(); + } + + @Test + public void testGetEndpointIdentifierForRateLimit_HostPresentPortAbsentSshEnabled_ReturnsCorrectString() { + DatasourceConfiguration dsConfig = createDatasourceConfiguration(); + + // Setting hostname and port + dsConfig.getEndpoints().get(0).setHost("localhost"); + dsConfig.getEndpoints().get(0).setPort(null); + + // Set ssh enabled + List properties = new ArrayList(); + properties.add(null); + properties.add(new Property("Connection Method", "SSH")); + dsConfig.setProperties(properties); + + final Mono endPointIdentifierMono = pluginExecutor.getEndpointIdentifierForRateLimit(dsConfig); + + StepVerifier.create(endPointIdentifierMono) + .assertNext(endpointIdentifier -> { + assertEquals("localhost_3306", endpointIdentifier); + }) + .verifyComplete(); + } + + @Test + public void + testGetEndpointIdentifierForRateLimit_HostPresentPortAbsentSshEnabledwithHostAndPort_ReturnsCorrectString() { + DatasourceConfiguration dsConfig = createDatasourceConfiguration(); + + // Setting hostname and port + dsConfig.getEndpoints().get(0).setHost("localhost"); + dsConfig.getEndpoints().get(0).setPort(null); + + // Set ssh enabled + List properties = new ArrayList(); + properties.add(null); + properties.add(new Property("Connection Method", "SSH")); + dsConfig.setProperties(properties); + + SSHConnection sshProxy = new SSHConnection(); + sshProxy.setHost("sshHost"); + sshProxy.setPort(223L); + dsConfig.setSshProxy(sshProxy); + + final Mono endPointIdentifierMono = pluginExecutor.getEndpointIdentifierForRateLimit(dsConfig); + + StepVerifier.create(endPointIdentifierMono) + .assertNext(endpointIdentifier -> { + assertEquals("localhost_3306_sshHost_223", endpointIdentifier); + }) + .verifyComplete(); + } + + @Test + public void + testGetEndpointIdentifierForRateLimit_HostPresentPortAbsentSshEnabledwithHostAndNullPort_ReturnsCorrectString() { + DatasourceConfiguration dsConfig = createDatasourceConfiguration(); + + // Setting hostname and port + dsConfig.getEndpoints().get(0).setHost("localhost"); + dsConfig.getEndpoints().get(0).setPort(null); + + // Set ssh enabled + List properties = new ArrayList(); + properties.add(null); + properties.add(new Property("Connection Method", "SSH")); + dsConfig.setProperties(properties); + + SSHConnection sshProxy = new SSHConnection(); + sshProxy.setHost("sshHost"); + dsConfig.setSshProxy(sshProxy); + + final Mono endPointIdentifierMono = pluginExecutor.getEndpointIdentifierForRateLimit(dsConfig); + + StepVerifier.create(endPointIdentifierMono) + .assertNext(endpointIdentifier -> { + assertEquals("localhost_3306_sshHost_22", endpointIdentifier); + }) + .verifyComplete(); + } + + @Test + public void + testGetEndpointIdentifierForRateLimit_EndpointAbsentSshEnabledwithHostAndNullPort_ReturnsCorrectString() { + DatasourceConfiguration dsConfig = createDatasourceConfiguration(); + + // Setting hostname and port + dsConfig.setEndpoints(new ArrayList()); + + // Set ssh enabled + List properties = new ArrayList(); + properties.add(null); + properties.add(new Property("Connection Method", "SSH")); + dsConfig.setProperties(properties); + + SSHConnection sshProxy = new SSHConnection(); + sshProxy.setHost("sshHost"); + dsConfig.setSshProxy(sshProxy); + + final Mono endPointIdentifierMono = pluginExecutor.getEndpointIdentifierForRateLimit(dsConfig); + + StepVerifier.create(endPointIdentifierMono) + .assertNext(endpointIdentifier -> { + assertEquals("_sshHost_22", endpointIdentifier); + }) + .verifyComplete(); + } } diff --git a/app/server/appsmith-plugins/oraclePlugin/src/test/java/com/external/plugins/OracleConnectionRateLimitTest.java b/app/server/appsmith-plugins/oraclePlugin/src/test/java/com/external/plugins/OracleConnectionRateLimitTest.java new file mode 100644 index 0000000000..9cef764418 --- /dev/null +++ b/app/server/appsmith-plugins/oraclePlugin/src/test/java/com/external/plugins/OracleConnectionRateLimitTest.java @@ -0,0 +1,90 @@ +package com.external.plugins; + +import com.appsmith.external.models.DatasourceConfiguration; +import org.junit.jupiter.api.Test; +import org.testcontainers.containers.OracleContainer; +import org.testcontainers.junit.jupiter.Container; +import org.testcontainers.junit.jupiter.Testcontainers; +import reactor.core.publisher.Mono; +import reactor.test.StepVerifier; + +import java.util.ArrayList; + +import static com.external.plugins.OracleTestDBContainerManager.getDefaultDatasourceConfig; +import static org.junit.jupiter.api.Assertions.assertEquals; + +@Testcontainers +public class OracleConnectionRateLimitTest { + + OraclePlugin.OraclePluginExecutor oraclePluginExecutor = new OraclePlugin.OraclePluginExecutor(); + + @SuppressWarnings("rawtypes") // The type parameter for the container type is just itself and is pseudo-optional. + @Container + private static final OracleContainer oracleDB = OracleTestDBContainerManager.getOracleDBForTest(); + + @Test + public void testGetEndpointIdentifierForRateLimit_endpointNotPresent_ReturnsEmptyString() { + DatasourceConfiguration dsConfig = getDefaultDatasourceConfig(oracleDB); + // setting endpoints to empty list + dsConfig.setEndpoints(new ArrayList()); + + final Mono rateLimitIdentifierMono = oraclePluginExecutor.getEndpointIdentifierForRateLimit(dsConfig); + + StepVerifier.create(rateLimitIdentifierMono) + .assertNext(endpointIdentifier -> { + assertEquals("", endpointIdentifier); + }) + .verifyComplete(); + } + + @Test + public void testGetEndpointIdentifierForRateLimit_HostAbsent_ReturnsEmptyString() { + DatasourceConfiguration dsConfig = getDefaultDatasourceConfig(oracleDB); + + // Setting hostname and port + dsConfig.getEndpoints().get(0).setHost(""); + dsConfig.getEndpoints().get(0).setPort(1521L); + + final Mono endPointIdentifierMono = oraclePluginExecutor.getEndpointIdentifierForRateLimit(dsConfig); + + StepVerifier.create(endPointIdentifierMono) + .assertNext(endpointIdentifier -> { + assertEquals("", endpointIdentifier); + }) + .verifyComplete(); + } + + @Test + public void testGetEndpointIdentifierForRateLimit_HostAndPortPresent_ReturnsCorrectString() { + DatasourceConfiguration dsConfig = getDefaultDatasourceConfig(oracleDB); + + // Setting hostname and port + dsConfig.getEndpoints().get(0).setHost("localhost"); + dsConfig.getEndpoints().get(0).setPort(152L); + + final Mono endPointIdentifierMono = oraclePluginExecutor.getEndpointIdentifierForRateLimit(dsConfig); + + StepVerifier.create(endPointIdentifierMono) + .assertNext(endpointIdentifier -> { + assertEquals("localhost_152", endpointIdentifier); + }) + .verifyComplete(); + } + + @Test + public void testGetEndpointIdentifierForRateLimit_HostPresentPortAbsent_ReturnsCorrectString() { + DatasourceConfiguration dsConfig = getDefaultDatasourceConfig(oracleDB); + + // Setting hostname and port + dsConfig.getEndpoints().get(0).setHost("localhost"); + dsConfig.getEndpoints().get(0).setPort(null); + + final Mono endPointIdentifierMono = oraclePluginExecutor.getEndpointIdentifierForRateLimit(dsConfig); + + StepVerifier.create(endPointIdentifierMono) + .assertNext(endpointIdentifier -> { + assertEquals("localhost_1521", endpointIdentifier); + }) + .verifyComplete(); + } +} diff --git a/app/server/appsmith-plugins/postgresPlugin/src/test/java/com/external/plugins/PostgresPluginTest.java b/app/server/appsmith-plugins/postgresPlugin/src/test/java/com/external/plugins/PostgresPluginTest.java index 9dba145e86..0869fbc84b 100644 --- a/app/server/appsmith-plugins/postgresPlugin/src/test/java/com/external/plugins/PostgresPluginTest.java +++ b/app/server/appsmith-plugins/postgresPlugin/src/test/java/com/external/plugins/PostgresPluginTest.java @@ -1634,4 +1634,70 @@ public class PostgresPluginTest { .size() == 0); } + + @Test + public void testGetEndpointIdentifierForRateLimit_endpointNotPresent_ReturnsEmptyString() { + DatasourceConfiguration dsConfig = createDatasourceConfiguration(); + // setting endpoints to empty list + dsConfig.setEndpoints(new ArrayList()); + + final Mono rateLimitIdentifierMono = pluginExecutor.getEndpointIdentifierForRateLimit(dsConfig); + + StepVerifier.create(rateLimitIdentifierMono) + .assertNext(endpointIdentifier -> { + assertEquals("", endpointIdentifier); + }) + .verifyComplete(); + } + + @Test + public void testGetEndpointIdentifierForRateLimit_HostAbsent_ReturnsEmptyString() { + DatasourceConfiguration dsConfig = createDatasourceConfiguration(); + + // Setting hostname and port + dsConfig.getEndpoints().get(0).setHost(""); + dsConfig.getEndpoints().get(0).setPort(5432L); + + final Mono endPointIdentifierMono = pluginExecutor.getEndpointIdentifierForRateLimit(dsConfig); + + StepVerifier.create(endPointIdentifierMono) + .assertNext(endpointIdentifier -> { + assertEquals("", endpointIdentifier); + }) + .verifyComplete(); + } + + @Test + public void testGetEndpointIdentifierForRateLimit_HostAndPortPresent_ReturnsCorrectString() { + DatasourceConfiguration dsConfig = createDatasourceConfiguration(); + + // Setting hostname and port + dsConfig.getEndpoints().get(0).setHost("localhost"); + dsConfig.getEndpoints().get(0).setPort(5431L); + + final Mono endPointIdentifierMono = pluginExecutor.getEndpointIdentifierForRateLimit(dsConfig); + + StepVerifier.create(endPointIdentifierMono) + .assertNext(endpointIdentifier -> { + assertEquals("localhost_5431", endpointIdentifier); + }) + .verifyComplete(); + } + + @Test + public void testGetEndpointIdentifierForRateLimit_HostPresentPortAbsent_ReturnsCorrectString() { + DatasourceConfiguration dsConfig = createDatasourceConfiguration(); + + // Setting hostname and port + dsConfig.getEndpoints().get(0).setHost("localhost"); + dsConfig.getEndpoints().get(0).setPort(null); + + final Mono endPointIdentifierMono = pluginExecutor.getEndpointIdentifierForRateLimit(dsConfig); + + StepVerifier.create(endPointIdentifierMono) + .assertNext(endpointIdentifier -> { + assertEquals("localhost_5432", endpointIdentifier); + }) + .verifyComplete(); + } } diff --git a/app/server/appsmith-plugins/redisPlugin/src/test/java/com/external/plugins/RedisPluginTest.java b/app/server/appsmith-plugins/redisPlugin/src/test/java/com/external/plugins/RedisPluginTest.java index 8c22dfc76e..9cbfbef371 100644 --- a/app/server/appsmith-plugins/redisPlugin/src/test/java/com/external/plugins/RedisPluginTest.java +++ b/app/server/appsmith-plugins/redisPlugin/src/test/java/com/external/plugins/RedisPluginTest.java @@ -371,4 +371,70 @@ public class RedisPluginTest { .size() == 0); } + + @Test + public void testGetEndpointIdentifierForRateLimit_endpointNotPresent_ReturnsEmptyString() { + DatasourceConfiguration dsConfig = createDatasourceConfiguration(); + // setting endpoints to empty list + dsConfig.setEndpoints(new ArrayList()); + + final Mono rateLimitIdentifierMono = pluginExecutor.getEndpointIdentifierForRateLimit(dsConfig); + + StepVerifier.create(rateLimitIdentifierMono) + .assertNext(endpointIdentifier -> { + assertEquals("", endpointIdentifier); + }) + .verifyComplete(); + } + + @Test + public void testGetEndpointIdentifierForRateLimit_HostAbsent_ReturnsEmptyString() { + DatasourceConfiguration dsConfig = createDatasourceConfiguration(); + + // Setting hostname and port + dsConfig.getEndpoints().get(0).setHost(""); + dsConfig.getEndpoints().get(0).setPort(6379L); + + final Mono endPointIdentifierMono = pluginExecutor.getEndpointIdentifierForRateLimit(dsConfig); + + StepVerifier.create(endPointIdentifierMono) + .assertNext(endpointIdentifier -> { + assertEquals("", endpointIdentifier); + }) + .verifyComplete(); + } + + @Test + public void testGetEndpointIdentifierForRateLimit_HostAndPortPresent_ReturnsCorrectString() { + DatasourceConfiguration dsConfig = createDatasourceConfiguration(); + + // Setting hostname and port + dsConfig.getEndpoints().get(0).setHost("localhost"); + dsConfig.getEndpoints().get(0).setPort(590L); + + final Mono endPointIdentifierMono = pluginExecutor.getEndpointIdentifierForRateLimit(dsConfig); + + StepVerifier.create(endPointIdentifierMono) + .assertNext(endpointIdentifier -> { + assertEquals("localhost_590", endpointIdentifier); + }) + .verifyComplete(); + } + + @Test + public void testGetEndpointIdentifierForRateLimit_HostPresentPortAbsent_ReturnsCorrectString() { + DatasourceConfiguration dsConfig = createDatasourceConfiguration(); + + // Setting hostname and port + dsConfig.getEndpoints().get(0).setHost("localhost"); + dsConfig.getEndpoints().get(0).setPort(null); + + final Mono endPointIdentifierMono = pluginExecutor.getEndpointIdentifierForRateLimit(dsConfig); + + StepVerifier.create(endPointIdentifierMono) + .assertNext(endpointIdentifier -> { + assertEquals("localhost_6379", endpointIdentifier); + }) + .verifyComplete(); + } } diff --git a/app/server/appsmith-plugins/redshiftPlugin/src/test/java/com/external/plugins/RedshiftPluginTest.java b/app/server/appsmith-plugins/redshiftPlugin/src/test/java/com/external/plugins/RedshiftPluginTest.java index c337abbae7..504f540201 100644 --- a/app/server/appsmith-plugins/redshiftPlugin/src/test/java/com/external/plugins/RedshiftPluginTest.java +++ b/app/server/appsmith-plugins/redshiftPlugin/src/test/java/com/external/plugins/RedshiftPluginTest.java @@ -632,4 +632,70 @@ public class RedshiftPluginTest { }) .verifyComplete(); } + + @Test + public void testGetEndpointIdentifierForRateLimit_endpointNotPresent_ReturnsEmptyString() { + DatasourceConfiguration dsConfig = createDatasourceConfiguration(); + // setting endpoints to empty list + dsConfig.setEndpoints(new ArrayList()); + + final Mono rateLimitIdentifierMono = pluginExecutor.getEndpointIdentifierForRateLimit(dsConfig); + + StepVerifier.create(rateLimitIdentifierMono) + .assertNext(endpointIdentifier -> { + assertEquals("", endpointIdentifier); + }) + .verifyComplete(); + } + + @Test + public void testGetEndpointIdentifierForRateLimit_HostAbsent_ReturnsEmptyString() { + DatasourceConfiguration dsConfig = createDatasourceConfiguration(); + + // Setting hostname and port + dsConfig.getEndpoints().get(0).setHost(""); + dsConfig.getEndpoints().get(0).setPort(5439L); + + final Mono endPointIdentifierMono = pluginExecutor.getEndpointIdentifierForRateLimit(dsConfig); + + StepVerifier.create(endPointIdentifierMono) + .assertNext(endpointIdentifier -> { + assertEquals("", endpointIdentifier); + }) + .verifyComplete(); + } + + @Test + public void testGetEndpointIdentifierForRateLimit_HostAndPortPresent_ReturnsCorrectString() { + DatasourceConfiguration dsConfig = createDatasourceConfiguration(); + + // Setting hostname and port + dsConfig.getEndpoints().get(0).setHost("localhost"); + dsConfig.getEndpoints().get(0).setPort(590L); + + final Mono endPointIdentifierMono = pluginExecutor.getEndpointIdentifierForRateLimit(dsConfig); + + StepVerifier.create(endPointIdentifierMono) + .assertNext(endpointIdentifier -> { + assertEquals("localhost_590", endpointIdentifier); + }) + .verifyComplete(); + } + + @Test + public void testGetEndpointIdentifierForRateLimit_HostPresentPortAbsent_ReturnsCorrectString() { + DatasourceConfiguration dsConfig = createDatasourceConfiguration(); + + // Setting hostname and port + dsConfig.getEndpoints().get(0).setHost("localhost"); + dsConfig.getEndpoints().get(0).setPort(null); + + final Mono endPointIdentifierMono = pluginExecutor.getEndpointIdentifierForRateLimit(dsConfig); + + StepVerifier.create(endPointIdentifierMono) + .assertNext(endpointIdentifier -> { + assertEquals("localhost_5439", endpointIdentifier); + }) + .verifyComplete(); + } } diff --git a/app/server/appsmith-plugins/smtpPlugin/src/test/java/com/external/plugins/SmtpPluginTest.java b/app/server/appsmith-plugins/smtpPlugin/src/test/java/com/external/plugins/SmtpPluginTest.java index 114a74cccd..2da564b02d 100644 --- a/app/server/appsmith-plugins/smtpPlugin/src/test/java/com/external/plugins/SmtpPluginTest.java +++ b/app/server/appsmith-plugins/smtpPlugin/src/test/java/com/external/plugins/SmtpPluginTest.java @@ -28,6 +28,7 @@ import org.testcontainers.utility.DockerImageName; import reactor.core.publisher.Mono; import reactor.test.StepVerifier; +import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.List; @@ -460,4 +461,70 @@ public class SmtpPluginTest { .size() == 0); } + + @Test + public void testGetEndpointIdentifierForRateLimit_endpointNotPresent_ReturnsEmptyString() { + DatasourceConfiguration dsConfig = createDatasourceConfiguration(); + // setting endpoints to empty list + dsConfig.setEndpoints(new ArrayList()); + + final Mono rateLimitIdentifierMono = pluginExecutor.getEndpointIdentifierForRateLimit(dsConfig); + + StepVerifier.create(rateLimitIdentifierMono) + .assertNext(endpointIdentifier -> { + assertEquals("", endpointIdentifier); + }) + .verifyComplete(); + } + + @Test + public void testGetEndpointIdentifierForRateLimit_HostAbsent_ReturnsEmptyString() { + DatasourceConfiguration dsConfig = createDatasourceConfiguration(); + + // Setting hostname and port + dsConfig.getEndpoints().get(0).setHost(""); + dsConfig.getEndpoints().get(0).setPort(25L); + + final Mono endPointIdentifierMono = pluginExecutor.getEndpointIdentifierForRateLimit(dsConfig); + + StepVerifier.create(endPointIdentifierMono) + .assertNext(endpointIdentifier -> { + assertEquals("", endpointIdentifier); + }) + .verifyComplete(); + } + + @Test + public void testGetEndpointIdentifierForRateLimit_HostAndPortPresent_ReturnsCorrectString() { + DatasourceConfiguration dsConfig = createDatasourceConfiguration(); + + // Setting hostname and port + dsConfig.getEndpoints().get(0).setHost("localhost"); + dsConfig.getEndpoints().get(0).setPort(2525L); + + final Mono endPointIdentifierMono = pluginExecutor.getEndpointIdentifierForRateLimit(dsConfig); + + StepVerifier.create(endPointIdentifierMono) + .assertNext(endpointIdentifier -> { + assertEquals("localhost_2525", endpointIdentifier); + }) + .verifyComplete(); + } + + @Test + public void testGetEndpointIdentifierForRateLimit_HostPresentPortAbsent_ReturnsCorrectString() { + DatasourceConfiguration dsConfig = createDatasourceConfiguration(); + + // Setting hostname and port + dsConfig.getEndpoints().get(0).setHost("localhost"); + dsConfig.getEndpoints().get(0).setPort(null); + + final Mono endPointIdentifierMono = pluginExecutor.getEndpointIdentifierForRateLimit(dsConfig); + + StepVerifier.create(endPointIdentifierMono) + .assertNext(endpointIdentifier -> { + assertEquals("localhost_25", endpointIdentifier); + }) + .verifyComplete(); + } }