This is an automated email from the ASF dual-hosted git repository. ppalaga pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git
commit fee5e52cbff074f8200c8e7e2d82dcce3a1c2c78 Author: Zineb Bendhiba <bendhiba.zi...@gmail.com> AuthorDate: Fri Aug 6 12:02:24 2021 +0200 Salesforce : Expand producer test coverage --- .../component/salesforce/SalesforceResource.java | 84 +++++++++++++ .../component/salesforce/generated/Account.java | 63 ++++------ .../salesforce/model/GlobalObjectsAndHeaders.java | 62 ++++++++++ .../salesforce/SalesforceIntegrationIT.java | 2 + .../component/salesforce/SalesforceTest.java | 136 +++++++++++++++++++++ .../src/test/resources/mappings/deleteAccount.json | 14 +++ .../resources/mappings/getAccountBasicInfo.json | 18 +++ .../test/resources/mappings/getAccountById.json | 18 +++ .../resources/mappings/getAccountDescription.json | 18 +++ .../resources/mappings/getAccountLongQuery.json | 18 +++ .../src/test/resources/mappings/getLimits.json | 19 +++ .../test/resources/mappings/getListOfObjects.json | 19 +++ .../test/resources/mappings/getRestResources.json | 19 +++ .../src/test/resources/mappings/getVersions.json | 19 +++ .../src/test/resources/mappings/setAccount.json | 18 +++ 15 files changed, 491 insertions(+), 36 deletions(-) diff --git a/integration-tests/salesforce/src/main/java/org/apache/camel/quarkus/component/salesforce/SalesforceResource.java b/integration-tests/salesforce/src/main/java/org/apache/camel/quarkus/component/salesforce/SalesforceResource.java index f20f1aa..0520bdd 100644 --- a/integration-tests/salesforce/src/main/java/org/apache/camel/quarkus/component/salesforce/SalesforceResource.java +++ b/integration-tests/salesforce/src/main/java/org/apache/camel/quarkus/component/salesforce/SalesforceResource.java @@ -16,6 +16,8 @@ */ package org.apache.camel.quarkus.component.salesforce; +import java.util.Collections; +import java.util.List; import java.util.Locale; import java.util.Map; @@ -36,14 +38,23 @@ import javax.ws.rs.core.Response; import org.apache.camel.CamelContext; import org.apache.camel.ConsumerTemplate; +import org.apache.camel.Exchange; import org.apache.camel.FluentProducerTemplate; import org.apache.camel.component.salesforce.SalesforceEndpointConfig; import org.apache.camel.component.salesforce.api.dto.CreateSObjectResult; +import org.apache.camel.component.salesforce.api.dto.GlobalObjects; +import org.apache.camel.component.salesforce.api.dto.Limits; +import org.apache.camel.component.salesforce.api.dto.RestResources; +import org.apache.camel.component.salesforce.api.dto.SObjectBasicInfo; +import org.apache.camel.component.salesforce.api.dto.SObjectDescription; +import org.apache.camel.component.salesforce.api.dto.Version; import org.apache.camel.component.salesforce.api.dto.bulk.ContentType; import org.apache.camel.component.salesforce.api.dto.bulk.JobInfo; import org.apache.camel.component.salesforce.api.dto.bulk.OperationEnum; +import org.apache.camel.component.salesforce.api.utils.QueryHelper; import org.apache.camel.quarkus.component.salesforce.generated.Account; import org.apache.camel.quarkus.component.salesforce.generated.QueryRecordsAccount; +import org.apache.camel.quarkus.component.salesforce.model.GlobalObjectsAndHeaders; import org.apache.camel.spi.RouteController; @Path("/salesforce") @@ -80,6 +91,19 @@ public class SalesforceResource { return request.getRecords().get(0); } + @Path("/account/query") + @GET + @Produces(MediaType.APPLICATION_JSON) + public Account getAccountByQueryHelper() { + String generatedQuery = QueryHelper.queryToFetchAllFieldsOf(new Account()); + QueryRecordsAccount request = template + .toF("salesforce:query?sObjectQuery=%s LIMIT 1&sObjectClass=%s", + generatedQuery, + QueryRecordsAccount.class.getName()) + .request(QueryRecordsAccount.class); + return request.getRecords().get(0); + } + @Path("/account") @POST @Consumes(MediaType.TEXT_PLAIN) @@ -108,6 +132,17 @@ public class SalesforceResource { return Response.noContent().build(); } + @Path("/account/{id}") + @GET + @Produces(MediaType.APPLICATION_JSON) + public Account getAccountById(@PathParam("id") String accountId) { + Account account = template + .to("salesforce:getSObjectWithId?sObjectName=Account&sObjectIdName=Id&sObjectClass=" + Account.class.getName()) + .withBody(accountId) + .request(Account.class); + return account; + } + @Path("/bulk") @POST @Produces(MediaType.APPLICATION_JSON) @@ -165,4 +200,53 @@ public class SalesforceResource { objectBuilder.add("state", jobInfo.getState().value().toUpperCase(Locale.US)); return objectBuilder.build(); } + + @Path("sobjects/force-limit") + @GET + @Produces(MediaType.APPLICATION_JSON) + public GlobalObjectsAndHeaders getSObjectsWithForceLimitInfo() { + // Testing producer with headers + Exchange exchange = template.to("salesforce:getGlobalObjects") + .withHeader("Sforce-Limit-Info", Collections.singletonList("api-usage")).send(); + GlobalObjectsAndHeaders objectsAndHeaders = new GlobalObjectsAndHeaders( + exchange.getMessage().getBody(GlobalObjects.class)) + .withHeader("Sforce-Limit-Info", exchange.getMessage().getHeader("Sforce-Limit-Info", String.class)); + return objectsAndHeaders; + } + + @Path("versions") + @GET + @Produces(MediaType.APPLICATION_JSON) + public List<Version> getListVersions() { + return template.to("salesforce:getVersions").request(List.class); + } + + @Path("resources") + @GET + @Produces(MediaType.APPLICATION_JSON) + public RestResources getListResources() { + return template.to("salesforce:getResources").request(RestResources.class); + } + + @Path("basic-info/account") + @GET + public SObjectBasicInfo getAccountBasicInfo() { + return template.to("salesforce:getBasicInfo?sObjectName=Account") + .request(SObjectBasicInfo.class); + } + + @Path("describe/account") + @GET + public SObjectDescription getAccountDescription() { + return template.to("salesforce:getDescription?sObjectName=Account") + .request(SObjectDescription.class); + } + + @Path("limits") + @GET + @Produces(MediaType.APPLICATION_JSON) + public Limits getLimits() { + return template.to("salesforce:limits").request(Limits.class); + } + } diff --git a/integration-tests/salesforce/src/main/java/org/apache/camel/quarkus/component/salesforce/generated/Account.java b/integration-tests/salesforce/src/main/java/org/apache/camel/quarkus/component/salesforce/generated/Account.java index 8c4c7a7..4eb999d 100644 --- a/integration-tests/salesforce/src/main/java/org/apache/camel/quarkus/component/salesforce/generated/Account.java +++ b/integration-tests/salesforce/src/main/java/org/apache/camel/quarkus/component/salesforce/generated/Account.java @@ -22,13 +22,8 @@ import java.util.List; import javax.annotation.Generated; import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.databind.annotation.JsonDeserialize; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamConverter; -import org.apache.camel.component.salesforce.api.MultiSelectPicklistConverter; -import org.apache.camel.component.salesforce.api.MultiSelectPicklistDeserializer; -import org.apache.camel.component.salesforce.api.MultiSelectPicklistSerializer; import org.apache.camel.component.salesforce.api.PicklistEnumConverter; import org.apache.camel.component.salesforce.api.dto.AbstractDescribedSObjectBase; import org.apache.camel.component.salesforce.api.dto.SObjectDescription; @@ -634,6 +629,18 @@ public class Account extends AbstractDescribedSObjectBase { this.DandbCompanyId = DandbCompanyId; } + private String OperatingHoursId; + + @JsonProperty("OperatingHoursId") + public String getOperatingHoursId() { + return this.OperatingHoursId; + } + + @JsonProperty("OperatingHoursId") + public void setOperatingHoursId(String OperatingHoursId) { + this.OperatingHoursId = OperatingHoursId; + } + @XStreamConverter(PicklistEnumConverter.class) private Account_CustomerPriorityEnum CustomerPriority__c; @@ -722,21 +729,6 @@ public class Account extends AbstractDescribedSObjectBase { this.SLAExpirationDate__c = SLAExpirationDate__c; } - @XStreamConverter(MultiSelectPicklistConverter.class) - private Account_MyMultiselectEnum[] MyMultiselect__c; - - @JsonProperty("MyMultiselect__c") - @JsonSerialize(using = MultiSelectPicklistSerializer.class) - public Account_MyMultiselectEnum[] getMyMultiselect__c() { - return this.MyMultiselect__c; - } - - @JsonProperty("MyMultiselect__c") - @JsonDeserialize(using = MultiSelectPicklistDeserializer.class) - public void setMyMultiselect__c(Account_MyMultiselectEnum[] MyMultiselect__c) { - this.MyMultiselect__c = MyMultiselect__c; - } - private QueryRecordsAccount ChildAccounts; @JsonProperty("ChildAccounts") @@ -934,29 +926,29 @@ public class Account extends AbstractDescribedSObjectBase { final SObjectField sObjectField58 = createField("DandbCompanyId", "D&B Company ID", "reference", "tns:ID", 18, false, true, false, false, false, false, false); fields1.add(sObjectField58); - final SObjectField sObjectField59 = createField("CustomerPriority__c", "Customer Priority", "picklist", "xsd:string", - 255, false, true, false, false, true, false, false); + final SObjectField sObjectField59 = createField("OperatingHoursId", "Operating Hour ID", "reference", "tns:ID", 18, + false, true, false, false, false, false, false); fields1.add(sObjectField59); - final SObjectField sObjectField60 = createField("SLA__c", "SLA", "picklist", "xsd:string", 255, false, true, false, - false, true, false, false); + final SObjectField sObjectField60 = createField("CustomerPriority__c", "Customer Priority", "picklist", "xsd:string", + 255, false, true, false, false, true, false, false); fields1.add(sObjectField60); - final SObjectField sObjectField61 = createField("Active__c", "Active", "picklist", "xsd:string", 255, false, true, - false, false, true, false, false); + final SObjectField sObjectField61 = createField("SLA__c", "SLA", "picklist", "xsd:string", 255, false, true, false, + false, true, false, false); fields1.add(sObjectField61); - final SObjectField sObjectField62 = createField("NumberofLocations__c", "Number of Locations", "double", "xsd:double", - 0, false, true, false, false, true, false, false); + final SObjectField sObjectField62 = createField("Active__c", "Active", "picklist", "xsd:string", 255, false, true, + false, false, true, false, false); fields1.add(sObjectField62); - final SObjectField sObjectField63 = createField("UpsellOpportunity__c", "Upsell Opportunity", "picklist", "xsd:string", - 255, false, true, false, false, true, false, false); + final SObjectField sObjectField63 = createField("NumberofLocations__c", "Number of Locations", "double", "xsd:double", + 0, false, true, false, false, true, false, false); fields1.add(sObjectField63); - final SObjectField sObjectField64 = createField("SLASerialNumber__c", "SLA Serial Number", "string", "xsd:string", 10, - false, true, false, false, true, false, false); + final SObjectField sObjectField64 = createField("UpsellOpportunity__c", "Upsell Opportunity", "picklist", "xsd:string", + 255, false, true, false, false, true, false, false); fields1.add(sObjectField64); - final SObjectField sObjectField65 = createField("SLAExpirationDate__c", "SLA Expiration Date", "date", "xsd:date", 0, + final SObjectField sObjectField65 = createField("SLASerialNumber__c", "SLA Serial Number", "string", "xsd:string", 10, false, true, false, false, true, false, false); fields1.add(sObjectField65); - final SObjectField sObjectField66 = createField("MyMultiselect__c", "MyMultiselect", "multipicklist", "xsd:string", - 4099, false, true, false, false, true, false, false); + final SObjectField sObjectField66 = createField("SLAExpirationDate__c", "SLA Expiration Date", "date", "xsd:date", 0, + false, true, false, false, true, false, false); fields1.add(sObjectField66); description.setLabel("Account"); @@ -966,7 +958,6 @@ public class Account extends AbstractDescribedSObjectBase { final SObjectDescriptionUrls sObjectDescriptionUrls1 = new SObjectDescriptionUrls(); sObjectDescriptionUrls1.setApprovalLayouts("/services/data/v50.0/sobjects/Account/describe/approvalLayouts"); sObjectDescriptionUrls1.setCompactLayouts("/services/data/v50.0/sobjects/Account/describe/compactLayouts"); - sObjectDescriptionUrls1.setDefaultValues("/services/data/v50.0/sobjects/Account/defaultValues?recordTypeId&fields"); sObjectDescriptionUrls1.setDescribe("/services/data/v50.0/sobjects/Account/describe"); sObjectDescriptionUrls1.setLayouts("/services/data/v50.0/sobjects/Account/describe/layouts"); sObjectDescriptionUrls1.setListviews("/services/data/v50.0/sobjects/Account/listviews"); diff --git a/integration-tests/salesforce/src/main/java/org/apache/camel/quarkus/component/salesforce/model/GlobalObjectsAndHeaders.java b/integration-tests/salesforce/src/main/java/org/apache/camel/quarkus/component/salesforce/model/GlobalObjectsAndHeaders.java new file mode 100644 index 0000000..0c6d86b --- /dev/null +++ b/integration-tests/salesforce/src/main/java/org/apache/camel/quarkus/component/salesforce/model/GlobalObjectsAndHeaders.java @@ -0,0 +1,62 @@ +/* + * 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. + */ +package org.apache.camel.quarkus.component.salesforce.model; + +import java.util.HashMap; +import java.util.Map; + +import org.apache.camel.component.salesforce.api.dto.GlobalObjects; + +public class GlobalObjectsAndHeaders { + private GlobalObjects globalObjects; + private Map<String, String> headers; + + public GlobalObjectsAndHeaders() { + } + + public GlobalObjectsAndHeaders(GlobalObjects globalObjects) { + this.globalObjects = globalObjects; + } + + public GlobalObjects getGlobalObjects() { + return globalObjects; + } + + public void setGlobalObjects(GlobalObjects globalObjects) { + this.globalObjects = globalObjects; + } + + public GlobalObjectsAndHeaders withHeader(String key, String value) { + if (headers == null) { + headers = new HashMap<>(); + } + headers.put(key, value); + return this; + } + + public Map<String, String> getHeaders() { + return headers; + } + + public void setHeaders(Map<String, String> headers) { + this.headers = headers; + } + + public String getHeader(String key) { + return headers != null ? headers.get(key) : null; + } +} diff --git a/integration-tests/salesforce/src/test/java/org/apache/camel/quarkus/component/salesforce/SalesforceIntegrationIT.java b/integration-tests/salesforce/src/test/java/org/apache/camel/quarkus/component/salesforce/SalesforceIntegrationIT.java index afecad8..650a832 100644 --- a/integration-tests/salesforce/src/test/java/org/apache/camel/quarkus/component/salesforce/SalesforceIntegrationIT.java +++ b/integration-tests/salesforce/src/test/java/org/apache/camel/quarkus/component/salesforce/SalesforceIntegrationIT.java @@ -16,11 +16,13 @@ */ package org.apache.camel.quarkus.component.salesforce; +import io.quarkus.test.junit.NativeImageTest; import org.junit.jupiter.api.condition.EnabledIfEnvironmentVariable; @EnabledIfEnvironmentVariable(named = "SALESFORCE_USERNAME", matches = ".+") @EnabledIfEnvironmentVariable(named = "SALESFORCE_PASSWORD", matches = ".+") @EnabledIfEnvironmentVariable(named = "SALESFORCE_CLIENTID", matches = ".+") @EnabledIfEnvironmentVariable(named = "SALESFORCE_CLIENTSECRET", matches = ".+") +@NativeImageTest public class SalesforceIntegrationIT extends SalesforceIntegrationTest { } diff --git a/integration-tests/salesforce/src/test/java/org/apache/camel/quarkus/component/salesforce/SalesforceTest.java b/integration-tests/salesforce/src/test/java/org/apache/camel/quarkus/component/salesforce/SalesforceTest.java index 4acd09f..f545ec2 100644 --- a/integration-tests/salesforce/src/test/java/org/apache/camel/quarkus/component/salesforce/SalesforceTest.java +++ b/integration-tests/salesforce/src/test/java/org/apache/camel/quarkus/component/salesforce/SalesforceTest.java @@ -16,16 +16,27 @@ */ package org.apache.camel.quarkus.component.salesforce; +import java.util.List; +import java.util.Map; +import java.util.UUID; + import io.quarkus.test.common.QuarkusTestResource; import io.quarkus.test.junit.QuarkusTest; import io.restassured.RestAssured; import io.restassured.path.json.JsonPath; +import org.apache.camel.component.salesforce.api.dto.RecentItem; +import org.apache.camel.component.salesforce.api.dto.RestResources; +import org.apache.camel.component.salesforce.api.dto.SObjectBasicInfo; +import org.apache.camel.component.salesforce.api.dto.SObjectDescription; +import org.apache.camel.component.salesforce.api.dto.Versions; +import org.apache.camel.quarkus.component.salesforce.model.GlobalObjectsAndHeaders; import org.junit.jupiter.api.Test; import static org.hamcrest.Matchers.emptyString; import static org.hamcrest.Matchers.is; import static org.hamcrest.core.IsNot.not; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertTrue; @@ -52,6 +63,16 @@ class SalesforceTest { } @Test + public void testGetAccountByQueryHelper() { + RestAssured.get("/salesforce/account/query") + .then() + .statusCode(200) + .body( + "Id", not(emptyString()), + "AccountNumber", not(emptyString())); + } + + @Test public void testBulkJobApi() { // Create bulk job JsonPath jobInfo = RestAssured.given() @@ -81,4 +102,119 @@ class SalesforceTest { state = jobInfo.getString("state"); assertEquals("ABORTED", state); } + + @Test + void testGlobalObjectsWithHeaders() { + GlobalObjectsAndHeaders globalObjectsAndHeaders = RestAssured.given() + .get("/salesforce/sobjects/force-limit") + .then() + .statusCode(200) + .extract() + .body() + .as(GlobalObjectsAndHeaders.class); + + assertNotNull(globalObjectsAndHeaders); + assertNotNull(globalObjectsAndHeaders.getGlobalObjects()); + assertTrue(globalObjectsAndHeaders.getHeader("Sforce-Limit-Info").contains("api-usage=")); + } + + @Test + void testGetVersions() { + List<Versions> versions = RestAssured.given() + .get("/salesforce/versions") + .then() + .statusCode(200) + .extract() + .body() + .as(List.class); + assertNotNull(versions); + assertNotEquals(0, versions.size()); + } + + @Test + void testGetRestResources() { + RestResources restResources = RestAssured.given() + .get("/salesforce/resources") + .then() + .statusCode(200) + .extract() + .body() + .as(RestResources.class); + assertNotNull(restResources); + } + + @Test + void testAccountWithBasicInfo() { + // create an object of type Account + String accountName = "Camel Quarkus Account Test: " + UUID.randomUUID().toString(); + final String accountId = RestAssured.given() + .body(accountName) + .post("/salesforce/account") + .then() + .statusCode(200) + .extract() + .body() + .asString(); + + if (accountId != null) { + // get Account basic info + SObjectBasicInfo accountBasicInfo = RestAssured.given() + .get("/salesforce/basic-info/account") + .then() + .statusCode(200) + .extract() + .body() + .as(SObjectBasicInfo.class); + assertNotNull(accountBasicInfo); + List<RecentItem> recentItems = accountBasicInfo.getRecentItems(); + assertNotNull(recentItems); + // make sure the created account is referenced + assertTrue(recentItems.stream().anyMatch(recentItem -> recentItem.getAttributes().getUrl().contains(accountId))); + + // Get Account - querying Sobject by ID + RestAssured.get("/salesforce/account/" + accountId) + .then() + .statusCode(200) + .body( + "Id", not(emptyString()), + "AccountNumber", not(emptyString())); + + // delete the account + // Clean up + RestAssured.delete("/salesforce/account/" + accountId) + .then() + .statusCode(204); + } + } + + @Test + void testGetAccountDescription() { + SObjectDescription accountDescription = RestAssured.given() + .get("/salesforce/describe/account") + .then() + .statusCode(200) + .extract() + .body() + .as(SObjectDescription.class); + assertNotNull(accountDescription); + } + + @Test + void testLimits() { + final Map<String, Object> limits = RestAssured.given() + .get("/salesforce/limits") + .then() + .statusCode(200) + .extract() + .body() + .as(Map.class); + + assertNotNull(limits, "Should fetch limits from Salesforce REST API"); + assertNotNull(limits.get("concurrentAsyncGetReportInstances")); + assertNotNull(limits.get("concurrentSyncReportRuns")); + assertNotNull(limits.get("dailyApiRequests")); + assertNotNull(limits.get("dailyAsyncApexExecutions")); + assertNotNull(limits.get("dailyBulkApiRequests")); + } + } diff --git a/integration-tests/salesforce/src/test/resources/mappings/deleteAccount.json b/integration-tests/salesforce/src/test/resources/mappings/deleteAccount.json new file mode 100644 index 0000000..70aa443 --- /dev/null +++ b/integration-tests/salesforce/src/test/resources/mappings/deleteAccount.json @@ -0,0 +1,14 @@ +{ + "id": "09aa79df-8a19-41df-8655-e414d390d6ed", + "name": "salesforce_api_json", + "request": { + "url": "/services/data/v52.0/sobjects/Account/001D000000IqhSLIAZ", + "method": "DELETE" + }, + "response": { + "status": 200 + }, + "uuid": "09aa79df-8a19-41df-8655-e414d390d6ed", + "persistent": true, + "insertionIndex": 2 +} \ No newline at end of file diff --git a/integration-tests/salesforce/src/test/resources/mappings/getAccountBasicInfo.json b/integration-tests/salesforce/src/test/resources/mappings/getAccountBasicInfo.json new file mode 100644 index 0000000..0bd6d7f --- /dev/null +++ b/integration-tests/salesforce/src/test/resources/mappings/getAccountBasicInfo.json @@ -0,0 +1,18 @@ +{ + "id": "09aa79df-8a19-41df-8655-e414d390d6ed", + "name": "salesforce_api_json", + "request": { + "url": "/services/data/v50.0/sobjects/Account/", + "method": "GET" + }, + "response": { + "status": 200, + "body" : "{\"objectDescribe\":{\"name\":\"Account\",\"updateable\":true,\"label\":\"Account\",\"keyPrefix\":\"001\",\"replicateable\":true,\"retrieveable\":true,\"undeletable\":true,\"triggerable\":true},\"recentItems\":[{\"attributes\":{\"type\":\"Account\",\"url\":\"\/services\/data\/v50.0\/sobjects\/Account\/001D000000IqhSLIAZ\"},\"Id\":\"001D000000IqhSLIAZ\",\"Name\":\"asdasdasd\"}]}", + "headers": { + "Content-Type": "application/json; charset=UTF-8" + } + }, + "uuid": "09aa79df-8a19-41df-8655-e414d390d6ed", + "persistent": true, + "insertionIndex": 2 +} \ No newline at end of file diff --git a/integration-tests/salesforce/src/test/resources/mappings/getAccountById.json b/integration-tests/salesforce/src/test/resources/mappings/getAccountById.json new file mode 100644 index 0000000..91df379 --- /dev/null +++ b/integration-tests/salesforce/src/test/resources/mappings/getAccountById.json @@ -0,0 +1,18 @@ +{ + "id": "09aa79df-8a19-41df-8655-e414d390d6ed", + "name": "salesforce_api_json", + "request": { + "url": "/services/data/v50.0/sobjects/Account/Id/001D000000IqhSLIAZ", + "method": "GET" + }, + "response": { + "status": 200, + "body" : "{\"Id\":\"001D000000IqhSLIAZ\", \"AccountNumber\":\"11233\", \"attributes\": {\"type\" : \"Account\"}}", + "headers": { + "Content-Type": "application/json; charset=UTF-8" + } + }, + "uuid": "09aa79df-8a19-41df-8655-e414d390d6ed", + "persistent": true, + "insertionIndex": 2 +} \ No newline at end of file diff --git a/integration-tests/salesforce/src/test/resources/mappings/getAccountDescription.json b/integration-tests/salesforce/src/test/resources/mappings/getAccountDescription.json new file mode 100644 index 0000000..114ddf0 --- /dev/null +++ b/integration-tests/salesforce/src/test/resources/mappings/getAccountDescription.json @@ -0,0 +1,18 @@ +{ + "id": "09aa79df-8a19-41df-8655-e414d390d6ed", + "name": "salesforce_api_json", + "request": { + "url": "/services/data/v50.0/sobjects/Account/describe/", + "method": "GET" + }, + "response": { + "status": 200, + "body": "{\"name\":\"Account\",\"fields\":[{\"length\":18,\"name\":\"Id\",\"type\":\"id\",\"updateable\":false,\"label\":\"Account ID\"}],\"updateable\":true,\"label\":\"Account\",\"keyPrefix\":\"001\",\"custom\":false,\"urls\":{\"uiEditTemplate\":\"https:\/\/yourInstance.salesforce.com\/{ID}\/e\",\"sobject\":\"\/services\/data\/v50.0\/sobjects\/Account\",\"uiDetailTemplate\":\"https:\/\/yourInstance.salesforce.com\/{ID}\"},\"childRelationships\":[{\"field\":\"ParentId\",\"deprecated [...] + "headers": { + "Content-Type": "application/json; charset=UTF-8" + } + }, + "uuid": "09aa79df-8a19-41df-8655-e414d390d6ed", + "persistent": true, + "insertionIndex": 2 +} \ No newline at end of file diff --git a/integration-tests/salesforce/src/test/resources/mappings/getAccountLongQuery.json b/integration-tests/salesforce/src/test/resources/mappings/getAccountLongQuery.json new file mode 100644 index 0000000..156d64b --- /dev/null +++ b/integration-tests/salesforce/src/test/resources/mappings/getAccountLongQuery.json @@ -0,0 +1,18 @@ +{ + "id": "09aa79df-8a19-41df-8655-e414d390d6ed", + "name": "salesforce_api_json", + "request": { + "url": "/services/data/v50.0/query/?q=SELECT%20Id%2C%20IsDeleted%2C%20MasterRecordId%2C%20Name%2C%20Type%2C%20ParentId%2C%20BillingStreet%2C%20BillingCity%2C%20BillingState%2C%20BillingPostalCode%2C%20BillingCountry%2C%20BillingLatitude%2C%20BillingLongitude%2C%20BillingGeocodeAccuracy%2C%20BillingAddress%2C%20ShippingStreet%2C%20ShippingCity%2C%20ShippingState%2C%20ShippingPostalCode%2C%20ShippingCountry%2C%20ShippingLatitude%2C%20ShippingLongitude%2C%20ShippingGeocodeAccuracy%2C%20 [...] + "method": "GET" + }, + "response": { + "status": 200, + "body" : "{\"records\":[{\"Id\":\"someFakeId\", \"AccountNumber\":\"11233\", \"attributes\": {\"type\" : \"Account\"}}]}", + "headers": { + "Content-Type": "application/json; charset=UTF-8" + } + }, + "uuid": "09aa79df-8a19-41df-8655-e414d390d6ed", + "persistent": true, + "insertionIndex": 2 +} \ No newline at end of file diff --git a/integration-tests/salesforce/src/test/resources/mappings/getLimits.json b/integration-tests/salesforce/src/test/resources/mappings/getLimits.json new file mode 100644 index 0000000..6c33e5c --- /dev/null +++ b/integration-tests/salesforce/src/test/resources/mappings/getLimits.json @@ -0,0 +1,19 @@ +{ + "id": "09aa79df-8a19-41df-8655-e414d390d6ed", + "name": "salesforce_api_json", + "request": { + "url": "/services/data/v50.0/limits/", + "method": "GET" + }, + "response": { + "status": 200, + "body": "{\"ConcurrentAsyncGetReportInstances\":{\"Max\":200,\"Remaining\":200},\"ConcurrentSyncReportRuns\":{\"Max\":20,\"Remaining\":20},\"DailyApiRequests\":{\"Max\":15000,\"Remaining\":14998},\"DailyAsyncApexExecutions\":{\"Max\":250000,\"Remaining\":250000},\"DailyBulkApiBatches\":{\"Max\":15000,\"Remaining\":15000},\"DailyBulkV2QueryFileStorageMB\":{\"Max\":976562,\"Remaining\":976562},\"DailyBulkV2QueryJobs\":{\"Max\":10000,\"Remaining\":10000},\"DailyDurableGenericStreamingAp [...] + "headers": { + "Content-Type": "application/json; charset=UTF-8", + "Sforce-Limit-Info": "api-usage=18/5000" + } + }, + "uuid": "09aa79df-8a19-41df-8655-e414d390d6ed", + "persistent": true, + "insertionIndex": 2 +} \ No newline at end of file diff --git a/integration-tests/salesforce/src/test/resources/mappings/getListOfObjects.json b/integration-tests/salesforce/src/test/resources/mappings/getListOfObjects.json new file mode 100644 index 0000000..cc4e909 --- /dev/null +++ b/integration-tests/salesforce/src/test/resources/mappings/getListOfObjects.json @@ -0,0 +1,19 @@ +{ + "id": "09aa79df-8a19-41df-8655-e414d390d6ed", + "name": "salesforce_api_json", + "request": { + "url": "/services/data/v50.0/sobjects/", + "method": "GET" + }, + "response": { + "status": 200, + "body" : "{\"encoding\":\"UTF-8\",\"maxBatchSize\":200,\"sobjects\":[{\"activateable\":false,\"custom\":false,\"customSetting\":false,\"createable\":true,\"deletable\":true,\"deprecatedAndHidden\":false,\"feedEnabled\":true,\"keyPrefix\":\"001\",\"label\":\"Account\",\"labelPlural\":\"Accounts\",\"layoutable\":true,\"mergeable\":true,\"mruEnabled\":true,\"name\":\"Account\",\"queryable\":true,\"replicateable\":true,\"retrieveable\":true,\"searchable\":true,\"triggerable\":true,\"unde [...] + "headers": { + "Content-Type": "application/json; charset=UTF-8", + "Sforce-Limit-Info": "api-usage=18/5000" + } + }, + "uuid": "09aa79df-8a19-41df-8655-e414d390d6ed", + "persistent": true, + "insertionIndex": 2 +} \ No newline at end of file diff --git a/integration-tests/salesforce/src/test/resources/mappings/getRestResources.json b/integration-tests/salesforce/src/test/resources/mappings/getRestResources.json new file mode 100644 index 0000000..b023116 --- /dev/null +++ b/integration-tests/salesforce/src/test/resources/mappings/getRestResources.json @@ -0,0 +1,19 @@ +{ + "id": "09aa79df-8a19-41df-8655-e414d390d6ed", + "name": "salesforce_api_json", + "request": { + "url": "/services/data/v50.0/", + "method": "GET" + }, + "response": { + "status": 200, + "body": "{\"sobjects\":\"\/services\/data\/v50.0\/sobjects\",\"licensing\":\"\/services\/data\/v50.0\/licensing\",\"connect\":\"\/services\/data\/v50.0\/connect\",\"search\":\"\/services\/data\/v50.0\/search\",\"query\":\"\/services\/data\/v50.0\/query\",\"tooling\":\"\/services\/data\/v50.0\/tooling\",\"chatter\":\"\/services\/data\/v50.0\/chatter\",\"recent\":\"\/services\/data\/v50.0\/recent\"}", + "headers": { + "Content-Type": "application/json; charset=UTF-8", + "Sforce-Limit-Info": "api-usage=18/5000" + } + }, + "uuid": "09aa79df-8a19-41df-8655-e414d390d6ed", + "persistent": true, + "insertionIndex": 2 +} \ No newline at end of file diff --git a/integration-tests/salesforce/src/test/resources/mappings/getVersions.json b/integration-tests/salesforce/src/test/resources/mappings/getVersions.json new file mode 100644 index 0000000..31b95d2 --- /dev/null +++ b/integration-tests/salesforce/src/test/resources/mappings/getVersions.json @@ -0,0 +1,19 @@ +{ + "id": "09aa79df-8a19-41df-8655-e414d390d6ed", + "name": "salesforce_api_json", + "request": { + "url": "/services/data/", + "method": "GET" + }, + "response": { + "status": 200, + "body": "[{\"label\":\"Spring '11\",\"url\":\"\/services\/data\/v21.0\",\"version\":\"21.0\"},{\"label\":\"Summer '11\",\"url\":\"\/services\/data\/v22.0\",\"version\":\"22.0\"},{\"label\":\"Winter '12\",\"url\":\"\/services\/data\/v23.0\",\"version\":\"23.0\"}]", + "headers": { + "Content-Type": "application/json; charset=UTF-8", + "Sforce-Limit-Info": "api-usage=18/5000" + } + }, + "uuid": "09aa79df-8a19-41df-8655-e414d390d6ed", + "persistent": true, + "insertionIndex": 2 +} \ No newline at end of file diff --git a/integration-tests/salesforce/src/test/resources/mappings/setAccount.json b/integration-tests/salesforce/src/test/resources/mappings/setAccount.json new file mode 100644 index 0000000..a52281f --- /dev/null +++ b/integration-tests/salesforce/src/test/resources/mappings/setAccount.json @@ -0,0 +1,18 @@ +{ + "id": "09aa79df-8a19-41df-8655-e414d390d6ed", + "name": "salesforce_api_json", + "request": { + "url": "/services/data/v50.0/sobjects/Account", + "method": "POST" + }, + "response": { + "status": 200, + "body" : "{\"id\":\"001D000000IqhSLIAZ\",\"errors\":[],\"success\":true}", + "headers": { + "Content-Type": "application/json; charset=UTF-8" + } + }, + "uuid": "09aa79df-8a19-41df-8655-e414d390d6ed", + "persistent": true, + "insertionIndex": 2 +} \ No newline at end of file