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..66b61fde 100644
--- a/src/e2e-test/features/servicenowmultisource/RunTimeWithMacros.feature
+++ b/src/e2e-test/features/servicenowmultisource/RunTimeWithMacros.feature
@@ -136,4 +136,46 @@ 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 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
+ 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..d090e07e 100644
--- a/src/e2e-test/features/servicenowsource/RunTimeWithMacros.feature
+++ b/src/e2e-test/features/servicenowsource/RunTimeWithMacros.feature
@@ -184,4 +184,52 @@ 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 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
+ 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"
}
]
},