From 89899813a63413587be7bc8a80863060c13011f1 Mon Sep 17 00:00:00 2001 From: Vipinofficial11 Date: Wed, 7 Jun 2023 19:36:52 +0530 Subject: [PATCH 1/2] Added test cases for Connection manager and hide sink plugin. Added test cases for Connection manager and hide sink plugin and added validation for dates. --- pom.xml | 2 +- .../DesignTimeValidation.feature | 5 - .../DesignTimeWithMacros.feature | 11 + .../RunTimeWithMacros.feature | 43 +- .../servicenowsink/DesignTime.feature | 1 - .../DesignTimeValidation.feature | 6 - .../DesignTimeWithMacro.feature | 23 +- .../features/servicenowsink/RunTime.feature | 1 - .../servicenowsink/RunTimeWithMacros.feature | 38 +- .../DesignTimeValidation.feature | 5 - .../DesignTimeWithMacros.feature | 12 + .../RunTimeWithMacros.feature | 49 +- .../plugin/tests/hooks/TestSetupHooks.java | 2 + .../resources/pluginParameters.properties | 1 + .../connector/ServiceNowConnectorConfig.java | 7 + .../source/ServiceNowBaseSourceConfig.java | 53 +- .../ServiceNowMultiSourceConfigTest.java | 11 +- .../source/ServiceNowSourceConfigTest.java | 517 +++++++++++------- widgets/ServiceNow-batchsource.json | 20 +- 19 files changed, 541 insertions(+), 266 deletions(-) diff --git a/pom.xml b/pom.xml index 6d723e5e..28e60d7d 100644 --- a/pom.xml +++ b/pom.xml @@ -395,7 +395,7 @@ lib <_exportcontents> - io.cdap.plugin.*; + io.cdap.plugin.servicenow.source.*,io.cdap.plugin.servicenow.connector.*; diff --git a/src/e2e-test/features/servicenowmultisource/DesignTimeValidation.feature b/src/e2e-test/features/servicenowmultisource/DesignTimeValidation.feature index 5a5d6937..fce48dc4 100644 --- a/src/e2e-test/features/servicenowmultisource/DesignTimeValidation.feature +++ b/src/e2e-test/features/servicenowmultisource/DesignTimeValidation.feature @@ -26,11 +26,6 @@ Feature: ServiceNow Multi Source - Design time validation scenarios And Click on the Validate button Then Verify mandatory property error for below listed properties: | referenceName | - | clientId | - | clientSecret | - | restApiEndpoint | - | user | - | password | @TS-SN-MULTI-DSGN-ERROR-02 Scenario: Verify validation message for invalid table name diff --git a/src/e2e-test/features/servicenowmultisource/DesignTimeWithMacros.feature b/src/e2e-test/features/servicenowmultisource/DesignTimeWithMacros.feature index b6bd128f..ed0201a6 100644 --- a/src/e2e-test/features/servicenowmultisource/DesignTimeWithMacros.feature +++ b/src/e2e-test/features/servicenowmultisource/DesignTimeWithMacros.feature @@ -30,4 +30,15 @@ Feature: ServiceNow Multi Source - Design time scenarios (macro) And Click on the Macro button of Property: "restApiEndpoint" and set the value to: "restApiEndpoint" And Click on the Macro button of Property: "user" and set the value to: "username" And Click on the Macro button of Property: "password" and set the value to: "password" + Then Validate "ServiceNow Multi Source" plugin properties + + @TS-SN-MULTI-DSGN-MACRO-02 + Scenario: Verify user should be able to validate the plugin using connection manager with macros + When Open Datafusion Project to configure pipeline + And Select plugin: "ServiceNow Multi Source" from the plugins list as: "Source" + And Navigate to the properties page of plugin: "ServiceNow Multi Source" + And Fill Reference Name + And Click plugin property: "switch-useConnection" + And Click on the Macro button of Property: "connection" and set the value to: "Connection" + And Click on the Macro button of Property: "tableNames" and set the value to: "tableNames" Then Validate "ServiceNow Multi Source" plugin properties \ No newline at end of file diff --git a/src/e2e-test/features/servicenowmultisource/RunTimeWithMacros.feature b/src/e2e-test/features/servicenowmultisource/RunTimeWithMacros.feature index 80907fb0..56b4aae4 100644 --- a/src/e2e-test/features/servicenowmultisource/RunTimeWithMacros.feature +++ b/src/e2e-test/features/servicenowmultisource/RunTimeWithMacros.feature @@ -136,4 +136,45 @@ Feature: ServiceNow Multi Source - Run time scenarios (macro) And Verify the pipeline status is "Failed" Then Open Pipeline logs and verify Log entries having below listed Level and Message: | Level | Message | - | ERROR | invalid.filters.logsmessage | \ No newline at end of file + | ERROR | invalid.filters.logsmessage | + + @TS-SN-MULTI-RNTM-MACRO-05 @BQ_SINK @CONNECTION + Scenario: Verify user should be able to preview the pipeline when the source plugin is configured for connection manager with macros + When Open Datafusion Project to configure pipeline + And Select plugin: "ServiceNow Multi Source" from the plugins list as: "Source" + And Navigate to the properties page of plugin: "ServiceNow Multi Source" + And Fill Reference Name + And Click on the Macro button of Property: "tableNames" and set the value to: "tableNames" + And Click plugin property: "switch-useConnection" + And Click on the Browse Connections button + And Click on the Add Connection button + And Click plugin property: "connector-ServiceNow" + And Enter input plugin property: "name" with value: "connection.name" + And fill Credentials section for pipeline user + Then Click on the Test Connection button + And Verify the test connection is successful + Then Click on the Create button + And Click on the Macro button of Property: "connection" and set the value to: "Connection" + Then Validate "ServiceNow Multi Source" plugin properties + And Close the Plugin Properties page + And Select Sink plugin: "BigQueryMultiTable" from the plugins list + And Connect source as "ServiceNow" and sink as "BigQueryMultiTable" to establish connection + And Navigate to the properties page of plugin: "BigQuery Multi Table" + And Configure BigQuery Multi Table sink plugin for Dataset + Then Validate "BigQuery Multi Table" plugin properties + And Close the Plugin Properties page + And Preview and run the pipeline + And Enter runtime argument value "receiving_slip_line" for key "tableNames" + And Enter runtime argument value "connectionMacros" for key "Connection" + Then Run the preview of pipeline with runtime arguments + Then Verify the preview of pipeline is "success" + And Close the pipeline logs + And Close the preview + And Save and Deploy Pipeline + And Run the Pipeline in Runtime + And Enter runtime argument value "receiving_slip_line" for key "tableName" + And Enter runtime argument value "connectionMacros" for key "Connection" + And Run the Pipeline in Runtime with runtime arguments + And Wait till pipeline is in running state + And Open and capture logs + Then Verify the pipeline status is "Succeeded" \ No newline at end of file diff --git a/src/e2e-test/features/servicenowsink/DesignTime.feature b/src/e2e-test/features/servicenowsink/DesignTime.feature index 0f201a58..863d82b7 100644 --- a/src/e2e-test/features/servicenowsink/DesignTime.feature +++ b/src/e2e-test/features/servicenowsink/DesignTime.feature @@ -15,7 +15,6 @@ @ServiceNow @SNSink @Smoke -@Regression Feature: ServiceNow Sink - Design time scenarios @TS-SN-DSGN-SINK-01 @BQ_SOURCE_TEST_RECEIVING_SLIP_LINE diff --git a/src/e2e-test/features/servicenowsink/DesignTimeValidation.feature b/src/e2e-test/features/servicenowsink/DesignTimeValidation.feature index 28f9047d..3df26d08 100644 --- a/src/e2e-test/features/servicenowsink/DesignTimeValidation.feature +++ b/src/e2e-test/features/servicenowsink/DesignTimeValidation.feature @@ -15,7 +15,6 @@ @ServiceNow @SNSink @Smoke -@Regression Feature: ServiceNow Sink - Design time validation scenarios @TS-SN-DSGN-SINK-ERROR-01 @@ -26,11 +25,6 @@ Feature: ServiceNow Sink - Design time validation scenarios And Click on the Validate button Then Verify mandatory property error for below listed properties: | referenceName | - | clientId | - | clientSecret | - | restApiEndpoint | - | user | - | password | @TS-SN-DSGN-SINK-ERROR-02 Scenario: Verify invalid credentials validation messages diff --git a/src/e2e-test/features/servicenowsink/DesignTimeWithMacro.feature b/src/e2e-test/features/servicenowsink/DesignTimeWithMacro.feature index c2215a21..44648963 100644 --- a/src/e2e-test/features/servicenowsink/DesignTimeWithMacro.feature +++ b/src/e2e-test/features/servicenowsink/DesignTimeWithMacro.feature @@ -15,7 +15,6 @@ @ServiceNow @SNSink @Smoke -@@Regression Feature: ServiceNow Sink - Design time validation scenarios (macro) @TS-SN-DSGN-SINK-MACRO-01 @BQ_SOURCE_TEST_RECEIVING_SLIP_LINE @@ -69,4 +68,24 @@ Feature: ServiceNow Sink - Design time validation scenarios (macro) And fill Credentials section for pipeline user And Enter input plugin property: "tableName" with value: "receiving_slip_line" And Click on the Macro button of Property: "operation" and set the value to: "operation" - Then Validate "ServiceNow" plugin properties \ No newline at end of file + Then Validate "ServiceNow" plugin properties + + @TS-SN-DSGN-SINK-MACRO-04 @BQ_SOURCE_TEST_RECEIVING_SLIP_LINE + Scenario: Verify user should be able to validate plugin with macros for Connection Manager + When Open Datafusion Project to configure pipeline + And Select plugin: "BigQuery" from the plugins list as: "Source" + And Navigate to the properties page of plugin: "BigQuery" + And Configure BigQuery source plugin for Dataset and Table + And Validate "BigQuery" plugin properties + And Close the Plugin Properties page + And Select Sink plugin: "ServiceNow" from the plugins list + And Connect plugins: "BigQuery" and "ServiceNow" to establish connection + And Navigate to the properties page of plugin: "ServiceNow" + And Fill Reference Name + And Click plugin property: "switch-useConnection" + And Click on the Macro button of Property: "connection" and set the value to: "Connection" + And Enter input plugin property: "tableName" with value: "receiving_slip_line" + Then Validate "ServiceNow" plugin properties + + + diff --git a/src/e2e-test/features/servicenowsink/RunTime.feature b/src/e2e-test/features/servicenowsink/RunTime.feature index f3379fc4..8d00fa37 100644 --- a/src/e2e-test/features/servicenowsink/RunTime.feature +++ b/src/e2e-test/features/servicenowsink/RunTime.feature @@ -15,7 +15,6 @@ @ServiceNow @SNSink @Smoke -@Regression Feature: ServiceNow Sink - Run time scenarios @TS-SN-RNTM-SINK-01 @BQ_SOURCE_TEST_RECEIVING_SLIP_LINE diff --git a/src/e2e-test/features/servicenowsink/RunTimeWithMacros.feature b/src/e2e-test/features/servicenowsink/RunTimeWithMacros.feature index cabb0023..fd1a1f17 100644 --- a/src/e2e-test/features/servicenowsink/RunTimeWithMacros.feature +++ b/src/e2e-test/features/servicenowsink/RunTimeWithMacros.feature @@ -15,7 +15,6 @@ @ServiceNow @SNSink @Smoke -@Regression Feature: ServiceNow Sink - Run time scenarios (macro) @TS-SN-RNTM-SINK-MACRO-01 @BQ_SOURCE_TEST_RECEIVING_SLIP_LINE @BQ_SINK_CLEANUP @@ -198,3 +197,40 @@ Feature: ServiceNow Sink - Run time scenarios (macro) | Level | Message | | ERROR | invalid.credentials.logsmessage | + @TS-SN-RNTM-SINK-MACRO-01 @BQ_SOURCE_TEST_RECEIVING_SLIP_LINE @BQ_SINK_CLEANUP @CONNECTION + Scenario: Verify user should be able to preview a pipeline when plugin is configured for Insert operation with macros for connection manager + When Open Datafusion Project to configure pipeline + And Select plugin: "BigQuery" from the plugins list as: "Source" + And Navigate to the properties page of plugin: "BigQuery" + And Fill Reference Name + And Configure BigQuery source plugin for Dataset and Table + And Validate "BigQuery" plugin properties + And Capture the generated Output Schema + And Close the Plugin Properties page + And Select Sink plugin: "ServiceNow" from the plugins list + And Connect plugins: "BigQuery" and "ServiceNow" to establish connection + And Navigate to the properties page of plugin: "ServiceNow" + And Fill Reference Name + And Select radio button plugin property: "operation" with value: "INSERT" + And Click on the Macro button of Property: "tableName" and set the value to: "tableName" + And Click on the Macro button of Property: "connection" and set the value to: "Connection" + And Validate "ServiceNow" plugin properties + And Close the Plugin Properties page + And Preview and run the pipeline + And Enter runtime argument value "receiving_slip_line" for key "tableName" + And Enter runtime argument value "connectionMacros" for key "Connection" + And Run the preview of pipeline with runtime arguments + Then Verify the preview of pipeline is "success" + And Open and capture pipeline preview logs + And Close the pipeline logs + And Close the preview + And Save and Deploy Pipeline + And Run the Pipeline in Runtime + And Enter runtime argument value "receiving_slip_line" for key "tableName" + And Enter runtime argument value "connectionMacros" for key "Connection" + And Run the Pipeline in Runtime with runtime arguments + And Wait till pipeline is in running state + And Open and capture logs + And Verify the pipeline status is "Succeeded" + And Close the pipeline logs + diff --git a/src/e2e-test/features/servicenowsource/DesignTimeValidation.feature b/src/e2e-test/features/servicenowsource/DesignTimeValidation.feature index 750409a4..5f330583 100644 --- a/src/e2e-test/features/servicenowsource/DesignTimeValidation.feature +++ b/src/e2e-test/features/servicenowsource/DesignTimeValidation.feature @@ -26,11 +26,6 @@ Feature: ServiceNow Source - Design time validation scenarios And Click on the Validate button Then Verify mandatory property error for below listed properties: | referenceName | - | clientId | - | clientSecret | - | restApiEndpoint | - | user | - | password | @TS-SN-DSGN-ERROR-02 Scenario: Verify invalid credentials validation messages diff --git a/src/e2e-test/features/servicenowsource/DesignTimeWithMacros.feature b/src/e2e-test/features/servicenowsource/DesignTimeWithMacros.feature index c7f55b0b..97223e2c 100644 --- a/src/e2e-test/features/servicenowsource/DesignTimeWithMacros.feature +++ b/src/e2e-test/features/servicenowsource/DesignTimeWithMacros.feature @@ -46,4 +46,16 @@ Feature: ServiceNow Source - Design time scenarios (macro) And Click on the Macro button of Property: "restApiEndpoint" and set the value to: "restApiEndpoint" And Click on the Macro button of Property: "user" and set the value to: "username" And Click on the Macro button of Property: "password" and set the value to: "password" + Then Validate "ServiceNow" plugin properties + + @TS-SN-DSGN-MACRO-03 + Scenario: Verify user should be able to validate plugin with macros for connection manager + When Open Datafusion Project to configure pipeline + And Select plugin: "ServiceNow" from the plugins list as: "Source" + And Navigate to the properties page of plugin: "ServiceNow" + And Fill Reference Name + And Select mode as: "TABLE" + And Click on the Macro button of Property: "tableName" and set the value to: "tableName" + And Click plugin property: "switch-useConnection" + And Click on the Macro button of Property: "connection" and set the value to: "Connection" Then Validate "ServiceNow" plugin properties \ No newline at end of file diff --git a/src/e2e-test/features/servicenowsource/RunTimeWithMacros.feature b/src/e2e-test/features/servicenowsource/RunTimeWithMacros.feature index 7597dc04..926dbdab 100644 --- a/src/e2e-test/features/servicenowsource/RunTimeWithMacros.feature +++ b/src/e2e-test/features/servicenowsource/RunTimeWithMacros.feature @@ -184,4 +184,51 @@ Feature: ServiceNow Source - Run time scenarios (macro) And Verify the pipeline status is "Failed" Then Open Pipeline logs and verify Log entries having below listed Level and Message: | Level | Message | - | ERROR | invalid.filters.logsmessage | \ No newline at end of file + | ERROR | invalid.filters.logsmessage | + + @TS-SN-RNTM-MACRO-06 @SN_SOURCE_CONFIG @SN_RECEIVING_SLIP_LINE @BQ_SINK @CONNECTION + Scenario: Verify user should be able to run a pipeline when ServiceNow plugin is configured with macros for connection manager + When Open Datafusion Project to configure pipeline + And Select plugin: "ServiceNow" from the plugins list as: "Source" + And Navigate to the properties page of plugin: "ServiceNow" + And Fill Reference Name + And Select mode as: "TABLE" + And Click on the Macro button of Property: "tableName" and set the value to: "tableName" + And Click plugin property: "switch-useConnection" + And Click on the Browse Connections button + And Click on the Add Connection button + And Click plugin property: "connector-ServiceNow" + And Enter input plugin property: "name" with value: "connection.name" + And fill Credentials section for pipeline user + Then Click on the Test Connection button + And Verify the test connection is successful + Then Click on the Create button + And Click on the Macro button of Property: "connection" and set the value to: "Connection" + Then Validate "ServiceNow" plugin properties + And Close the Plugin Properties page + And Select Sink plugin: "BigQueryTable" from the plugins list + And Connect source as "ServiceNow" and sink as "BigQuery" to establish connection + And Navigate to the properties page of plugin: "BigQuery" + And Replace input plugin property: "project" with value: "projectId" + And Enter input plugin property: "datasetProject" with value: "datasetprojectId" + And Configure BigQuery sink plugin for Dataset and Table + Then Validate "BigQuery" plugin properties + And Close the Plugin Properties page + And Save and Deploy Pipeline + And Run the Pipeline in Runtime + And Enter runtime argument value "receiving_slip_line" for key "tableName" + And Enter runtime argument value "connectionMacros" for key "Connection" + And Run the Pipeline in Runtime with runtime arguments + And Wait till pipeline is in running state + And Open and capture logs + Then Verify the pipeline status is "Succeeded" + And Close the pipeline logs + And Close the preview + And Save and Deploy Pipeline + And Run the Pipeline in Runtime + And Enter runtime argument value "receiving_slip_line" for key "tableName" + And Enter runtime argument value "connectionMacros" for key "Connection" + And Run the Pipeline in Runtime with runtime arguments + And Wait till pipeline is in running state + And Open and capture logs + Then Verify the pipeline status is "Succeeded" \ No newline at end of file diff --git a/src/e2e-test/java/io/cdap/plugin/tests/hooks/TestSetupHooks.java b/src/e2e-test/java/io/cdap/plugin/tests/hooks/TestSetupHooks.java index 4e9f4727..673a52ea 100644 --- a/src/e2e-test/java/io/cdap/plugin/tests/hooks/TestSetupHooks.java +++ b/src/e2e-test/java/io/cdap/plugin/tests/hooks/TestSetupHooks.java @@ -237,6 +237,8 @@ public static void setNewConnectionName() { String connectionName = "ServiceNowConnection" + RandomStringUtils.randomAlphanumeric(10); PluginPropertyUtils.addPluginProp("connection.name", connectionName); BeforeActions.scenario.write("New Connection name: " + connectionName); + String connectionMacros = "${conn(" + connectionName + ")}"; + PluginPropertyUtils.addPluginProp("connectionMacros", connectionMacros); } @After(order = 1, value = "@BQ_SINK_CLEANUP") diff --git a/src/e2e-test/resources/pluginParameters.properties b/src/e2e-test/resources/pluginParameters.properties index 986ba223..50787eb0 100644 --- a/src/e2e-test/resources/pluginParameters.properties +++ b/src/e2e-test/resources/pluginParameters.properties @@ -33,6 +33,7 @@ invalid.tablename=proc #Connection Manager connection.name = dummy +connectionMacros=dummy ##BigQuery projectId=cdf-athena diff --git a/src/main/java/io/cdap/plugin/servicenow/connector/ServiceNowConnectorConfig.java b/src/main/java/io/cdap/plugin/servicenow/connector/ServiceNowConnectorConfig.java index a3dac2c4..e32bc787 100644 --- a/src/main/java/io/cdap/plugin/servicenow/connector/ServiceNowConnectorConfig.java +++ b/src/main/java/io/cdap/plugin/servicenow/connector/ServiceNowConnectorConfig.java @@ -29,6 +29,8 @@ import java.util.Map; +import javax.annotation.Nullable; + /** * PluginConfig for ServiceNow Connector @@ -36,26 +38,31 @@ public class ServiceNowConnectorConfig extends PluginConfig { @Name(ServiceNowConstants.PROPERTY_CLIENT_ID) @Macro + @Nullable @Description(" The Client ID for ServiceNow Instance.") private final String clientId; @Name(ServiceNowConstants.PROPERTY_CLIENT_SECRET) @Macro + @Nullable @Description("The Client Secret for ServiceNow Instance.") private final String clientSecret; @Name(ServiceNowConstants.PROPERTY_API_ENDPOINT) @Macro + @Nullable @Description("The REST API Endpoint for ServiceNow Instance. For example, https://instance.service-now.com") private final String restApiEndpoint; @Name(ServiceNowConstants.PROPERTY_USER) @Macro + @Nullable @Description("The user name for ServiceNow Instance.") private final String user; @Name(ServiceNowConstants.PROPERTY_PASSWORD) @Macro + @Nullable @Description("The password for ServiceNow Instance.") private final String password; diff --git a/src/main/java/io/cdap/plugin/servicenow/source/ServiceNowBaseSourceConfig.java b/src/main/java/io/cdap/plugin/servicenow/source/ServiceNowBaseSourceConfig.java index e829d354..f20134be 100644 --- a/src/main/java/io/cdap/plugin/servicenow/source/ServiceNowBaseSourceConfig.java +++ b/src/main/java/io/cdap/plugin/servicenow/source/ServiceNowBaseSourceConfig.java @@ -24,7 +24,6 @@ import io.cdap.cdap.etl.api.FailureCollector; import io.cdap.plugin.common.IdUtils; import io.cdap.plugin.servicenow.ServiceNowBaseConfig; - import io.cdap.plugin.servicenow.util.ServiceNowConstants; import io.cdap.plugin.servicenow.util.SourceValueType; import io.cdap.plugin.servicenow.util.Util; @@ -44,9 +43,9 @@ public class ServiceNowBaseSourceConfig extends ServiceNowBaseConfig { @Name(ServiceNowConstants.PROPERTY_VALUE_TYPE) @Macro @Description("The type of values to be returned." - + "`Actual` - will fetch the actual values from the ServiceNow tables" - + "`Display` - will fetch the display values from the ServiceNow tables." - + "Default is Actual.") + + "`Actual` - will fetch the actual values from the ServiceNow tables" + + "`Display` - will fetch the display values from the ServiceNow tables." + + "Default is Actual.") private String valueType; @Name(ServiceNowConstants.PROPERTY_START_DATE) @@ -72,16 +71,16 @@ public class ServiceNowBaseSourceConfig extends ServiceNowBaseConfig { /** * Constructor for ServiceNowSourceConfig object. * - * @param referenceName The reference name - * @param clientId The Client Id for ServiceNow - * @param clientSecret The Client Secret for ServiceNow + * @param referenceName The reference name + * @param clientId The Client Id for ServiceNow + * @param clientSecret The Client Secret for ServiceNow * @param restApiEndpoint The rest API endpoint for ServiceNow - * @param user The user id for ServiceNow - * @param password The password for ServiceNow - * @param tableNameField The field name to hold the table name value - * @param valueType The value type - * @param startDate The start date - * @param endDate The end date + * @param user The user id for ServiceNow + * @param password The password for ServiceNow + * @param tableNameField The field name to hold the table name value + * @param valueType The value type + * @param startDate The start date + * @param endDate The end date */ public ServiceNowBaseSourceConfig(String referenceName, String clientId, String clientSecret, String restApiEndpoint, String user, String password, String tableNameField, String valueType, @@ -137,7 +136,7 @@ SourceValueType getValueType(FailureCollector collector) { } collector.addFailure("Unsupported type value: " + valueType, - String.format("Supported value types are: %s", SourceValueType.getSupportedValueTypes())) + String.format("Supported value types are: %s", SourceValueType.getSupportedValueTypes())) .withConfigProperty(ServiceNowConstants.PROPERTY_VALUE_TYPE); collector.getOrThrowException(); return null; @@ -163,39 +162,31 @@ private void validateValueType(FailureCollector collector) { private void validateDateRange(FailureCollector collector) { if (containsMacro(ServiceNowConstants.PROPERTY_START_DATE) || - containsMacro(ServiceNowConstants.PROPERTY_END_DATE)) { + containsMacro(ServiceNowConstants.PROPERTY_END_DATE) || + (Util.isNullOrEmpty(startDate) && Util.isNullOrEmpty(endDate))) { return; } - if (!Util.isNullOrEmpty(startDate) && !Util.isNullOrEmpty(endDate) && - !Util.isValidDateFormat(ServiceNowConstants.DATE_FORMAT, startDate) && - !Util.isValidDateFormat(ServiceNowConstants.DATE_FORMAT, endDate)) { - collector.addFailure("Invalid format for Start date. Correct Format: " + - ServiceNowConstants.DATE_FORMAT, null) - .withConfigProperty(ServiceNowConstants.PROPERTY_START_DATE); - collector.addFailure("Invalid format for End date. Correct Format:" + - ServiceNowConstants.DATE_FORMAT, null) + if (Util.isNullOrEmpty(startDate) || Util.isNullOrEmpty(endDate)) { + collector.addFailure("Enter values for both Start date and End date.", null) + .withConfigProperty(ServiceNowConstants.PROPERTY_START_DATE) .withConfigProperty(ServiceNowConstants.PROPERTY_END_DATE); return; } + // validate the date formats for both start date & end date if (!Util.isNullOrEmpty(startDate) && !Util.isValidDateFormat(ServiceNowConstants.DATE_FORMAT, startDate)) { collector.addFailure("Invalid format for Start date. Correct Format: " + - ServiceNowConstants.DATE_FORMAT, null) + ServiceNowConstants.DATE_FORMAT, null) .withConfigProperty(ServiceNowConstants.PROPERTY_START_DATE); - return; } if (!Util.isNullOrEmpty(endDate) && !Util.isValidDateFormat(ServiceNowConstants.DATE_FORMAT, endDate)) { collector.addFailure("Invalid format for End date. Correct Format:" + - ServiceNowConstants.DATE_FORMAT, null) + ServiceNowConstants.DATE_FORMAT, null) .withConfigProperty(ServiceNowConstants.PROPERTY_END_DATE); - return; - } - - if (Util.isNullOrEmpty(startDate) || Util.isNullOrEmpty(endDate)) { - return; } + collector.getOrThrowException(); // validate the date range by checking if start date is smaller than end date LocalDate fromDate = LocalDate.parse(startDate); diff --git a/src/test/java/io/cdap/plugin/servicenow/source/ServiceNowMultiSourceConfigTest.java b/src/test/java/io/cdap/plugin/servicenow/source/ServiceNowMultiSourceConfigTest.java index 474c2933..49553a6e 100644 --- a/src/test/java/io/cdap/plugin/servicenow/source/ServiceNowMultiSourceConfigTest.java +++ b/src/test/java/io/cdap/plugin/servicenow/source/ServiceNowMultiSourceConfigTest.java @@ -51,9 +51,10 @@ public class ServiceNowMultiSourceConfigTest { @Test public void testConstructor() { serviceNowMultiSourceConfig = new ServiceNowMultiSourceConfig("referenceName", "client_id", - "client_secret", "https://example.com", "user", "password", - "tablename", "Actual", "2021-12-30", "2021-12-31", - "sys_user"); + "client_secret", "https://example.com", "user", + "password", + "tablename", "Actual", "2021-12-30", "2021-12-31", + "sys_user"); Assert.assertEquals("sys_user", serviceNowMultiSourceConfig.getTableNames()); Assert.assertEquals("Actual", serviceNowMultiSourceConfig.getValueType().getValueType()); Assert.assertEquals("2021-12-30", serviceNowMultiSourceConfig.getStartDate()); @@ -74,8 +75,6 @@ public void testValidateInvalidConnection() { .setClientSecret("client_secret") .setTableNames("sys_user") .setValueType("Actual") - .setStartDate("2021-12-30") - .setEndDate("2021-12-31") .setTableNameField("tablename") .buildMultiSource(); serviceNowMultiSourceConfig.validate(mockFailureCollector); @@ -228,8 +227,6 @@ public void testValidateReferenceName() throws Exception { .setClientSecret("client_secret") .setTableNames("sys_user") .setValueType("Actual") - .setStartDate("2021-12-30") - .setEndDate("2021-12-31") .setTableNameField("tablename") .buildMultiSource(); ServiceNowTableAPIClientImpl restApi = Mockito.mock(ServiceNowTableAPIClientImpl.class); diff --git a/src/test/java/io/cdap/plugin/servicenow/source/ServiceNowSourceConfigTest.java b/src/test/java/io/cdap/plugin/servicenow/source/ServiceNowSourceConfigTest.java index 12d58039..277b2888 100644 --- a/src/test/java/io/cdap/plugin/servicenow/source/ServiceNowSourceConfigTest.java +++ b/src/test/java/io/cdap/plugin/servicenow/source/ServiceNowSourceConfigTest.java @@ -173,11 +173,14 @@ public void testValueTypeInvalid() { public void testValidateClientIdNull() { MockFailureCollector collector = new MockFailureCollector(); ServiceNowSourceConfig config = withServiceNowValidationMock(ServiceNowSourceConfigHelper.newConfigBuilder() - .setClientId(null) - .setClientSecret(ServiceNowSourceConfigHelper.TEST_CLIENT_SECRET) - .setRestApiEndpoint(ServiceNowSourceConfigHelper.TEST_API_ENDPOINT) - .setUser(ServiceNowSourceConfigHelper.TEST_USER) - .setPassword(ServiceNowSourceConfigHelper.TEST_PASSWORD) + .setClientId(null) + .setClientSecret( + ServiceNowSourceConfigHelper.TEST_CLIENT_SECRET) + .setRestApiEndpoint( + ServiceNowSourceConfigHelper.TEST_API_ENDPOINT) + .setUser(ServiceNowSourceConfigHelper.TEST_USER) + .setPassword( + ServiceNowSourceConfigHelper.TEST_PASSWORD) .build(), collector); try { @@ -195,11 +198,14 @@ public void testValidateClientIdNull() { public void testValidateClientSecretNull() { MockFailureCollector collector = new MockFailureCollector(); ServiceNowSourceConfig config = withServiceNowValidationMock(ServiceNowSourceConfigHelper.newConfigBuilder() - .setClientId(ServiceNowSourceConfigHelper.TEST_CLIENT_ID) - .setClientSecret(null) - .setRestApiEndpoint(ServiceNowSourceConfigHelper.TEST_API_ENDPOINT) - .setUser(ServiceNowSourceConfigHelper.TEST_USER) - .setPassword(ServiceNowSourceConfigHelper.TEST_PASSWORD) + .setClientId( + ServiceNowSourceConfigHelper.TEST_CLIENT_ID) + .setClientSecret(null) + .setRestApiEndpoint( + ServiceNowSourceConfigHelper.TEST_API_ENDPOINT) + .setUser(ServiceNowSourceConfigHelper.TEST_USER) + .setPassword( + ServiceNowSourceConfigHelper.TEST_PASSWORD) .build(), collector); try { @@ -217,17 +223,23 @@ public void testValidateClientSecretNull() { public void testValidateApiEndpointNull() { MockFailureCollector collector = new MockFailureCollector(); ServiceNowSourceConfig config = withServiceNowValidationMock(ServiceNowSourceConfigHelper.newConfigBuilder() - .setClientId(ServiceNowSourceConfigHelper.TEST_CLIENT_ID) - .setClientSecret(ServiceNowSourceConfigHelper.TEST_CLIENT_SECRET) - .setRestApiEndpoint(null) - .setUser(ServiceNowSourceConfigHelper.TEST_USER) - .setPassword(ServiceNowSourceConfigHelper.TEST_PASSWORD) - .setClientId(ServiceNowSourceConfigHelper.TEST_CLIENT_ID) - .setClientSecret(ServiceNowSourceConfigHelper.TEST_CLIENT_SECRET) - .setRestApiEndpoint(null) - .setUser(ServiceNowSourceConfigHelper.TEST_USER) - .setPassword(ServiceNowSourceConfigHelper.TEST_PASSWORD) - .build(), collector); + .setClientId( + ServiceNowSourceConfigHelper.TEST_CLIENT_ID) + .setClientSecret( + ServiceNowSourceConfigHelper.TEST_CLIENT_SECRET) + .setRestApiEndpoint(null) + .setUser(ServiceNowSourceConfigHelper.TEST_USER) + .setPassword( + ServiceNowSourceConfigHelper.TEST_PASSWORD) + .setClientId( + ServiceNowSourceConfigHelper.TEST_CLIENT_ID) + .setClientSecret( + ServiceNowSourceConfigHelper.TEST_CLIENT_SECRET) + .setRestApiEndpoint(null) + .setUser(ServiceNowSourceConfigHelper.TEST_USER) + .setPassword( + ServiceNowSourceConfigHelper.TEST_PASSWORD) + .build(), collector); try { config.validate(collector); @@ -244,17 +256,25 @@ public void testValidateApiEndpointNull() { public void testValidateUserNull() { MockFailureCollector collector = new MockFailureCollector(); ServiceNowSourceConfig config = withServiceNowValidationMock(ServiceNowSourceConfigHelper.newConfigBuilder() - .setClientId(ServiceNowSourceConfigHelper.TEST_CLIENT_ID) - .setClientSecret(ServiceNowSourceConfigHelper.TEST_CLIENT_SECRET) - .setRestApiEndpoint(ServiceNowSourceConfigHelper.TEST_API_ENDPOINT) - .setUser(null) - .setPassword(ServiceNowSourceConfigHelper.TEST_PASSWORD) - .setClientId(ServiceNowSourceConfigHelper.TEST_CLIENT_ID) - .setClientSecret(ServiceNowSourceConfigHelper.TEST_CLIENT_SECRET) - .setRestApiEndpoint(ServiceNowSourceConfigHelper.TEST_API_ENDPOINT) - .setUser(null) - .setPassword(ServiceNowSourceConfigHelper.TEST_PASSWORD) - .build(), collector); + .setClientId( + ServiceNowSourceConfigHelper.TEST_CLIENT_ID) + .setClientSecret( + ServiceNowSourceConfigHelper.TEST_CLIENT_SECRET) + .setRestApiEndpoint( + ServiceNowSourceConfigHelper.TEST_API_ENDPOINT) + .setUser(null) + .setPassword( + ServiceNowSourceConfigHelper.TEST_PASSWORD) + .setClientId( + ServiceNowSourceConfigHelper.TEST_CLIENT_ID) + .setClientSecret( + ServiceNowSourceConfigHelper.TEST_CLIENT_SECRET) + .setRestApiEndpoint( + ServiceNowSourceConfigHelper.TEST_API_ENDPOINT) + .setUser(null) + .setPassword( + ServiceNowSourceConfigHelper.TEST_PASSWORD) + .build(), collector); try { config.validate(collector); @@ -271,16 +291,22 @@ public void testValidateUserNull() { public void testValidatePasswordNull() { MockFailureCollector collector = new MockFailureCollector(); ServiceNowSourceConfig config = withServiceNowValidationMock(ServiceNowSourceConfigHelper.newConfigBuilder() - .setClientId(ServiceNowSourceConfigHelper.TEST_CLIENT_ID) - .setClientSecret(ServiceNowSourceConfigHelper.TEST_CLIENT_SECRET) - .setRestApiEndpoint(ServiceNowSourceConfigHelper.TEST_API_ENDPOINT) - .setUser(ServiceNowSourceConfigHelper.TEST_USER) - .setPassword(null) - .setClientId(ServiceNowSourceConfigHelper.TEST_CLIENT_ID) - .setClientSecret(ServiceNowSourceConfigHelper.TEST_CLIENT_SECRET) - .setRestApiEndpoint(ServiceNowSourceConfigHelper.TEST_API_ENDPOINT) - .setUser(ServiceNowSourceConfigHelper.TEST_USER) - .setPassword(null) + .setClientId( + ServiceNowSourceConfigHelper.TEST_CLIENT_ID) + .setClientSecret( + ServiceNowSourceConfigHelper.TEST_CLIENT_SECRET) + .setRestApiEndpoint( + ServiceNowSourceConfigHelper.TEST_API_ENDPOINT) + .setUser(ServiceNowSourceConfigHelper.TEST_USER) + .setPassword(null) + .setClientId( + ServiceNowSourceConfigHelper.TEST_CLIENT_ID) + .setClientSecret( + ServiceNowSourceConfigHelper.TEST_CLIENT_SECRET) + .setRestApiEndpoint( + ServiceNowSourceConfigHelper.TEST_API_ENDPOINT) + .setUser(ServiceNowSourceConfigHelper.TEST_USER) + .setPassword(null) .build(), collector); try { @@ -298,17 +324,25 @@ public void testValidatePasswordNull() { public void testValidCredentials() { MockFailureCollector collector = new MockFailureCollector(); ServiceNowSourceConfig config = withServiceNowValidationMock(ServiceNowSourceConfigHelper.newConfigBuilder() - .setClientId(ServiceNowSourceConfigHelper.TEST_CLIENT_ID) - .setClientSecret(ServiceNowSourceConfigHelper.TEST_CLIENT_SECRET) - .setRestApiEndpoint((ServiceNowSourceConfigHelper.TEST_API_ENDPOINT)) - .setUser(ServiceNowSourceConfigHelper.TEST_USER) - .setPassword(ServiceNowSourceConfigHelper.TEST_PASSWORD) - .setClientId(ServiceNowSourceConfigHelper.TEST_CLIENT_ID) - .setClientSecret(ServiceNowSourceConfigHelper.TEST_CLIENT_SECRET) - .setRestApiEndpoint((ServiceNowSourceConfigHelper.TEST_API_ENDPOINT)) - .setUser(ServiceNowSourceConfigHelper.TEST_USER) - .setPassword(ServiceNowSourceConfigHelper.TEST_PASSWORD) - .build(), collector); + .setClientId( + ServiceNowSourceConfigHelper.TEST_CLIENT_ID) + .setClientSecret( + ServiceNowSourceConfigHelper.TEST_CLIENT_SECRET) + .setRestApiEndpoint( + (ServiceNowSourceConfigHelper.TEST_API_ENDPOINT)) + .setUser(ServiceNowSourceConfigHelper.TEST_USER) + .setPassword( + ServiceNowSourceConfigHelper.TEST_PASSWORD) + .setClientId( + ServiceNowSourceConfigHelper.TEST_CLIENT_ID) + .setClientSecret( + ServiceNowSourceConfigHelper.TEST_CLIENT_SECRET) + .setRestApiEndpoint( + (ServiceNowSourceConfigHelper.TEST_API_ENDPOINT)) + .setUser(ServiceNowSourceConfigHelper.TEST_USER) + .setPassword( + ServiceNowSourceConfigHelper.TEST_PASSWORD) + .build(), collector); config.validate(collector); @@ -319,21 +353,29 @@ public void testValidCredentials() { public void testTableModeMissingTableName() { MockFailureCollector collector = new MockFailureCollector(); ServiceNowSourceConfig config = withServiceNowValidationMock(ServiceNowSourceConfigHelper.newConfigBuilder() - .setClientId(ServiceNowSourceConfigHelper.TEST_CLIENT_ID) - .setClientSecret(ServiceNowSourceConfigHelper.TEST_CLIENT_SECRET) - .setRestApiEndpoint(ServiceNowSourceConfigHelper.TEST_API_ENDPOINT) - .setUser(ServiceNowSourceConfigHelper.TEST_USER) - .setPassword(ServiceNowSourceConfigHelper.TEST_PASSWORD) - .setQueryMode("Table") - .setTableName(null) - .setClientId(ServiceNowSourceConfigHelper.TEST_CLIENT_ID) - .setClientSecret(ServiceNowSourceConfigHelper.TEST_CLIENT_SECRET) - .setRestApiEndpoint(ServiceNowSourceConfigHelper.TEST_API_ENDPOINT) - .setUser(ServiceNowSourceConfigHelper.TEST_USER) - .setPassword(ServiceNowSourceConfigHelper.TEST_PASSWORD) - .setQueryMode("Table") - .setTableName(null) - .build(), collector); + .setClientId( + ServiceNowSourceConfigHelper.TEST_CLIENT_ID) + .setClientSecret( + ServiceNowSourceConfigHelper.TEST_CLIENT_SECRET) + .setRestApiEndpoint( + ServiceNowSourceConfigHelper.TEST_API_ENDPOINT) + .setUser(ServiceNowSourceConfigHelper.TEST_USER) + .setPassword( + ServiceNowSourceConfigHelper.TEST_PASSWORD) + .setQueryMode("Table") + .setTableName(null) + .setClientId( + ServiceNowSourceConfigHelper.TEST_CLIENT_ID) + .setClientSecret( + ServiceNowSourceConfigHelper.TEST_CLIENT_SECRET) + .setRestApiEndpoint( + ServiceNowSourceConfigHelper.TEST_API_ENDPOINT) + .setUser(ServiceNowSourceConfigHelper.TEST_USER) + .setPassword( + ServiceNowSourceConfigHelper.TEST_PASSWORD) + .setQueryMode("Table") + .setTableName(null) + .build(), collector); try { config.validate(collector); @@ -350,21 +392,29 @@ public void testTableModeMissingTableName() { public void testReportingModeMissingApplication() { MockFailureCollector collector = new MockFailureCollector(); ServiceNowSourceConfig config = withServiceNowValidationMock(ServiceNowSourceConfigHelper.newConfigBuilder() - .setClientId(ServiceNowSourceConfigHelper.TEST_CLIENT_ID) - .setClientSecret(ServiceNowSourceConfigHelper.TEST_CLIENT_SECRET) - .setRestApiEndpoint(ServiceNowSourceConfigHelper.TEST_API_ENDPOINT) - .setUser(ServiceNowSourceConfigHelper.TEST_USER) - .setPassword(ServiceNowSourceConfigHelper.TEST_PASSWORD) - .setQueryMode("Reporting") - .setApplicationName(null) - .setClientId(ServiceNowSourceConfigHelper.TEST_CLIENT_ID) - .setClientSecret(ServiceNowSourceConfigHelper.TEST_CLIENT_SECRET) - .setRestApiEndpoint(ServiceNowSourceConfigHelper.TEST_API_ENDPOINT) - .setUser(ServiceNowSourceConfigHelper.TEST_USER) - .setPassword(ServiceNowSourceConfigHelper.TEST_PASSWORD) - .setQueryMode("Reporting") - .setApplicationName(null) - .build(), collector); + .setClientId( + ServiceNowSourceConfigHelper.TEST_CLIENT_ID) + .setClientSecret( + ServiceNowSourceConfigHelper.TEST_CLIENT_SECRET) + .setRestApiEndpoint( + ServiceNowSourceConfigHelper.TEST_API_ENDPOINT) + .setUser(ServiceNowSourceConfigHelper.TEST_USER) + .setPassword( + ServiceNowSourceConfigHelper.TEST_PASSWORD) + .setQueryMode("Reporting") + .setApplicationName(null) + .setClientId( + ServiceNowSourceConfigHelper.TEST_CLIENT_ID) + .setClientSecret( + ServiceNowSourceConfigHelper.TEST_CLIENT_SECRET) + .setRestApiEndpoint( + ServiceNowSourceConfigHelper.TEST_API_ENDPOINT) + .setUser(ServiceNowSourceConfigHelper.TEST_USER) + .setPassword( + ServiceNowSourceConfigHelper.TEST_PASSWORD) + .setQueryMode("Reporting") + .setApplicationName(null) + .build(), collector); try { config.validate(collector); @@ -381,23 +431,31 @@ public void testReportingModeMissingApplication() { public void testReportingModeMissingTableNameField() { MockFailureCollector collector = new MockFailureCollector(); ServiceNowSourceConfig config = withServiceNowValidationMock(ServiceNowSourceConfigHelper.newConfigBuilder() - .setClientId(ServiceNowSourceConfigHelper.TEST_CLIENT_ID) - .setClientSecret(ServiceNowSourceConfigHelper.TEST_CLIENT_SECRET) - .setRestApiEndpoint(ServiceNowSourceConfigHelper.TEST_API_ENDPOINT) - .setUser(ServiceNowSourceConfigHelper.TEST_USER) - .setPassword(ServiceNowSourceConfigHelper.TEST_PASSWORD) - .setQueryMode("Reporting") - .setApplicationName("Contract Management") - .setTableNameField(null) - .setClientId(ServiceNowSourceConfigHelper.TEST_CLIENT_ID) - .setClientSecret(ServiceNowSourceConfigHelper.TEST_CLIENT_SECRET) - .setRestApiEndpoint(ServiceNowSourceConfigHelper.TEST_API_ENDPOINT) - .setUser(ServiceNowSourceConfigHelper.TEST_USER) - .setPassword(ServiceNowSourceConfigHelper.TEST_PASSWORD) - .setQueryMode("Reporting") - .setApplicationName("Contract Management") - .setTableNameField(null) - .build(), collector); + .setClientId( + ServiceNowSourceConfigHelper.TEST_CLIENT_ID) + .setClientSecret( + ServiceNowSourceConfigHelper.TEST_CLIENT_SECRET) + .setRestApiEndpoint( + ServiceNowSourceConfigHelper.TEST_API_ENDPOINT) + .setUser(ServiceNowSourceConfigHelper.TEST_USER) + .setPassword( + ServiceNowSourceConfigHelper.TEST_PASSWORD) + .setQueryMode("Reporting") + .setApplicationName("Contract Management") + .setTableNameField(null) + .setClientId( + ServiceNowSourceConfigHelper.TEST_CLIENT_ID) + .setClientSecret( + ServiceNowSourceConfigHelper.TEST_CLIENT_SECRET) + .setRestApiEndpoint( + ServiceNowSourceConfigHelper.TEST_API_ENDPOINT) + .setUser(ServiceNowSourceConfigHelper.TEST_USER) + .setPassword( + ServiceNowSourceConfigHelper.TEST_PASSWORD) + .setQueryMode("Reporting") + .setApplicationName("Contract Management") + .setTableNameField(null) + .build(), collector); try { config.validate(collector); @@ -414,25 +472,33 @@ public void testReportingModeMissingTableNameField() { public void testStartDateInvalid() { MockFailureCollector collector = new MockFailureCollector(); ServiceNowSourceConfig config = withServiceNowValidationMock(ServiceNowSourceConfigHelper.newConfigBuilder() - .setClientId(ServiceNowSourceConfigHelper.TEST_CLIENT_ID) - .setClientSecret(ServiceNowSourceConfigHelper.TEST_CLIENT_SECRET) - .setRestApiEndpoint(ServiceNowSourceConfigHelper.TEST_API_ENDPOINT) - .setUser(ServiceNowSourceConfigHelper.TEST_USER) - .setPassword(ServiceNowSourceConfigHelper.TEST_PASSWORD) - .setQueryMode("Table") - .setTableName("ast-contract") - .setStartDate("2020") - .setEndDate("2020-03-01") - .setClientId(ServiceNowSourceConfigHelper.TEST_CLIENT_ID) - .setClientSecret(ServiceNowSourceConfigHelper.TEST_CLIENT_SECRET) - .setRestApiEndpoint(ServiceNowSourceConfigHelper.TEST_API_ENDPOINT) - .setUser(ServiceNowSourceConfigHelper.TEST_USER) - .setPassword(ServiceNowSourceConfigHelper.TEST_PASSWORD) - .setQueryMode("Table") - .setTableName("ast-contract") - .setStartDate("2020") - .setEndDate("2020-03-01") - .build(), collector); + .setClientId( + ServiceNowSourceConfigHelper.TEST_CLIENT_ID) + .setClientSecret( + ServiceNowSourceConfigHelper.TEST_CLIENT_SECRET) + .setRestApiEndpoint( + ServiceNowSourceConfigHelper.TEST_API_ENDPOINT) + .setUser(ServiceNowSourceConfigHelper.TEST_USER) + .setPassword( + ServiceNowSourceConfigHelper.TEST_PASSWORD) + .setQueryMode("Table") + .setTableName("ast-contract") + .setStartDate("2020") + .setEndDate("2020-03-01") + .setClientId( + ServiceNowSourceConfigHelper.TEST_CLIENT_ID) + .setClientSecret( + ServiceNowSourceConfigHelper.TEST_CLIENT_SECRET) + .setRestApiEndpoint( + ServiceNowSourceConfigHelper.TEST_API_ENDPOINT) + .setUser(ServiceNowSourceConfigHelper.TEST_USER) + .setPassword( + ServiceNowSourceConfigHelper.TEST_PASSWORD) + .setQueryMode("Table") + .setTableName("ast-contract") + .setStartDate("2020") + .setEndDate("2020-03-01") + .build(), collector); try { config.validate(collector); @@ -449,25 +515,33 @@ public void testStartDateInvalid() { public void testEndDateInvalid() { MockFailureCollector collector = new MockFailureCollector(); ServiceNowSourceConfig config = withServiceNowValidationMock(ServiceNowSourceConfigHelper.newConfigBuilder() - .setClientId(ServiceNowSourceConfigHelper.TEST_CLIENT_ID) - .setClientSecret(ServiceNowSourceConfigHelper.TEST_CLIENT_SECRET) - .setRestApiEndpoint(ServiceNowSourceConfigHelper.TEST_API_ENDPOINT) - .setUser(ServiceNowSourceConfigHelper.TEST_USER) - .setPassword(ServiceNowSourceConfigHelper.TEST_PASSWORD) - .setQueryMode("Table") - .setTableName("ast-contract") - .setStartDate("2020-03-01") - .setEndDate("2020") - .setClientId(ServiceNowSourceConfigHelper.TEST_CLIENT_ID) - .setClientSecret(ServiceNowSourceConfigHelper.TEST_CLIENT_SECRET) - .setRestApiEndpoint(ServiceNowSourceConfigHelper.TEST_API_ENDPOINT) - .setUser(ServiceNowSourceConfigHelper.TEST_USER) - .setPassword(ServiceNowSourceConfigHelper.TEST_PASSWORD) - .setQueryMode("Table") - .setTableName("ast-contract") - .setStartDate("2020-03-01") - .setEndDate("2020") - .build(), collector); + .setClientId( + ServiceNowSourceConfigHelper.TEST_CLIENT_ID) + .setClientSecret( + ServiceNowSourceConfigHelper.TEST_CLIENT_SECRET) + .setRestApiEndpoint( + ServiceNowSourceConfigHelper.TEST_API_ENDPOINT) + .setUser(ServiceNowSourceConfigHelper.TEST_USER) + .setPassword( + ServiceNowSourceConfigHelper.TEST_PASSWORD) + .setQueryMode("Table") + .setTableName("ast-contract") + .setStartDate("2020-03-01") + .setEndDate("2020") + .setClientId( + ServiceNowSourceConfigHelper.TEST_CLIENT_ID) + .setClientSecret( + ServiceNowSourceConfigHelper.TEST_CLIENT_SECRET) + .setRestApiEndpoint( + ServiceNowSourceConfigHelper.TEST_API_ENDPOINT) + .setUser(ServiceNowSourceConfigHelper.TEST_USER) + .setPassword( + ServiceNowSourceConfigHelper.TEST_PASSWORD) + .setQueryMode("Table") + .setTableName("ast-contract") + .setStartDate("2020-03-01") + .setEndDate("2020") + .build(), collector); try { config.validate(collector); @@ -484,25 +558,33 @@ public void testEndDateInvalid() { public void testEndDateLessThanStartDate() { MockFailureCollector collector = new MockFailureCollector(); ServiceNowSourceConfig config = withServiceNowValidationMock(ServiceNowSourceConfigHelper.newConfigBuilder() - .setClientId(ServiceNowSourceConfigHelper.TEST_CLIENT_ID) - .setClientSecret(ServiceNowSourceConfigHelper.TEST_CLIENT_SECRET) - .setRestApiEndpoint(ServiceNowSourceConfigHelper.TEST_API_ENDPOINT) - .setUser(ServiceNowSourceConfigHelper.TEST_USER) - .setPassword(ServiceNowSourceConfigHelper.TEST_PASSWORD) - .setQueryMode("Table") - .setTableName("ast-contract") - .setStartDate("2020-03-01") - .setEndDate("2020-02-29") - .setClientId(ServiceNowSourceConfigHelper.TEST_CLIENT_ID) - .setClientSecret(ServiceNowSourceConfigHelper.TEST_CLIENT_SECRET) - .setRestApiEndpoint(ServiceNowSourceConfigHelper.TEST_API_ENDPOINT) - .setUser(ServiceNowSourceConfigHelper.TEST_USER) - .setPassword(ServiceNowSourceConfigHelper.TEST_PASSWORD) - .setQueryMode("Table") - .setTableName("ast-contract") - .setStartDate("2020-03-01") - .setEndDate("2020-02-29") - .build(), collector); + .setClientId( + ServiceNowSourceConfigHelper.TEST_CLIENT_ID) + .setClientSecret( + ServiceNowSourceConfigHelper.TEST_CLIENT_SECRET) + .setRestApiEndpoint( + ServiceNowSourceConfigHelper.TEST_API_ENDPOINT) + .setUser(ServiceNowSourceConfigHelper.TEST_USER) + .setPassword( + ServiceNowSourceConfigHelper.TEST_PASSWORD) + .setQueryMode("Table") + .setTableName("ast-contract") + .setStartDate("2020-03-01") + .setEndDate("2020-02-29") + .setClientId( + ServiceNowSourceConfigHelper.TEST_CLIENT_ID) + .setClientSecret( + ServiceNowSourceConfigHelper.TEST_CLIENT_SECRET) + .setRestApiEndpoint( + ServiceNowSourceConfigHelper.TEST_API_ENDPOINT) + .setUser(ServiceNowSourceConfigHelper.TEST_USER) + .setPassword( + ServiceNowSourceConfigHelper.TEST_PASSWORD) + .setQueryMode("Table") + .setTableName("ast-contract") + .setStartDate("2020-03-01") + .setEndDate("2020-02-29") + .build(), collector); try { config.validate(collector); @@ -519,16 +601,20 @@ public void testEndDateLessThanStartDate() { public void testStartDateInvalidEndDateInvalid() { MockFailureCollector collector = new MockFailureCollector(); ServiceNowSourceConfig config = withServiceNowValidationMock(ServiceNowSourceConfigHelper.newConfigBuilder() - .setClientId(ServiceNowSourceConfigHelper.TEST_CLIENT_ID) - .setClientSecret(ServiceNowSourceConfigHelper.TEST_CLIENT_SECRET) - .setRestApiEndpoint(ServiceNowSourceConfigHelper.TEST_API_ENDPOINT) - .setUser(ServiceNowSourceConfigHelper.TEST_USER) - .setPassword(ServiceNowSourceConfigHelper.TEST_PASSWORD) - .setQueryMode("Table") - .setTableName("ast-contract") - .setStartDate("2019") - .setEndDate("2020") - .build(), collector); + .setClientId( + ServiceNowSourceConfigHelper.TEST_CLIENT_ID) + .setClientSecret( + ServiceNowSourceConfigHelper.TEST_CLIENT_SECRET) + .setRestApiEndpoint( + ServiceNowSourceConfigHelper.TEST_API_ENDPOINT) + .setUser(ServiceNowSourceConfigHelper.TEST_USER) + .setPassword( + ServiceNowSourceConfigHelper.TEST_PASSWORD) + .setQueryMode("Table") + .setTableName("ast-contract") + .setStartDate("2019") + .setEndDate("2020") + .build(), collector); try { config.validate(collector); @@ -545,16 +631,20 @@ public void testStartDateInvalidEndDateInvalid() { public void testStartDateAndEndDate() { MockFailureCollector collector = new MockFailureCollector(); ServiceNowSourceConfig config = withServiceNowValidationMock(ServiceNowSourceConfigHelper.newConfigBuilder() - .setClientId(ServiceNowSourceConfigHelper.TEST_CLIENT_ID) - .setClientSecret(ServiceNowSourceConfigHelper.TEST_CLIENT_SECRET) - .setRestApiEndpoint(ServiceNowSourceConfigHelper.TEST_API_ENDPOINT) - .setUser(ServiceNowSourceConfigHelper.TEST_USER) - .setPassword(ServiceNowSourceConfigHelper.TEST_PASSWORD) - .setQueryMode("Table") - .setTableName("ast-contract") - .setStartDate("2020-01-01") - .setEndDate("2021-12-31") - .build(), collector); + .setClientId( + ServiceNowSourceConfigHelper.TEST_CLIENT_ID) + .setClientSecret( + ServiceNowSourceConfigHelper.TEST_CLIENT_SECRET) + .setRestApiEndpoint( + ServiceNowSourceConfigHelper.TEST_API_ENDPOINT) + .setUser(ServiceNowSourceConfigHelper.TEST_USER) + .setPassword( + ServiceNowSourceConfigHelper.TEST_PASSWORD) + .setQueryMode("Table") + .setTableName("ast-contract") + .setStartDate("2020-01-01") + .setEndDate("2021-12-31") + .build(), collector); config.validate(collector); Assert.assertEquals(0, collector.getValidationFailures().size()); } @@ -571,25 +661,33 @@ private ServiceNowSourceConfig withServiceNowValidationMock(ServiceNowSourceConf public void testValidateWhenTableNameIsEmpty() { MockFailureCollector mockFailureCollector = new MockFailureCollector("Stage Name"); ServiceNowSourceConfig config = withServiceNowValidationMock(ServiceNowSourceConfigHelper.newConfigBuilder() - .setClientId(ServiceNowSourceConfigHelper.TEST_CLIENT_ID) - .setClientSecret(ServiceNowSourceConfigHelper.TEST_CLIENT_SECRET) - .setRestApiEndpoint(ServiceNowSourceConfigHelper.TEST_API_ENDPOINT) - .setUser(ServiceNowSourceConfigHelper.TEST_USER) - .setPassword(ServiceNowSourceConfigHelper.TEST_PASSWORD) - .setQueryMode("Table") - .setTableName("") - .setStartDate("2012-01-01") - .setEndDate("2022-03-08") - .setClientId(ServiceNowSourceConfigHelper.TEST_CLIENT_ID) - .setClientSecret(ServiceNowSourceConfigHelper.TEST_CLIENT_SECRET) - .setRestApiEndpoint(ServiceNowSourceConfigHelper.TEST_API_ENDPOINT) - .setUser(ServiceNowSourceConfigHelper.TEST_USER) - .setPassword(ServiceNowSourceConfigHelper.TEST_PASSWORD) - .setQueryMode("Table") - .setTableName("") - .setStartDate("2012-01-01") - .setEndDate("2022-03-08") - .build(), mockFailureCollector); + .setClientId( + ServiceNowSourceConfigHelper.TEST_CLIENT_ID) + .setClientSecret( + ServiceNowSourceConfigHelper.TEST_CLIENT_SECRET) + .setRestApiEndpoint( + ServiceNowSourceConfigHelper.TEST_API_ENDPOINT) + .setUser(ServiceNowSourceConfigHelper.TEST_USER) + .setPassword( + ServiceNowSourceConfigHelper.TEST_PASSWORD) + .setQueryMode("Table") + .setTableName("") + .setStartDate("2012-01-01") + .setEndDate("2022-03-08") + .setClientId( + ServiceNowSourceConfigHelper.TEST_CLIENT_ID) + .setClientSecret( + ServiceNowSourceConfigHelper.TEST_CLIENT_SECRET) + .setRestApiEndpoint( + ServiceNowSourceConfigHelper.TEST_API_ENDPOINT) + .setUser(ServiceNowSourceConfigHelper.TEST_USER) + .setPassword( + ServiceNowSourceConfigHelper.TEST_PASSWORD) + .setQueryMode("Table") + .setTableName("") + .setStartDate("2012-01-01") + .setEndDate("2022-03-08") + .build(), mockFailureCollector); config.validate(mockFailureCollector); List validationFailures = mockFailureCollector.getValidationFailures(); Assert.assertEquals(1, validationFailures.size()); @@ -663,4 +761,31 @@ public void testValidateWhenTableNameIsInvalid() throws Exception { mockFailureCollector.getValidationFailures().get(0).getMessage()); } + + @Test + public void testStartDateOrEndDateAsBlank() { + MockFailureCollector collector = new MockFailureCollector(); + ServiceNowSourceConfig config = + withServiceNowValidationMock(ServiceNowSourceConfigHelper.newConfigBuilder() + .setClientId(ServiceNowSourceConfigHelper.TEST_CLIENT_ID) + .setClientSecret(ServiceNowSourceConfigHelper.TEST_CLIENT_SECRET) + .setRestApiEndpoint(ServiceNowSourceConfigHelper.TEST_API_ENDPOINT) + .setUser(ServiceNowSourceConfigHelper.TEST_USER) + .setPassword(ServiceNowSourceConfigHelper.TEST_PASSWORD) + .setQueryMode("Table") + .setTableName("ast-contract") + .setStartDate("2019") + .setEndDate(null) + .build(), collector); + + try { + config.validate(collector); + collector.getOrThrowException(); + } catch (ValidationException e) { + Assert.assertEquals(ServiceNowConstants.PROPERTY_START_DATE, e.getFailures().get(0).getCauses().get(0) + .getAttribute(CauseAttributes.STAGE_CONFIG)); + } + + Assert.assertEquals(1, collector.getValidationFailures().size()); + } } diff --git a/widgets/ServiceNow-batchsource.json b/widgets/ServiceNow-batchsource.json index 1fc52b75..6a1918c7 100644 --- a/widgets/ServiceNow-batchsource.json +++ b/widgets/ServiceNow-batchsource.json @@ -128,6 +128,14 @@ { "label": "Table Mode", "properties": [ + { + "widget-type": "textbox", + "label": "Table Name", + "name": "tableName", + "widget-attributes": { + "placeholder": "ServiceNow table name from which data to be fetched" + } + }, { "label": "browse", "widget-type": "connection-browser", @@ -136,14 +144,6 @@ "connectionType": " SERVICENOW", "label": "Browse" } - }, - { - "widget-type": "textbox", - "label": "Table Name", - "name": "tableName", - "widget-attributes": { - "placeholder": "ServiceNow table name from which data to be fetched" - } } ] }, @@ -215,6 +215,10 @@ { "type": "property", "name": "tableName" + } , + { + "type": "property", + "label": "browse" } ] }, From e2e300971af31b52fbe9c14a2a402557b1cd1b44 Mon Sep 17 00:00:00 2001 From: satyamsufi Date: Wed, 21 Jun 2023 12:38:47 +0530 Subject: [PATCH 2/2] Connection manager macros changes --- .../features/servicenowmultisource/RunTimeWithMacros.feature | 1 + src/e2e-test/features/servicenowsource/RunTimeWithMacros.feature | 1 + 2 files changed, 2 insertions(+) diff --git a/src/e2e-test/features/servicenowmultisource/RunTimeWithMacros.feature b/src/e2e-test/features/servicenowmultisource/RunTimeWithMacros.feature index 56b4aae4..66b61fde 100644 --- a/src/e2e-test/features/servicenowmultisource/RunTimeWithMacros.feature +++ b/src/e2e-test/features/servicenowmultisource/RunTimeWithMacros.feature @@ -154,6 +154,7 @@ Feature: ServiceNow Multi Source - Run time scenarios (macro) Then Click on the Test Connection button And Verify the test connection is successful Then Click on the Create button + And Use new connection And Click on the Macro button of Property: "connection" and set the value to: "Connection" Then Validate "ServiceNow Multi Source" plugin properties And Close the Plugin Properties page diff --git a/src/e2e-test/features/servicenowsource/RunTimeWithMacros.feature b/src/e2e-test/features/servicenowsource/RunTimeWithMacros.feature index 926dbdab..d090e07e 100644 --- a/src/e2e-test/features/servicenowsource/RunTimeWithMacros.feature +++ b/src/e2e-test/features/servicenowsource/RunTimeWithMacros.feature @@ -203,6 +203,7 @@ Feature: ServiceNow Source - Run time scenarios (macro) Then Click on the Test Connection button And Verify the test connection is successful Then Click on the Create button + And Use new connection And Click on the Macro button of Property: "connection" and set the value to: "Connection" Then Validate "ServiceNow" plugin properties And Close the Plugin Properties page