You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ac...@apache.org on 2022/03/30 15:44:16 UTC
[camel-kamelets] 01/08: feature(salesforce-sink): Add, update, and delete salesforce sink
This is an automated email from the ASF dual-hosted git repository.
acosentino pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-kamelets.git
commit e305a4acaee454f88c174ba17e53851a9deea8ae
Author: Maria Arias de Reyna <ar...@redhat.com>
AuthorDate: Mon Mar 28 10:59:09 2022 +0200
feature(salesforce-sink): Add, update, and delete salesforce sink
---
kamelets/salesforce-create-sink.kamelet.yaml | 101 +++++++++++++++++++
kamelets/salesforce-delete-sink.kamelet.yaml | 107 +++++++++++++++++++++
kamelets/salesforce-update-sink.kamelet.yaml | 105 ++++++++++++++++++++
test/salesforce-sink/delete-secret.sh | 19 ++++
.../direct-to-salesforce-delete-binding.yaml | 42 ++++++++
.../direct-to-salesforce-update-binding.yaml | 45 +++++++++
test/salesforce-sink/prepare-secret.sh | 21 ++++
.../salesforce-credentials.properties | 24 +++++
test/salesforce-sink/salesforce-sink.feature | 78 +++++++++++++++
.../timer-to-salesforce-binding.yaml | 41 ++++++++
test/salesforce-sink/yaks-config.yaml | 53 ++++++++++
11 files changed, 636 insertions(+)
diff --git a/kamelets/salesforce-create-sink.kamelet.yaml b/kamelets/salesforce-create-sink.kamelet.yaml
new file mode 100644
index 0000000..2cbff14
--- /dev/null
+++ b/kamelets/salesforce-create-sink.kamelet.yaml
@@ -0,0 +1,101 @@
+#---------------------------------------------------------------------------
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ---------------------------------------------------------------------------
+apiVersion: camel.apache.org/v1alpha1
+kind: Kamelet
+metadata:
+ name: salesforce-create-sink
+ annotations:
+ camel.apache.org/kamelet.support.level: "Preview"
+ camel.apache.org/catalog.version: "main-SNAPSHOT"
+ camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHZpZXdCb3g9IjAgMCA0OCA0OCIgdmVyc2lvbj0iMS4xIj48ZyBpZD0ic3VyZmFjZTEiPjxwYXRoIGQ9Ik0zNi41IDEyYy0xLjMyNCAwLTIuNTkuMjU4LTMuNzU4LjcwM0E3Ljk5NCA3Ljk5NCAwIDAgMCAyNiA5Yy0yLjEwNSAwLTQuMDIuODItNS40NDUgMi4xNTJBOS40NjggOS40NjggMCAwIDAgMTMuNSA4QzguMjU0IDggNCAxMi4yNTQgNCAxNy41YzAgLj [...]
+ camel.apache.org/provider: "Apache Software Foundation"
+ camel.apache.org/kamelet.group: "Salesforce"
+ labels:
+ camel.apache.org/kamelet.type: "sink"
+spec:
+ definition:
+ title: "Salesforce Create Sink"
+ description: "Creates an object in Salesforce."
+ required:
+ - sObjectName
+ - clientId
+ - clientSecret
+ - userName
+ - password
+ type: object
+ properties:
+ sObjectName:
+ title: sObjectName
+ description: Type of the object
+ type: string
+ example: Contact
+ loginUrl:
+ title: Login URL
+ description: The Salesforce instance login URL
+ type: string
+ default: https://login.salesforce.com
+ clientId:
+ title: Consumer Key
+ description: The Salesforce application consumer key
+ type: string
+ x-descriptors:
+ - urn:camel:group:credentials
+ clientSecret:
+ title: Consumer Secret
+ description: The Salesforce application consumer secret
+ type: string
+ format: password
+ x-descriptors:
+ - urn:alm:descriptor:com.tectonic.ui:password
+ - urn:camel:group:credentials
+ userName:
+ title: Username
+ description: The Salesforce username
+ type: string
+ x-descriptors:
+ - urn:camel:group:credentials
+ password:
+ title: Password
+ description: The Salesforce user password
+ type: string
+ format: password
+ x-descriptors:
+ - urn:alm:descriptor:com.tectonic.ui:password
+ - urn:camel:group:credentials
+ types:
+ in:
+ mediaType: application/json
+ dependencies:
+ - "camel:salesforce"
+ - "camel:kamelet"
+ template:
+ beans:
+ - name: local-salesforce
+ type: "#class:org.apache.camel.component.salesforce.SalesforceComponent"
+ properties:
+ clientId: "{{clientId}}"
+ clientSecret: "{{clientSecret}}"
+ userName: "{{userName}}"
+ password: "{{password}}"
+ loginUrl: "{{loginUrl}}"
+ from:
+ uri: kamelet:source
+ steps:
+ - to:
+ uri: "{{local-salesforce}}:createSObject"
+ parameters:
+ sObjectName: "{{sObjectName}}"
diff --git a/kamelets/salesforce-delete-sink.kamelet.yaml b/kamelets/salesforce-delete-sink.kamelet.yaml
new file mode 100644
index 0000000..8899277
--- /dev/null
+++ b/kamelets/salesforce-delete-sink.kamelet.yaml
@@ -0,0 +1,107 @@
+#---------------------------------------------------------------------------
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ---------------------------------------------------------------------------
+apiVersion: camel.apache.org/v1alpha1
+kind: Kamelet
+metadata:
+ name: salesforce-delete-sink
+ annotations:
+ camel.apache.org/kamelet.support.level: "Preview"
+ camel.apache.org/catalog.version: "main-SNAPSHOT"
+ camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHZpZXdCb3g9IjAgMCA0OCA0OCIgdmVyc2lvbj0iMS4xIj48ZyBpZD0ic3VyZmFjZTEiPjxwYXRoIGQ9Ik0zNi41IDEyYy0xLjMyNCAwLTIuNTkuMjU4LTMuNzU4LjcwM0E3Ljk5NCA3Ljk5NCAwIDAgMCAyNiA5Yy0yLjEwNSAwLTQuMDIuODItNS40NDUgMi4xNTJBOS40NjggOS40NjggMCAwIDAgMTMuNSA4QzguMjU0IDggNCAxMi4yNTQgNCAxNy41YzAgLj [...]
+ camel.apache.org/provider: "Apache Software Foundation"
+ camel.apache.org/kamelet.group: "Salesforce"
+ labels:
+ camel.apache.org/kamelet.type: "sink"
+spec:
+ definition:
+ title: "Salesforce Delete Sink"
+ description: "Removes an object from Salesforce."
+ required:
+ - sObjectId
+ - sObjectName
+ - clientId
+ - clientSecret
+ - userName
+ - password
+ type: object
+ properties:
+ sObjectName:
+ title: sObjectName
+ description: Type of the object
+ type: string
+ example: Contact
+ sObjectId:
+ title: sObjectId
+ description: Id of the object
+ type: string
+ loginUrl:
+ title: Login URL
+ description: The Salesforce instance login URL
+ type: string
+ default: https://login.salesforce.com
+ clientId:
+ title: Consumer Key
+ description: The Salesforce application consumer key
+ type: string
+ x-descriptors:
+ - urn:camel:group:credentials
+ clientSecret:
+ title: Consumer Secret
+ description: The Salesforce application consumer secret
+ type: string
+ format: password
+ x-descriptors:
+ - urn:alm:descriptor:com.tectonic.ui:password
+ - urn:camel:group:credentials
+ userName:
+ title: Username
+ description: The Salesforce username
+ type: string
+ x-descriptors:
+ - urn:camel:group:credentials
+ password:
+ title: Password
+ description: The Salesforce user password
+ type: string
+ format: password
+ x-descriptors:
+ - urn:alm:descriptor:com.tectonic.ui:password
+ - urn:camel:group:credentials
+ types:
+ in:
+ mediaType: application/json
+ dependencies:
+ - "camel:salesforce"
+ - "camel:kamelet"
+ template:
+ beans:
+ - name: local-delete-salesforce
+ type: "#class:org.apache.camel.component.salesforce.SalesforceComponent"
+ properties:
+ clientId: "{{clientId}}"
+ clientSecret: "{{clientSecret}}"
+ userName: "{{userName}}"
+ password: "{{password}}"
+ loginUrl: "{{loginUrl}}"
+ from:
+ uri: kamelet:source
+ steps:
+ - to:
+ uri: "{{local-delete-salesforce}}:deleteSObject"
+ parameters:
+ sObjectId: "{{sObjectId}}"
+ sObjectName: "{{sObjectName}}"
diff --git a/kamelets/salesforce-update-sink.kamelet.yaml b/kamelets/salesforce-update-sink.kamelet.yaml
new file mode 100644
index 0000000..d44bdbd
--- /dev/null
+++ b/kamelets/salesforce-update-sink.kamelet.yaml
@@ -0,0 +1,105 @@
+#---------------------------------------------------------------------------
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ---------------------------------------------------------------------------
+apiVersion: camel.apache.org/v1alpha1
+kind: Kamelet
+metadata:
+ name: salesforce-update-sink
+ annotations:
+ camel.apache.org/kamelet.support.level: "Preview"
+ camel.apache.org/catalog.version: "main-SNAPSHOT"
+ camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHZpZXdCb3g9IjAgMCA0OCA0OCIgdmVyc2lvbj0iMS4xIj48ZyBpZD0ic3VyZmFjZTEiPjxwYXRoIGQ9Ik0zNi41IDEyYy0xLjMyNCAwLTIuNTkuMjU4LTMuNzU4LjcwM0E3Ljk5NCA3Ljk5NCAwIDAgMCAyNiA5Yy0yLjEwNSAwLTQuMDIuODItNS40NDUgMi4xNTJBOS40NjggOS40NjggMCAwIDAgMTMuNSA4QzguMjU0IDggNCAxMi4yNTQgNCAxNy41YzAgLj [...]
+ camel.apache.org/provider: "Apache Software Foundation"
+ camel.apache.org/kamelet.group: "Salesforce"
+ labels:
+ camel.apache.org/kamelet.type: "sink"
+spec:
+ definition:
+ title: "Salesforce Update Sink"
+ description: "Updates an object in Salesforce."
+ required:
+ - clientId
+ - clientSecret
+ - userName
+ - password
+ type: object
+ properties:
+ sObjectName:
+ title: sObjectName
+ description: Type of the object
+ type: string
+ example: Contact
+ sObjectId:
+ title: sObjectId
+ description: Id of the object
+ type: string
+ loginUrl:
+ title: Login URL
+ description: The Salesforce instance login URL
+ type: string
+ default: https://login.salesforce.com
+ clientId:
+ title: Consumer Key
+ description: The Salesforce application consumer key
+ type: string
+ x-descriptors:
+ - urn:camel:group:credentials
+ clientSecret:
+ title: Consumer Secret
+ description: The Salesforce application consumer secret
+ type: string
+ format: password
+ x-descriptors:
+ - urn:alm:descriptor:com.tectonic.ui:password
+ - urn:camel:group:credentials
+ userName:
+ title: Username
+ description: The Salesforce username
+ type: string
+ x-descriptors:
+ - urn:camel:group:credentials
+ password:
+ title: Password
+ description: The Salesforce user password
+ type: string
+ format: password
+ x-descriptors:
+ - urn:alm:descriptor:com.tectonic.ui:password
+ - urn:camel:group:credentials
+ types:
+ in:
+ mediaType: application/json
+ dependencies:
+ - "camel:salesforce"
+ - "camel:kamelet"
+ template:
+ beans:
+ - name: local-salesforce
+ type: "#class:org.apache.camel.component.salesforce.SalesforceComponent"
+ properties:
+ clientId: "{{clientId}}"
+ clientSecret: "{{clientSecret}}"
+ userName: "{{userName}}"
+ password: "{{password}}"
+ loginUrl: "{{loginUrl}}"
+ from:
+ uri: kamelet:source
+ steps:
+ - to:
+ uri: "{{local-salesforce}}:updateSObject"
+ parameters:
+ sObjectId: "{{sObjectId}}"
+ sObjectName: "{{sObjectName}}"
diff --git a/test/salesforce-sink/delete-secret.sh b/test/salesforce-sink/delete-secret.sh
new file mode 100644
index 0000000..6661b95
--- /dev/null
+++ b/test/salesforce-sink/delete-secret.sh
@@ -0,0 +1,19 @@
+#!/bin/sh
+
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# delete secret
+oc delete secret salesforce-credentials -n ${YAKS_NAMESPACE}
diff --git a/test/salesforce-sink/direct-to-salesforce-delete-binding.yaml b/test/salesforce-sink/direct-to-salesforce-delete-binding.yaml
new file mode 100644
index 0000000..7441a1c
--- /dev/null
+++ b/test/salesforce-sink/direct-to-salesforce-delete-binding.yaml
@@ -0,0 +1,42 @@
+# ---------------------------------------------------------------------------
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ---------------------------------------------------------------------------
+
+apiVersion: camel.apache.org/v1alpha1
+kind: KameletBinding
+metadata:
+ name: direct-to-salesforce-delete-binding
+spec:
+ source:
+ ref:
+ kind: Kamelet
+ apiVersion: camel.apache.org/v1alpha1
+ name: timer-source
+ properties:
+ period: 60000
+ message: "Hello Salesforce!"
+ sink:
+ ref:
+ apiVersion: camel.apache.org/v1alpha1
+ kind: Kamelet
+ name: salesforce-delete-sink
+ properties:
+ clientId: "${client_id}"
+ clientSecret: "${client_secret}"
+ userName: "${userName}"
+ password: "${password}"
+ sObjectName: "Contact"
+ sObjectId: "${id}"
diff --git a/test/salesforce-sink/direct-to-salesforce-update-binding.yaml b/test/salesforce-sink/direct-to-salesforce-update-binding.yaml
new file mode 100644
index 0000000..f0fdbaa
--- /dev/null
+++ b/test/salesforce-sink/direct-to-salesforce-update-binding.yaml
@@ -0,0 +1,45 @@
+# ---------------------------------------------------------------------------
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ---------------------------------------------------------------------------
+
+apiVersion: camel.apache.org/v1alpha1
+kind: KameletBinding
+metadata:
+ name: direct-to-salesforce-update-binding
+spec:
+ source:
+ ref:
+ kind: Kamelet
+ apiVersion: camel.apache.org/v1alpha1
+ name: timer-source
+ properties:
+ period: 60000
+ message: |-
+ {
+ "Phone": "1234567890"
+ }
+ sink:
+ ref:
+ apiVersion: camel.apache.org/v1alpha1
+ kind: Kamelet
+ name: salesforce-update-sink
+ properties:
+ clientId: "${client_id}"
+ clientSecret: "${client_secret}"
+ userName: "${userName}"
+ password: "${password}"
+ sObjectId: "${id}"
+ sObjectName: "Contact"
diff --git a/test/salesforce-sink/prepare-secret.sh b/test/salesforce-sink/prepare-secret.sh
new file mode 100755
index 0000000..88ebcc3
--- /dev/null
+++ b/test/salesforce-sink/prepare-secret.sh
@@ -0,0 +1,21 @@
+#!/bin/sh
+
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# create secret from properties file
+oc create secret generic salesforce-credentials --from-file=salesforce-credentials.properties -n ${YAKS_NAMESPACE}
+# bind secret to test by name
+oc label secret salesforce-credentials yaks.citrusframework.org/test=salesforce-sink -n ${YAKS_NAMESPACE}
diff --git a/test/salesforce-sink/salesforce-credentials.properties b/test/salesforce-sink/salesforce-credentials.properties
new file mode 100644
index 0000000..3c95aef
--- /dev/null
+++ b/test/salesforce-sink/salesforce-credentials.properties
@@ -0,0 +1,24 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+# Please add your Salesforce account credentials
+
+clientId=
+clientSecret=
+userName=
+password=
+apiVersion=50.0
diff --git a/test/salesforce-sink/salesforce-sink.feature b/test/salesforce-sink/salesforce-sink.feature
new file mode 100644
index 0000000..79bc96f
--- /dev/null
+++ b/test/salesforce-sink/salesforce-sink.feature
@@ -0,0 +1,78 @@
+# ---------------------------------------------------------------------------
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ---------------------------------------------------------------------------
+
+Feature: Salesforce Kamelet
+
+ Background:
+ Given variable client_id is "${clientId}"
+ Given variable userName is "${userName}"
+ Given variable password is "${password}"
+ Given variable client_secret is "${clientSecret}"
+
+ Given variable token_request is "grant_type=password&client_id=${client_id}&client_secret=${client_secret}&username=${userName}&password=${password}"
+ Given URL: https://login.salesforce.com
+ And HTTP request header Content-Type="application/x-www-form-urlencoded"
+ And HTTP request body: ${token_request}
+ When send POST /services/oauth2/token
+ Then verify HTTP response expression: $.instance_url="@variable(instance_url)@"
+ And verify HTTP response expression: $.access_token="@variable(access_token)@"
+ And receive HTTP 200 OK
+
+ Scenario: Interact with SalesForce
+ Given load KameletBinding timer-to-salesforce-binding.yaml
+ Then Camel K integration timer-to-salesforce-binding should be running
+ And Camel K integration timer-to-salesforce-binding should print Routes startup
+
+ Given URL: ${instance_url}
+ Then HTTP request header Authorization="Bearer ${access_token}"
+ And HTTP request header Content-Type="application/json"
+ And HTTP request query parameter q="citrus:urlEncode('SELECT Id FROM Contact LIMIT 1')"
+ When send GET /services/data/v50.0/query/
+ Then verify HTTP response expression: $.records[0].Id="@variable(id)@"
+ And receive HTTP 200 OK
+
+ And load KameletBinding direct-to-salesforce-update-binding.yaml
+ Then Camel K integration direct-to-salesforce-update-binding should be running
+ And Camel K integration direct-to-salesforce-update-binding should print Routes startup
+ Then sleep 5000 ms
+ Given URL: ${instance_url}
+ Then HTTP request header Authorization="Bearer ${access_token}"
+ And HTTP request header Content-Type="application/json"
+ Given variable query is "SELECT Phone FROM Contact WHERE Id = '${id}'"
+ And HTTP request query parameter q="citrus:urlEncode('${query}')"
+ When send GET /services/data/v50.0/query/
+ Then verify HTTP response expression: $.records[0].Phone="1234567890"
+ And receive HTTP 200 OK
+
+ When load KameletBinding direct-to-salesforce-delete-binding.yaml
+ Then Camel K integration direct-to-salesforce-delete-binding should be running
+ And Camel K integration direct-to-salesforce-delete-binding should print Routes startup
+ Then sleep 5000 ms
+
+ Given URL: ${instance_url}
+ Given HTTP request header Authorization="Bearer ${access_token}"
+ And HTTP request header Content-Type="application/json"
+ And HTTP request query parameter q="citrus:urlEncode('${query}')"
+ When send GET /services/data/v50.0/query/
+ Then verify HTTP response expression: $.totalSize="0"
+ And receive HTTP 200 OK
+
+
+ Scenario: Remove Camel-K resources
+ Given delete KameletBinding timer-to-salesforce-binding
+ And delete KameletBinding direct-to-salesforce-update-binding
+ And delete KameletBinding direct-to-salesforce-delete-binding
diff --git a/test/salesforce-sink/timer-to-salesforce-binding.yaml b/test/salesforce-sink/timer-to-salesforce-binding.yaml
new file mode 100644
index 0000000..c9dc125
--- /dev/null
+++ b/test/salesforce-sink/timer-to-salesforce-binding.yaml
@@ -0,0 +1,41 @@
+# ---------------------------------------------------------------------------
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ---------------------------------------------------------------------------
+
+apiVersion: camel.apache.org/v1alpha1
+kind: KameletBinding
+metadata:
+ name: timer-to-salesforce-binding
+spec:
+ source:
+ ref:
+ kind: Kamelet
+ apiVersion: camel.apache.org/v1alpha1
+ name: timer-source
+ properties:
+ period: 60000
+ message: "{ \"name\": \"Test\", \"lastname\": \"Tester\", \"Phone\": \"123\" }"
+ sink:
+ ref:
+ apiVersion: camel.apache.org/v1alpha1
+ kind: Kamelet
+ name: salesforce-create-sink
+ properties:
+ clientId: "${client_id}"
+ clientSecret: "${client_secret}"
+ userName: "${userName}"
+ password: "${password}"
+ sObjectName: "Contact"
diff --git a/test/salesforce-sink/yaks-config.yaml b/test/salesforce-sink/yaks-config.yaml
new file mode 100644
index 0000000..95b5c3b
--- /dev/null
+++ b/test/salesforce-sink/yaks-config.yaml
@@ -0,0 +1,53 @@
+# ---------------------------------------------------------------------------
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ---------------------------------------------------------------------------
+
+config:
+ namespace:
+ temporary: false
+ runtime:
+ settings:
+ loggers:
+ - name: root
+ level: INFO
+ - name: org.citrusframework.yaks
+ level: DEBUG
+ - name: com.consol.citrus
+ level: INFO
+ - name: Logger.Message_IN
+ level: DEBUG
+ - name: Logger.Message_OUT
+ level: DEBUG
+ env:
+ - name: YAKS_CAMELK_AUTO_REMOVE_RESOURCES
+ value: false
+ - name: YAKS_KUBERNETES_AUTO_REMOVE_RESOURCES
+ value: false
+ secret: salesforce-credentials
+ resources:
+ - timer-to-salesforce-binding.yaml
+ - direct-to-salesforce-update-binding.yaml
+ - direct-to-salesforce-delete-binding.yaml
+ - salesforce-credentials.properties
+ dump:
+ enabled: true
+ failedOnly: true
+ includes:
+ - app=camel-k
+pre:
+ - script: prepare-secret.sh
+post:
+ - script: delete-secret.sh