You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ja...@apache.org on 2021/11/12 14:19:55 UTC
[camel-quarkus] branch main updated: Avoid using Camel Salesforce
DTO types as the return type or method parameters in integration tests
This is an automated email from the ASF dual-hosted git repository.
jamesnetherton pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git
The following commit(s) were added to refs/heads/main by this push:
new 47f9ac6 Avoid using Camel Salesforce DTO types as the return type or method parameters in integration tests
47f9ac6 is described below
commit 47f9ac630bf79ecace8a4ac6699f7b1900e33686
Author: James Netherton <ja...@gmail.com>
AuthorDate: Fri Nov 12 08:39:08 2021 +0000
Avoid using Camel Salesforce DTO types as the return type or method parameters in integration tests
Fixes #3259
---
.../salesforce/deployment/SalesforceProcessor.java | 32 ++--
.../component/salesforce/SalesforceResource.java | 137 +++++++++-----
.../component/salesforce/SalesforceTest.java | 196 +++++++++++++--------
.../src/test/resources/mappings/getAccount.json | 2 +-
4 files changed, 225 insertions(+), 142 deletions(-)
diff --git a/extensions/salesforce/deployment/src/main/java/org/apache/camel/quarkus/component/salesforce/deployment/SalesforceProcessor.java b/extensions/salesforce/deployment/src/main/java/org/apache/camel/quarkus/component/salesforce/deployment/SalesforceProcessor.java
index 414f190..361d68d 100644
--- a/extensions/salesforce/deployment/src/main/java/org/apache/camel/quarkus/component/salesforce/deployment/SalesforceProcessor.java
+++ b/extensions/salesforce/deployment/src/main/java/org/apache/camel/quarkus/component/salesforce/deployment/SalesforceProcessor.java
@@ -23,13 +23,13 @@ import io.quarkus.deployment.builditem.ExtensionSslNativeSupportBuildItem;
import io.quarkus.deployment.builditem.FeatureBuildItem;
import io.quarkus.deployment.builditem.nativeimage.ReflectiveClassBuildItem;
import org.apache.camel.component.salesforce.api.dto.AbstractDTOBase;
-import org.apache.camel.component.salesforce.api.dto.PlatformEvent;
-import org.apache.camel.component.salesforce.internal.dto.PushTopic;
import org.jboss.jandex.DotName;
import org.jboss.jandex.IndexView;
class SalesforceProcessor {
+ private static final String SALESFORCE_DTO_PACKAGE = "org.apache.camel.component.salesforce.api.dto";
+ private static final String SALESFORCE_INTERNAL_DTO_PACKAGE = "org.apache.camel.component.salesforce.internal.dto";
private static final String FEATURE = "camel-salesforce";
@BuildStep
@@ -46,29 +46,27 @@ class SalesforceProcessor {
void registerForReflection(CombinedIndexBuildItem combinedIndex, BuildProducer<ReflectiveClassBuildItem> reflectiveClass) {
IndexView index = combinedIndex.getIndex();
- // Register everything extending AbstractDTOBase for reflection
- DotName dtoBaseName = DotName.createSimple(AbstractDTOBase.class.getName());
- String[] dtoClasses = index.getAllKnownSubclasses(dtoBaseName)
+ // NOTE: DTO classes are registered for reflection with fields and methods due to:
+ // https://issues.apache.org/jira/browse/CAMEL-16860
+
+ // Register Camel Salesforce DTO classes for reflection
+ String[] camelSalesforceDtoClasses = index.getKnownClasses()
.stream()
.map(classInfo -> classInfo.name().toString())
+ .filter(className -> className.startsWith(SALESFORCE_DTO_PACKAGE)
+ || className.startsWith(SALESFORCE_INTERNAL_DTO_PACKAGE))
.toArray(String[]::new);
- reflectiveClass.produce(new ReflectiveClassBuildItem(true, false, dtoClasses));
+ reflectiveClass.produce(new ReflectiveClassBuildItem(true, true, camelSalesforceDtoClasses));
- // Register internal DTO classes for reflection
- String[] internalDtoClasses = index.getKnownClasses()
+ // Register user generated DTOs for reflection
+ DotName dtoBaseName = DotName.createSimple(AbstractDTOBase.class.getName());
+ String[] userDtoClasses = index.getAllKnownSubclasses(dtoBaseName)
.stream()
.map(classInfo -> classInfo.name().toString())
- .filter(className -> className.startsWith("org.apache.camel.component.salesforce.internal.dto"))
- // it is registred below with fields accessible
- .filter(className -> className != PushTopic.class.getName())
+ .filter(className -> !className.startsWith("org.apache.camel.component.salesforce"))
.toArray(String[]::new);
- reflectiveClass.produce(new ReflectiveClassBuildItem(true, false, internalDtoClasses));
-
- // enabling the search for private fields : related to issue https://issues.apache.org/jira/browse/CAMEL-16860
- reflectiveClass.produce(new ReflectiveClassBuildItem(true, true, PushTopic.class));
- // enabling custom fields : related to issue https://github.com/apache/camel-quarkus/issues/3067
- reflectiveClass.produce(new ReflectiveClassBuildItem(true, true, PlatformEvent.class));
+ reflectiveClass.produce(new ReflectiveClassBuildItem(true, true, userDtoClasses));
}
}
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 1a55d67..cba2462 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
@@ -17,12 +17,16 @@
package org.apache.camel.quarkus.component.salesforce;
import java.util.Collections;
+import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
+import java.util.UUID;
+import java.util.stream.Collectors;
import javax.inject.Inject;
import javax.json.Json;
+import javax.json.JsonArrayBuilder;
import javax.json.JsonObject;
import javax.json.JsonObjectBuilder;
import javax.ws.rs.Consumes;
@@ -41,9 +45,11 @@ 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.Attributes;
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.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;
@@ -82,28 +88,18 @@ public class SalesforceResource {
.request(String.class);
}
- @Path("/account")
+ @Path("/account/query/{id}")
@GET
@Produces(MediaType.APPLICATION_JSON)
- public Account getAccount() {
+ public JsonObject getAccountByQueryRecords(@PathParam("id") String accountId) {
+ String query = QueryHelper.queryToFetchFilteredFieldsOf(new Account(),
+ sObjectField -> sObjectField.getName().equals("Id") || sObjectField.getName().equals("AccountNumber"));
QueryRecordsAccount request = template
- .toF("salesforce:query?sObjectQuery=SELECT Id,AccountNumber from Account LIMIT 1&sObjectClass=%s",
+ .toF("salesforce:query?sObjectQuery=%s&sObjectClass=%s",
+ query + " WHERE Id = '" + accountId + "'",
QueryRecordsAccount.class.getName())
.request(QueryRecordsAccount.class);
- 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);
+ return accountToJsonObject(request.getRecords().get(0));
}
@Path("/account")
@@ -113,6 +109,7 @@ public class SalesforceResource {
public String createAccount(String accountName) {
final Account account = new Account();
account.setName(accountName);
+ account.setAccountNumber(UUID.randomUUID().toString());
CreateSObjectResult result = template.to("salesforce:createSObject?sObjectName=Account")
.withBody(account)
@@ -137,12 +134,12 @@ public class SalesforceResource {
@Path("/account/{id}")
@GET
@Produces(MediaType.APPLICATION_JSON)
- public Account getAccountById(@PathParam("id") String accountId) {
+ public JsonObject 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;
+ return accountToJsonObject(account);
}
@Path("/bulk")
@@ -184,71 +181,71 @@ public class SalesforceResource {
@Path("/cdc")
@GET
@Produces(MediaType.APPLICATION_JSON)
+ @SuppressWarnings("unchecked")
public Map<String, Object> getCdcEvents() {
- Map map = consumerTemplate.receiveBody("seda:events", 10000, Map.class);
- return map;
- }
-
- private JobInfo createJobInfo() {
- JobInfo jobInfo = new JobInfo();
- jobInfo.setObject(Account.class.getSimpleName());
- jobInfo.setContentType(ContentType.CSV);
- return jobInfo;
- }
-
- private JsonObject jobInfoToJsonObject(JobInfo jobInfo) {
- JsonObjectBuilder objectBuilder = Json.createObjectBuilder();
- objectBuilder.add("id", jobInfo.getId());
- objectBuilder.add("state", jobInfo.getState().value().toUpperCase(Locale.US));
- return objectBuilder.build();
+ return consumerTemplate.receiveBody("seda:events", 10000, Map.class);
}
@Path("sobjects/force-limit")
@GET
@Produces(MediaType.APPLICATION_JSON)
- public GlobalObjectsAndHeaders getSObjectsWithForceLimitInfo() {
+ public String 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;
+ return objectsAndHeaders.getHeader("Sforce-Limit-Info");
}
@Path("versions")
@GET
@Produces(MediaType.APPLICATION_JSON)
- public List<Version> getListVersions() {
- return template.to("salesforce:getVersions").request(List.class);
+ @SuppressWarnings("unchecked")
+ public List<String> getListVersions() {
+ List<Version> versions = template.to("salesforce:getVersions").request(List.class);
+ return versions.stream()
+ .map(Version::getVersion)
+ .collect(Collectors.toList());
}
@Path("resources")
@GET
@Produces(MediaType.APPLICATION_JSON)
- public RestResources getListResources() {
- return template.to("salesforce:getResources").request(RestResources.class);
+ public String getListResources() {
+ RestResources restResources = template.to("salesforce:getResources").request(RestResources.class);
+ return restResources.getSobjects();
}
@Path("basic-info/account")
@GET
- public SObjectBasicInfo getAccountBasicInfo() {
- return template.to("salesforce:getBasicInfo?sObjectName=Account")
- .request(SObjectBasicInfo.class);
+ public JsonObject getAccountBasicInfo() {
+ SObjectBasicInfo basicInfo = template.to("salesforce:getBasicInfo?sObjectName=Account").request(SObjectBasicInfo.class);
+ return basicInfoToJsonObject(basicInfo);
}
@Path("describe/account")
@GET
- public SObjectDescription getAccountDescription() {
- return template.to("salesforce:getDescription?sObjectName=Account")
+ public String getAccountDescription() {
+ SObjectDescription sObjectDescription = template.to("salesforce:getDescription?sObjectName=Account")
.request(SObjectDescription.class);
+ return sObjectDescription.getName();
}
@Path("limits")
@GET
@Produces(MediaType.APPLICATION_JSON)
- public Limits getLimits() {
- return template.to("salesforce:limits").request(Limits.class);
+ public Map<String, Integer> getLimits() {
+ Limits limits = template.to("salesforce:limits").request(Limits.class);
+
+ Map<String, Integer> limitInfo = new HashMap<>();
+ for (Limits.Operation operation : Limits.Operation.values()) {
+ Limits.Usage usage = limits.forOperation(operation.name());
+ limitInfo.put(operation.name(), usage.getRemaining());
+ }
+
+ return limitInfo;
}
@Path("streaming")
@@ -296,4 +293,48 @@ public class SalesforceResource {
public String getPlatformEvent() {
return consumerTemplate.receiveBody("salesforce:event/TestEvent__e?rawPayload=true", 10000, String.class);
}
+
+ private JsonObject accountToJsonObject(Account account) {
+ JsonObjectBuilder builder = Json.createObjectBuilder();
+ builder.add("Id", account.getId());
+ builder.add("AccountNumber", account.getAccountNumber());
+ return builder.build();
+ }
+
+ private JobInfo createJobInfo() {
+ JobInfo jobInfo = new JobInfo();
+ jobInfo.setObject(Account.class.getSimpleName());
+ jobInfo.setContentType(ContentType.CSV);
+ return jobInfo;
+ }
+
+ private JsonObject jobInfoToJsonObject(JobInfo jobInfo) {
+ JsonObjectBuilder objectBuilder = Json.createObjectBuilder();
+ objectBuilder.add("id", jobInfo.getId());
+ objectBuilder.add("state", jobInfo.getState().value().toUpperCase(Locale.US));
+ return objectBuilder.build();
+ }
+
+ private JsonObject basicInfoToJsonObject(SObjectBasicInfo basicInfo) {
+ JsonObjectBuilder builder = Json.createObjectBuilder();
+
+ List<RecentItem> recentItems = basicInfo.getRecentItems();
+ JsonArrayBuilder recentItemsArrayBuilder = Json.createArrayBuilder();
+ for (RecentItem recentItem : recentItems) {
+ JsonObjectBuilder recentItemBuilder = Json.createObjectBuilder();
+ recentItemBuilder.add("Id", recentItem.getId());
+ recentItemBuilder.add("Name", recentItem.getName());
+
+ Attributes attributes = recentItem.getAttributes();
+ JsonObjectBuilder attributesObjectBuilder = Json.createObjectBuilder();
+ attributesObjectBuilder.add("url", attributes.getUrl());
+ recentItemBuilder.add("attributes", attributesObjectBuilder);
+
+ recentItemsArrayBuilder.add(recentItemBuilder);
+ }
+
+ builder.add("recentItems", recentItemsArrayBuilder);
+
+ return builder.build();
+ }
}
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 3cdf182..d991c41 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
@@ -25,15 +25,15 @@ 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.containsString;
import static org.hamcrest.Matchers.emptyString;
import static org.hamcrest.Matchers.is;
+import static org.hamcrest.Matchers.matchesPattern;
+import static org.hamcrest.Matchers.notNullValue;
import static org.hamcrest.core.IsNot.not;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotEquals;
@@ -54,22 +54,62 @@ class SalesforceTest {
@Test
public void testGetAccountDTO() {
- RestAssured.get("/salesforce/account")
- .then()
- .statusCode(200)
- .body(
- "Id", not(emptyString()),
- "AccountNumber", not(emptyString()));
+ String accountId = null;
+ String accountName = "Camel Quarkus Account Test: " + UUID.randomUUID();
+
+ try {
+ accountId = RestAssured.given()
+ .body(accountName)
+ .post("/salesforce/account")
+ .then()
+ .statusCode(200)
+ .extract()
+ .body()
+ .asString();
+
+ RestAssured.get("/salesforce/account/" + accountId)
+ .then()
+ .statusCode(200)
+ .body(
+ "Id", is(accountId),
+ "AccountNumber", not(emptyString()));
+ } finally {
+ if (accountId != null) {
+ RestAssured.delete("/salesforce/account/" + accountId)
+ .then()
+ .statusCode(204);
+ }
+ }
}
@Test
- public void testGetAccountByQueryHelper() {
- RestAssured.get("/salesforce/account/query")
- .then()
- .statusCode(200)
- .body(
- "Id", not(emptyString()),
- "AccountNumber", not(emptyString()));
+ public void testGetAccountByQueryRecords() {
+ String accountId = null;
+ String accountName = "Camel Quarkus Account Test: " + UUID.randomUUID();
+
+ try {
+ accountId = RestAssured.given()
+ .body(accountName)
+ .post("/salesforce/account")
+ .then()
+ .statusCode(200)
+ .extract()
+ .body()
+ .asString();
+
+ RestAssured.get("/salesforce/account/query/" + accountId)
+ .then()
+ .statusCode(200)
+ .body(
+ "Id", not(emptyString()),
+ "AccountNumber", not(emptyString()));
+ } finally {
+ if (accountId != null) {
+ RestAssured.delete("/salesforce/account/" + accountId)
+ .then()
+ .statusCode(204);
+ }
+ }
}
@Test
@@ -105,20 +145,15 @@ class SalesforceTest {
@Test
void testGlobalObjectsWithHeaders() {
- GlobalObjectsAndHeaders globalObjectsAndHeaders = RestAssured.given()
+ 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="));
+ .body(containsString("api-usage="));
}
@Test
+ @SuppressWarnings("unchecked")
void testGetVersions() {
List<Versions> versions = RestAssured.given()
.get("/salesforce/versions")
@@ -133,73 +168,82 @@ class SalesforceTest {
@Test
void testGetRestResources() {
- RestResources restResources = RestAssured.given()
+ RestAssured.given()
.get("/salesforce/resources")
.then()
.statusCode(200)
- .extract()
- .body()
- .as(RestResources.class);
- assertNotNull(restResources);
+ .body(matchesPattern("/services/data/.*/sobjects"));
}
@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();
+ String accountId = null;
+ String accountName = "Camel Quarkus Account Test: " + UUID.randomUUID();
- // 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()));
+ try {
+ // create an object of type Account
+ accountId = RestAssured.given()
+ .body(accountName)
+ .post("/salesforce/account")
+ .then()
+ .statusCode(200)
+ .extract()
+ .body()
+ .asString();
- // delete the account
- // Clean up
- RestAssured.delete("/salesforce/account/" + accountId)
- .then()
- .statusCode(204);
+ // 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
+ boolean accountIdMatched = false;
+ for (RecentItem recentItem : recentItems) {
+ if (recentItem.getAttributes().getUrl().contains(accountId)) {
+ accountIdMatched = true;
+ break;
+ }
+ }
+ assertTrue(accountIdMatched);
+
+ // Get Account - querying Sobject by ID
+ RestAssured.get("/salesforce/account/" + accountId)
+ .then()
+ .statusCode(200)
+ .body(
+ "Id", not(emptyString()),
+ "AccountNumber", not(emptyString()));
+ } finally {
+ if (accountId != null) {
+ // delete the account
+ // Clean up
+ RestAssured.delete("/salesforce/account/" + accountId)
+ .then()
+ .statusCode(204);
+ }
+ }
}
@Test
void testGetAccountDescription() {
- SObjectDescription accountDescription = RestAssured.given()
+ RestAssured.given()
.get("/salesforce/describe/account")
.then()
.statusCode(200)
- .extract()
- .body()
- .as(SObjectDescription.class);
- assertNotNull(accountDescription);
+ .body(notNullValue());
}
@Test
+ @SuppressWarnings("unchecked")
void testLimits() {
- final Map<String, Object> limits = RestAssured.given()
+ final Map<String, Integer> limits = RestAssured.given()
.get("/salesforce/limits")
.then()
.statusCode(200)
@@ -208,11 +252,11 @@ class SalesforceTest {
.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"));
+ 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/getAccount.json b/integration-tests/salesforce/src/test/resources/mappings/getAccount.json
index a2c85fa..ca2f724 100644
--- a/integration-tests/salesforce/src/test/resources/mappings/getAccount.json
+++ b/integration-tests/salesforce/src/test/resources/mappings/getAccount.json
@@ -2,7 +2,7 @@
"id": "09aa79df-8a19-41df-8655-e414d390d6ed",
"name": "salesforce_api_json",
"request": {
- "url": "/services/data/v50.0/query/?q=SELECT%20Id%2CAccountNumber%20from%20Account%20LIMIT%201",
+ "url": "/services/data/v50.0/query/?q=SELECT%20Id%2C%20AccountNumber%20FROM%20Account%20WHERE%20Id%20%3D%20%27001D000000IqhSLIAZ%27",
"method": "GET"
},
"response": {